-
[부트캠프] NBCStudentManager 프로젝트 1일차부트캠프/프로젝트 2024. 8. 7. 20:54
프로젝트 명 NBCStudentManager
학생 정보를 관리하는 프로그램을 만드는 프로젝트로
다음의 UML 기반으로 제작했다.

[ 프로그램 UML ] 내가 맡은 역할
조회하고자 하는 학생이 듣는 과목의 특정 회차 등급을 조회하는 함수를 구현하는 것이 내가 맡은 역할이었다.
우선, 제일 먼저 해당 함수의 시나리오를 구상해봤다.
- 학생의 고유번호를 입력 받는다.
- 학생이 실존하는 학생인지 체크한다.
- 과목 번호를 입력 받는다.
- 학생이 해당 과목을 듣는지 체크한다.
- 회차를 입력 받는다.
- 학생이 해당 회차에 시험을 봤는지 체크한다.
- 출력한다.
그 다음, 아래와 내용과 같이 세부적으로 파고 들었다.
- 학생이 실존하는 학생인지 체크하기
- List에 해당 학생의 ID가 있는지 확인한다.
- 과목 번호를 입력받는다.
- List에 해당 과목ID와 일치한 객체가 있는지 확인한다.
- 그 후, 해당 Student객체에서 수강중인 과목 List에 입력받은 과목 번호가 있는지 체크한다.
- 회차를 입력 받는다.
- 회차가 1~10 사이의 숫자인지 체크한다.
- Score List에 입력받은 과목 ID, 학생 ID 정보를 담고 있는 내용이 있는지 확인하고,
해당 회차에 시험을 봤는지 확인한다.
문제점
Filter와 findFirst와 같은 메서드를 처음 써보다보니 확인하는 기능을 구현하던 중 길을 잃었다.
내가 예상한 findFirst는 매개 변수로 Ramda 함수를 넣어줄 경우 해당 내용과 일치하는 첫번째 객체를 반환할 줄 알았지만,
Stream.Filter와 연계되어 작동되는 것이었다.
시나리오대로 작성한 코드
// 수강생의 특정 과목 회차별 등급 조회 private static void inquireRoundGradeBySubject() { try { Student student = getStudentByInput(); showStudentInfo(student); Subject foundSubject = getSubjectByInput(student); Score subjectScore = findScoreByStudentIDSubjectId(foundSubject.getSubjectId(), student.getStudentId()); int round = getRoundByInput() - 1; // 회차 점수 확인 if (subjectScore.getScores()[round] == -1) { throw new Exception("해당 회차의 시험을 본 이력이 존재하지 않습니다."); } System.out.printf("%s의 %s과목 %d회차 등급은 %c입니다.", student.getStudentName(), foundSubject.getSubjectName(), round + 1, subjectScore.getRank()[round]); } catch (Exception ex) { System.out.println("Error : " + ex.toString()); } }완성

[ 결과 ] '부트캠프 > 프로젝트' 카테고리의 다른 글
[부트캠프] NBCStudentManager 2일차 (0) 2024.08.09 [프로젝트/KPT] 프로젝트를 끝 마치며 (0) 2024.08.08 [IntelliJ] 한글 깨짐 오류 (0) 2024.07.26 [프로젝트/KPT] 프로젝트를 끝 마치며 (0) 2024.07.19 [부트캠프] T1F3 프로젝트 2일차 (0) 2024.07.17