본문 바로가기

JAVA/국비 공부

3월10일 수업(학생관리프로그램)

학생 관리 프로그램

5명의 학생을 관리하는 프로그램을 작성하시오.
단, 모두 변수로 만드는 것이 아니라
번호 배열, 이름 배열, 국어점수 배열, 영어점수 배열, 수학점수 배열로 만들어서
각 배열이 같은 인덱스는 같은 학생의 정보가 될 수 있도록 하시오
또한 메뉴를 만들어 입력, 출력, 종료를 분리하고 입력시에는 0번 1번 2번 ... 순으로 들어갈 수 있게 만드시오.

입력시에 잘못된 점수는 입력되지 않도록 만들어 주세요.

심화단계:

출력시, 만약 입력 학생이 없으면 "입력된 학생이 없습니다" 라고 출력 되고
          입력된 학생이 존재할 시에는 입력된 학생들만 출력 되고

          아직 입력되지 않은 칸의 정보는 출력되지않도록 프로그램을 작성하시오.

 


package day0310;
import java.util.Scanner;


public class GradeBook01Answer {
    static final int STUDENT_SIZE = 5;
    static final int SUBJECT_SIZE = 3;
    static final int SCORE_MIN = 0;
    static final int SCORE_MAX = 100;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 정보를 담을 배열들을 만들어준다.

        // 번호를 담을 idArray
        int[] idArray = new int[STUDENT_SIZE];
        // 이름을 담을 nameArray
        String[] nameArray = new String[STUDENT_SIZE];
        // 국어점수를 담을 koreanArray
        int[] koreanArray = new int[STUDENT_SIZE];
        // 영어점수를 담을 englishArray
        int[] englishArray = new int[STUDENT_SIZE];
        // 수학점수를 담을 mathArray
        int[] mathArray = new int[STUDENT_SIZE];

        // 지금현재 입력할 인덱스를 저장한 int index
        int idx = 0;

        while (true) {
            System.out.println();
            System.out.println("1.입력 2. 출력 3.종료");
            System.out.print(">");
            int userChoice = scanner.nextInt();

            if (userChoice == 1) {
                // idx 칸에 각 정보를 입력한다.

                // 먼저 우리가 5명미만을 입력했을경우
                // idx 칸에 입력한다

                // 만약 우리가 5명을 입력했으면 더이상
                // 입력이 안되게 만든다

                if (idx < STUDENT_SIZE) {
                    // 아직 5명 미만이 입력됐으므로
                    // 입력 가능

                    // 번호 입력
                    System.out.println("번호");
                    System.out.print(">");
                    idArray[idx] = scanner.nextInt();

                    // 이름입력
                    scanner.nextLine();
                    System.out.println("이름");
                    System.out.print(">");
                    nameArray[idx] = new String(scanner.nextLine());

                    // 국어입력
                    System.out.println("국어");
                    System.out.print(">");
                    koreanArray[idx] = scanner.nextInt();

                    // 국어입력 검증
                    while( !(koreanArray[idx] >= SCORE_MIN && koreanArray[idx] <= SCORE_MAX)) {
                        System.out.println("잘못입력하셨습니다.");
                        System.out.println("국어");
                        System.out.print(">");
                        koreanArray[idx] = scanner.nextInt();
                    }
                    
                    // 영어입력
                    System.out.println("영어");
                    System.out.print(">");
                    englishArray[idx] = scanner.nextInt();

                    // 영어입력 검증
                    while( !(englishArray[idx] >= SCORE_MIN && englishArray[idx] <= SCORE_MAX)) {
                        System.out.println("잘못입력하셨습니다.");
                        System.out.println("영어");
                        System.out.print(">");
                        englishArray[idx] = scanner.nextInt(); 
                    }
                    
                    // 수학입력
                    System.out.println("수학");
                    System.out.print(">");
                    mathArray[idx] = scanner.nextInt();

                    // 수학입력 검증
                    while( !(mathArray[idx] >= SCORE_MIN && mathArray[idx] <= SCORE_MAX)) {
                        System.out.println("잘못입력하셨습니다.");
                        System.out.println("수학");
                        System.out.print(">");
                        mathArray[idx] = scanner.nextInt();     
                    }
                    
                    // idx 값증가
                    idx++;
                    
                }else {
                    //이미 우리가 5명을 다 입력했으므로
                    //더 이상 입력할 없다만 알려준다
                    System.out.println("더이상 입력하실 수 없습니다!");
                }
                
            } else if (userChoice == 2) {
                // 배열의 내용을 출력한다
                if (idx > 0) {
                    // idx가 0보다 크다라는 것은
                    // 현재 입력할 인덱스가 0보다 크다
                    // 즉 1명 이상이 입력되어 있다는 뜻이다.

                    // 그럴 경우에는 0번 idx부터 idx보다 작을때까지 i for문을 사용하여
                    // 내용을 출력해주면 된다.

                    for (int i = 0; i < idx; i++) {
                        System.out.println();
                        System.out.println("====" + nameArray[i] + "학생의 정보====");

                        System.out.printf("번호: %d번 이름 : %s \n", idArray[i], nameArray[i]);
                        System.out.printf("국어:%03d점 영어:%03d점 수학:%03d점 \n", koreanArray[i], englishArray[i],
                                mathArray[i]);
                        int sum = koreanArray[i] + englishArray[i] + mathArray[i];
                        double average = (double) sum / SUBJECT_SIZE;
                        System.out.printf("총점:%03d점 평균: %06.2f점 \n", sum, average);

                        System.out.println("=====================");
                        System.out.println();
                    }

                } else {
                    System.out.println();
                    System.out.println("아직 입력된 학생이 존재하지 않습니다.");
                    System.out.println();
                }

            } else if (userChoice == 3) {
                // 메세지 출력 후 종료
                System.out.println("사용해주셔서 감사합니다");
                break;
            }
        }

        scanner.close();
    }
}

'JAVA > 국비 공부' 카테고리의 다른 글

3월10일수업(구구단)  (0) 2021.03.11
3월10일수업(2차원 배열)  (0) 2021.03.11
3월10일수업(별찍기01)  (0) 2021.03.11
3월10일 수업(로또05)  (0) 2021.03.11
3월10일수업(로또04)  (0) 2021.03.11