티스토리 뷰

it분야의 끄적끄적/Java 계열의 프로젝트 및 글

Java 강의 3일차

김수한무거북이WA!두루미 2020. 1. 15. 22:23

금일은 어제까지 배웠던 부분을 모두 사용하여 성적관리 및 수정하는 프로그램을 작성해보았습니다.

여기에서 쓰인 개념은 switch case, for, while, do while, if를 사용하여 작성하였습니다.

package MiniP;

/*
 * 
 */

import java.util.Scanner;

public class T1 {

    public static void main(String[] args) {

        // 입력을 위한 스캐너 객체 생성
        Scanner sc = new Scanner(System.in);

        // 학급의 수와 학급별 학생의 수, 성적을 담아둘 변수 선언
        int ban;
        int num;
        int grade = 3;
        String[] sub = { "국어", "영어", "수학", "총점", "평균" };

        // 기능
        int active;
        int active2;

        // 클래스의 수를 우선 물어봄.
        System.out.println("몇 학급이 있나요?");
        ban = sc.nextInt();

        // 점수, 이름, 평균의 정보를 담아둘 배열을 생성 및 선언
        int[][][] score = new int[ban][30][];
        String[][] name = new String[ban][30];
        float[][] avg = new float[ban][30];

        // 학급별 학생의 수만 따로 담아둘 배열을 선언
        int[][] check = new int[ban][];

        // 클래스의 수 만큼 반복
        for (int i = 0; i < ban; i++) {

            // 1개의 학급의 최대 정원이 30명이므로 30명이 초과하면 다시 인원수를 입력하게 조정함.
            do {
                System.out.println(i + 1 + "반의 인원을 입력하세요.");
                num = sc.nextInt();
                if (num > 30) {
                    System.out.println("하나의 학급의 최대 정원은 30명입니다. 다시 입력하세요.");
                    System.out.println();
                }
            } while (num > 30);

            // 학급별 학생의 수를 체크
            check[i] = new int[num];

            // 입력된 학급의 인원 수 만큼 반복
            for (int j = 0; j < num; j++) {
                System.out.println("이름을 입력하세요.");
                name[i][j] = sc.next();
                score[i][j] = new int[grade + 1];

                for (int k = 0; k < grade; k++) {
                    System.out.println(sub[k] + "성적을 입력하세요.");
                    score[i][j][k] = sc.nextInt();
                    score[i][j][3] += score[i][j][k];
                }
                avg[i][j] = (float)score[i][j][3] / 3.f;
            }

        }

        // 첫 입력이 끝난 후에 행동을 결정함.
        do {
            System.out.println("어떤 것을 하실건가요?");
            System.out.println("1.검색     2.출력     3.수정     4.삭제     5.종료");
            active = sc.nextInt();

            switch (active) {

            // 검색
            case 1:
                System.out.println("검색할 학생의 이름을 입력하세요.");
                String sname = sc.next();
                for (int i = 0; i < ban; i++) {
                    for (int j = 0; j < check[i].length; j++) {
                        if (sname.equals(name[i][j])) {
                            System.out.println(i + 1 + "반");
                            System.out.println("이름 : " + name[i][j]);
                            System.out.println("평균 : " + avg[i][j]);

                            for (int k = 0; k < grade + 1; k++) {
                                System.out.println(sub[k] + ":" + score[i][j][k]);
                            }
                        }
                        System.out.println();
                    }
                }
                break;

            // 성적 출력
            case 2:
                System.out.println("어떤 것을 하실건가요?");
                System.out.println("1.전체 성적     2.학급별 성적");
                active2 = sc.nextInt();

               switch (active2) {

                // 전체 성적 출력
                case 1:
                    for (int i = 0; i < ban; i++) {
                        System.out.println(i + 1 + "반");
                        System.out.println();
                        for (int j = 0; j < check[i].length; j++) {
                            System.out.println("이름 :" + name[i][j]);
                            for (int k = 0; k < score[i][j].length; k++) {
                                System.out.println(sub[k] + ":" + score[i][j][k]);
                            }
                            System.out.println(sub[4] + ":" + avg[i][j]);
                            System.out.println();
                        }
                        System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
                    }
                    break;

                // 학급 성적 출력
                case 2:
                    System.out.println("어떤 학급의 성적을 확인하실 건가요?");
                    int c = sc.nextInt();
                    System.out.println(c + "반");
                    for (int i = 0; i < check[c - 1].length; i++) {
                        System.out.println("이름 :" + name[c - 1][i]);
                        for (int j = 0; j < score[c - 1][i].length; j++) {
                            System.out.println(sub[j] + ":" + score[c - 1][i][j]);
                        }
                        System.out.println(sub[4] + ":" + avg[c - 1][i]);
                        System.out.println();
                    }
                    break;
                }
                break;

            // 수정
            case 3: 
                System.out.println("수정할 사람의 이름을 입력하세요.");
                String insert = sc.next();
                for (int i = 0; i < ban; i++) {
                    for (int j = 0; j < check[i].length; j++) {
                        if (insert.equals(name[i][j])) {
                            while (true) {
                                int k=0;
                                System.out.print("국어의 성적을 입력해주세요 : ");      
                                score[i][j][k]=sc.nextInt();               
                                score[i][j][3]+=score[i][j][k];            
                                System.out.println(sub[k] + "는(은)" + score[i][j][k] + "로 수정되었습니다.");
                                k++;
                                System.out.print("영어의 성적을 입력해주세요 : ");         
                                score[i][j][k]=sc.nextInt();               
                                score[i][j][3]+=score[i][j][k];
                                System.out.println(sub[k] + "는(은)" + score[i][j][k] + "로 수정되었습니다.");
                                k++;
                                System.out.print("수학의 성적을 입력해주세요 : ");
                                score[i][j][k]=sc.nextInt();               
                                score[i][j][3]+=score[i][j][k];
                                System.out.println(sub[k] + "는(은)" + score[i][j][k] + "로 수정됨");
                                break;
                            }
                        }
                    }
                }
                break;
                  

            // 학생 정보 삭제
            case 4:
                System.out.println("정보를 삭제할 학생의 이름을 입력하세요.");
                String dsname = sc.next();
                for (int i = 0; i < ban; i++) {
                    for (int j = 0; j < check[i].length; j++) {
                        if (dsname.equals(name[i][j])) {
                            name[i][j] = null;
                            avg[i][j] = 0;
                            for (int k = 0; k < grade + 1; k++) {
                                score[i][j][k] = 0;
                            }
                        }
                    }
                }
                System.out.println(dsname + "학생의 정보가 삭제되었습니다.");
                break;

            }

        } while (active == 1 | active == 2 | active == 3 | active == 4);

    }

}

 

'it분야의 끄적끄적 > Java 계열의 프로젝트 및 글' 카테고리의 다른 글

Java 강의 6일차  (0) 2020.01.20
Java 강의 4~5일차  (0) 2020.01.16
JAVA 강의 2일차  (0) 2020.01.14
JAVA 강의 1일차  (0) 2020.01.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함