학생 관리 프로그램: 관리자로서 수강생, 과목, 점수 등의 정보를 생성, 조회, 수정, 삭제
Github: https://github.com/wooseok50/SpartaCampManagementApp
GitHub - wooseok50/SpartaCampManagementApp: 팀 프로젝트 1. 수강생 관리 프로젝트
팀 프로젝트 1. 수강생 관리 프로젝트. Contribute to wooseok50/SpartaCampManagementApp development by creating an account on GitHub.
github.com
주요 기능
- 수강생 관리
- 수강생 정보 등록 (고유 번호, 이름)
- 수강생 목록 조회
- 점수 관리
- 수강생의 과목별 시험 회차 및 점수를 등록 (1~10회, 1~100점)
- 과목별 회차 점수 수정
- 특정 과목 회차별 등급 조회
- 과목 관리
- 필수 과목(3과목 이상)
- 선택 과목(2과목 이상)
프로젝트 과정
파트 분배
팀 회의를 통해 학생, 점수, 과목의 세 가지 정보를 가진 클래스가 필요하다는 의견으로 파트를 분배했다. 각 클래스는 최소한의 정보만 가지게 하고, Data 클래스를 만들어 이 정보를 활용하는 메서드와 데이터 정보를 담는 클래스를 생성하고자 했다. 이렇게 구성함으로 main 클래스에서는 사용자에게 꼭 필요한 내용만 보여 주며, 복잡한 내부 로직은 사용자에게 공개하지 않도록 구현하는 것이 1차 회의 내용이었다. 내 파트는 Score클래스와 ScoreData클래스를 만들고, ScoreData클래스에서 Scoer 객체를 활용한 메서드를 만들어 main 클래스에서 호출할 수 있도록 프로그래밍하는 것이다.
진행사항
Score 클래스에 점수의 고유번호, 시험 회차에 대한 정보, 점수를 반환하는 메서드를 작성했다. 그리고 ScoreData 클래스에 점수 및 회차 등록, 추가, 조회 기능을 만들어 main에서 호출할 수 있도록 만들었다. 두 가지 작업을 하는데 있어서 어려움은 없었지만 학생의 고유 정보를 받아서 점수를 관리해야 했기에 정보를 저장하는 형태의 구조가 필요했다.
문제점
학생 객체마다 점수 정보를 주어야하기 때문에 학생의 객체에 정보를 어떻게 넘겨줄 것인가에 대한 로직이 필요했다. 학생의 이름과 고유 ID, 과목 정보(필수인지 선택인지) 이 모든 정보를 입력받은 후에 Score 정보를 저장해야 하기에 다시 팀 회의를 진행했다. 회의 내용으로 Map을 사용하여 학생의 고유 UID를 받아서 처리하자는 해결방법을 도출했다.
해결 방법
Map<String, Score> scoreStore = new HashMap<>(); 이처럼 학생의 고유번호를 Key로 받아 Score의 데이터를 관리하는 저장소인 scoreStore를 만들었다. 따라서 학생의 객체가 생성될 때 마다 그 학생에 대한 점수 정보를 관리할 수 있게 되었다.
이 방법을 알기 전까지 나는 Map을 key, value 형태로 저장, 조회, 삭제 등 간단한 기능만 구현해 보았는데 이번 프로젝트를 통해서 Map의 value에 클래스를 넣어 사용하는 경험은 자료구조 공부에 많은 도움이 되었고, 앞으로 진행할 프로젝트에서도 앞선 문제점이 발생할 때 활용할 수 있을 거 같다.
잘한 점
충돌을 줄이기 위해서 작업 영역 나누기
main branch명은 dev로 하였고, 개인이 작성한 branch명은 feat/~~로 규칙을 정했다.
- 각자 프로그래밍한 내용을 branch로 만들어 git에 올린다.
- PR을 요청하여 코드 리뷰를 받고 수정 한다.
- 로컬에 가져와 내 코드와 merge 후 수정을 통해 에러가 없는 상태에서 다시 PR
- dev branch에 merge
Commit Message와 Gitmoji
Git을 사용하기에 서로 작성된 코드와 수정된 내용을 쉽게 파악하기 위해서 Commit Message와 Gitmoji를 사용하였다.
예를 들면 ✨Feat: "점수 등록 기능 개발"처럼 commit type과 이모지를 통해 어떤 기능을 개발했는지, 수정했는지 등을 상대방이 이해하기 쉽도록 작업하였다.
Gitmoji에 대한 내용은 팀원 한 분이 앞으로 협업하면서 사용하면 좋을 거 같다며 관련된 블로그 링크를 알려주셔서 도입된 방식이다. 블로그 주소: https://velog.io/@20bridge/Git-Commit-Message-Convention-Gitmoji
팀원들과의 회의를 통해 문제를 해결한 점
자바 언어를 배운 지 얼마 되지 않아 클래스에 대한 이해가 아직 어려웠다. 의문이나 문제점은 팀 회의를 통해 해결했다.
좋은 팀원들을 만난 덕분에 평소에 몰랐던 것을 새로 배우고, 그들의 코딩능력을 배웠고, 부족했던 클래스에 대한 이해를 할 수 있었다.
회고
약 4일 정도의 기간으로 Git을 사용하여 첫 팀 프로젝트를 수행했다. 대학교에서 진행한 팀 프로젝트는 함께 모여서 대면으로 의견을 나누고, 서로 작성한 코드는 sns나 이메일을 통해 복사, 붙여 넣기로만 작성을 했었는데 이번 프로젝트를 통해 git을 직접 사용하면서 배웠기 때문에 내게 정말 도움 되는 경험이었다.
그리고 팀 프로젝트를 통해 좋은 팀원들을 만날 수 있었다. 나는 클래스에 대한 이해가 조금 부족했는데 팀장의 라이브 코딩과 설명을 통해 클래스를 다시 이해할 수 있었다. 또한 팀원의 간단하게 설계된 코드를 보고 나도 이런 식으로 수정할 수 있겠구나, 이런 처리를 하면 효율적이겠구나를 배울 수 있었다. 정말 배운 점이 많은 프로젝트 었다.
난이도가 높은 프로젝트가 아니었기에 프로젝트를 진행하면서 정말 큰 문제는 없었다. 문제라고 한다면 앞서 말한 정보를 받는 로직과 사용하는 메서드 명을 통일하는 정도였다. 간단한 문제라도 튜터님께 물어보지 않고 팀 내에서 해결한 점은 솔직히 뿌듯하다.
Keep :
- 의문점이 생기거나 모르는 부분은 회의를 통해 고쳐나갈 수 있었다.
- git을 사용하여 첫 협업 프로젝트를 진행했는데 PR을 이용하여 코드 코멘트가 잘 이루어졌다.
- gitmoji와 커밋 로그를 도입하여 팀원들의 코드 수정사항을 파악하기 편리했다.
Problem :
- 동일한 내용의 기능이라도 각자 코드 스타일이 달라 통일성이 조금 부족했다.
- Git의 사용법이 익숙하지 않아 시간이 걸렸다.
Try :
- 코드를 공유할 때는 반드시 짧은 주석을 남기기
- 변수와 메서드명을 분명하기 정하기
- 클래스에 대한 이해와, git 사용 능력 키우기
'Project' 카테고리의 다른 글
| Project Day 3 : 프로젝트 제목 선정, 역할분담, todo (0) | 2024.03.28 |
|---|---|
| Project Day 2 : S.A 작성 (0) | 2024.03.27 |
| 팀 프로젝트 3. Trello 2일차: 댓글 생성시 card의 모든 worker 에게 알림 보내기 (0) | 2024.03.19 |
| 팀 프로젝트 3. Trello 1일차 (프로젝트 스코프 정하기) (1) | 2024.03.18 |
| 팀 프로젝트 2. OTT 추천 커뮤니티 서버 (뉴스피드) (0) | 2024.02.16 |