팀과제(수강생관리 프로그램)에서 수강생 등록 및 수정 파트를 진행했다.
수강생 등록
public void createStudent() {
int count = 1;
int input;
System.out.println("\n수강생을 등록합니다...");
System.out.print("수강생 이름 입력: ");
String studentName = sc.next();
// 기능 구현 (필수 과목, 선택 과목)
Subject subject;
String[] mandatory = new String[3];
String[] choice = new String[2];
String comparesubject = "";
//수강생 상태를 추가 할때 컨디션(상태) 추가!, 기본값 Yellow
student = new Student(InitData.sequence(InitData.getIndexTypeStudent()), studentName);
String studentId = student.getStudentId();
for (int i = 0; i < mandatory.length; i++) {
System.out.println("==================================");
System.out.println("필수 과목 3과목을 입력해 주세요..." + count + " 번째");
System.out.println("1. Java");
System.out.println("2. 객체지향");
System.out.println("3. Spring");
System.out.println("4. JPA");
System.out.println("5. MySQL");
input = sc.nextInt();
if(comparesubject.contains(Integer.toString(input))){
System.out.println("중복 값이 있습니다. 다시 시도해주세요");
i--;
continue;
}
switch (input) {
case 1:
mandatory[i] = "Java";
subject = new Subject(InitData.sequence(InitData.getIndexTypeSubject()), mandatory[i], InitData.getSubjectTypeMandatory(), studentId);
InitData.getSubjectStore().add(subject);
comparesubject = comparesubject + input;
break;
case 2:
mandatory[i] = "객체지향";
subject = new Subject(InitData.sequence(InitData.getIndexTypeSubject()), mandatory[i], InitData.getSubjectTypeMandatory(), studentId);
InitData.getSubjectStore().add(subject);
comparesubject = comparesubject + input;
break;
case 3:
mandatory[i] = "Spring";
subject = new Subject(InitData.sequence(InitData.getIndexTypeSubject()), mandatory[i], InitData.getSubjectTypeMandatory(), studentId);
InitData.getSubjectStore().add(subject);
comparesubject = comparesubject + input;
break;
case 4:
mandatory[i] = "JPA";
subject = new Subject(InitData.sequence(InitData.getIndexTypeSubject()), mandatory[i], InitData.getSubjectTypeMandatory(), studentId);
InitData.getSubjectStore().add(subject);
comparesubject = comparesubject + input;
break;
case 5:
mandatory[i] = "MySQL";
subject = new Subject(InitData.sequence(InitData.getIndexTypeSubject()), mandatory[i], InitData.getSubjectTypeMandatory(), studentId);
InitData.getSubjectStore().add(subject);
comparesubject = comparesubject + input;
break;
default:
System.out.println("잘못 입력하셨습니다");
i--;
count--;
break;
}
count++;
}
수강생 수정
public void adjustStudent() {
int input = 0;
System.out.println("==================================");
System.out.println("수강생의 정보를 변경하기 위한 창입니다. 변경을 원하시는 데이터를 입력해주세요.");
System.out.println("1. 이름 ");
System.out.println("2. 상태 ");
System.out.println("3. 메인메뉴로 돌아갑니다. ");
input = sc.nextInt();
switch (input) {
case 1 -> adjustStudentName();
case 2 -> adjustStudentCondition();
case 3 -> System.out.println("메인 화면 이동...");
default -> System.out.println("잘못된 입력입니다.\n메인 화면 이동...");
}
}
//학생 이름 수정 메서드(빈 리스트 및 ST로 미입력시 fail, 잘못 입력했을때의 구현은x)
public void adjustStudentName() {
String stid;
String stname;
if (InitData.getStudentStore().isEmpty()) {
System.out.println("수강생 목록이 비어 있습니다. 수강생 등록 먼저 진행해 주세요");
} else {
System.out.println("==================================");
System.out.println("이름 변경하기를 선택 하셨습니다. 변경하실 이름의 수강생 번호(ST%)를 입력 해주세요");
stid = sc.next();
if (stid.contains("ST")) {
System.out.println("변경전 이름 ");
for (Student s : InitData.getStudentStore()) {
if (s.getStudentId().equals(stid)) {
System.out.println(s.getStudentName());
}
}
System.out.println("변경하실 이름을 입력 해주세요");
stname = sc.next();
System.out.println("변경후 이름 이름 ");
for (Student s : InitData.getStudentStore()) {
if (s.getStudentId().equals(stid)) {
s.setStudentName(stname);
System.out.println(s.getStudentName());
}
}
System.out.println("변경완료 ");
} else {
System.out.println("잘못 입력 하셨습니다.");
}
}
}
//수강생 상태 변경하는 메서드
public void adjustStudentCondition() {
String stid;
int input = 0;
//boolean check = true;
if (InitData.getStudentStore().isEmpty()) {
System.out.println("수강생 목록이 비어 있습니다. 수강생 등록 먼저 진행해 주세요");
} else {
System.out.println("==================================");
System.out.println("상태 변경하기를 선택 하셨습니다. 변경하실 이름의 수강생 번호(ST%)를 입력 해주세요");
stid = sc.next();
if (stid.contains("ST")) {
for (Student s : InitData.getStudentStore()) {
if (s.getStudentId().equals(stid)) {
System.out.println("변경전 상태");
System.out.println(s.getCondition());
}
}
System.out.println("어떤 상태로 변경 하시겠습니까?");
System.out.println("1. Green : Good");
System.out.println("2. Yellow : So So");
System.out.println("3. Red : Bad");
input = sc.nextInt();
for (Student s : InitData.getStudentStore()) {
if (s.getStudentId().equals(stid)) {
switch (input) {
case 1:
s.setCondition(InitData.getConditionGreen());
System.out.println("변경을 완료 했습니다.");
break;
case 2:
s.setCondition(InitData.getConditionYellow());
System.out.println("변경을 완료 했습니다.");
break;
case 3:
s.setCondition(InitData.getConditionRed());
System.out.println("변경을 완료 했습니다.");
break;
default:
System.out.println("입력을 잘못 하셨습니다.");
}
}
}
} else {
System.out.println("잘못 입력 하셨습니다.");
}
}
}
개발 했을때 어려웠던 점
조원들과 함께 하는 과제이다 보니 최대한 고려하면서 코딩 해야 했다.
예외처리 했을때 방식이 어려웠다.
-수강생 등록 했을때 중복으로 등록이 되지 않도록(ex. JAVA,JAVA) 코딩을 진행 할 때 따로 index 배열을 통해 반목문으로 체크 하는 방식을 진행 할려고 했었다. 하지만 효율이 안좋을거 같다는 생각에 고민을 해본결과 입력한 이력을 문자열로 변환후 문자열 끼리 연결을 하여contains()으로 동일한 문자이 있는지 확인 후 있으면 continue로 진행해서 테스트 해보니 일단 문제가 없었던 걸로 보였다.