팀과제(수강생 등록 및 수정)

개발공부기록하기·2024년 5월 8일

java

목록 보기
13/16

팀과제(수강생관리 프로그램)에서 수강생 등록 및 수정 파트를 진행했다.

수강생 등록

    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("잘못 입력 하셨습니다.");
            }
        }
    }

개발 했을때 어려웠던 점

  1. 조원들과 함께 하는 과제이다 보니 최대한 고려하면서 코딩 해야 했다.

  2. 예외처리 했을때 방식이 어려웠다.
    -수강생 등록 했을때 중복으로 등록이 되지 않도록(ex. JAVA,JAVA) 코딩을 진행 할 때 따로 index 배열을 통해 반목문으로 체크 하는 방식을 진행 할려고 했었다. 하지만 효율이 안좋을거 같다는 생각에 고민을 해본결과 입력한 이력을 문자열로 변환후 문자열 끼리 연결을 하여contains()으로 동일한 문자이 있는지 확인 후 있으면 continue로 진행해서 테스트 해보니 일단 문제가 없었던 걸로 보였다.

0개의 댓글