성적 관리 프로그램

성적 관리 프로그램

자바로 만드는 성적 관리 프로그램

 

요즘 OOP에 엄청나게 관심이 많은데 Java를 배우고 약 보름 후에 만들었던,

지금에서 보면 약 한 달전쯤에 작성한 코드를 다시 보니 정말 비루하다는 생각이 든다.

다음에는 이렇게 만들지 말아야지

 

 

 

 

 

 

// file: 'ManagemnetScore.java'
public class ManagementScore implements Serializable {
    String names;
    int score;

    public ManagementScore(String names) {
        this.names = names;
    }

    public ManagementScore(int score) {
        this.score = score;
    }
}

 

// file: 'Management.java'
public class Management {
    // 변수 선언 & 생성자 호출
    public Scanner sc = new Scanner(System.in);
    public String strM = "0";

    private ArrayList<ManagementScore> nameslist = new ArrayList<ManagementScore>();
    private ArrayList<ManagementScore> guklist = new ArrayList<ManagementScore>();
    private ArrayList<ManagementScore> englist = new ArrayList<ManagementScore>();
    private ArrayList<ManagementScore> sulist = new ArrayList<ManagementScore>();

    private String names;
    private int guk = 0, eng = 0, su = 0;

    public void managementProgram() {
        // 메뉴 선택
        strM = sc.nextLine();

        // 메뉴 실행
        switch(strM) {
            // 입력
            case "1":
                System.out.println("※등록하실 이름을 입력하세요.");
                System.out.print("※이름 : ");
                ManagementScore nl = new ManagementScore(sc.nextLine());
                nameslist.add(nl);

                System.out.println("※국어 점수를 입력하세요.");
                System.out.print("※국어 : ");
                ManagementScore gl = new ManagementScore(sc.nextInt());
                guklist.add(gl);

                System.out.println("※영어 점수를 입력하세요.");
                System.out.print("※영어 : ");
                ManagementScore el = new ManagementScore(sc.nextInt());
                englist.add(el);

                System.out.println("※수학 점수를 입력하세요.");
                System.out.print("※수학 : ");
                ManagementScore sl = new ManagementScore(sc.nextInt());
                sulist.add(sl);
                break;

            // 저장
            case "2":
                // 파일 내보내기
                try {
                    FileOutputStream fosnames = new FileOutputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\namelist.ser");
                    BufferedOutputStream bosnames = new BufferedOutputStream(fosnames);
                    ObjectOutputStream outnames = new ObjectOutputStream(bosnames);
                    outnames.writeObject(nameslist);

                    FileOutputStream fosguk = new FileOutputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\guklist.ser");
                    BufferedOutputStream bosguk = new BufferedOutputStream(fosguk);
                    ObjectOutputStream outguk = new ObjectOutputStream(bosguk);
                    outguk.writeObject(guklist);

                    FileOutputStream foseng = new FileOutputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\englist.ser");
                    BufferedOutputStream boseng = new BufferedOutputStream(foseng);
                    ObjectOutputStream outeng = new ObjectOutputStream(boseng);
                    outeng.writeObject(englist);

                    FileOutputStream fossu = new FileOutputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\sulist.ser");
                    BufferedOutputStream bossu = new BufferedOutputStream(fossu);
                    ObjectOutputStream outsu = new ObjectOutputStream(bossu);
                    outsu.writeObject(sulist);

                    // Stream Close
                    outnames.close();
                    outguk.close();
                    outeng.close();
                    outsu.close();
                }

                // 에러 검출
                catch(Exception e) {
                    System.out.printf("파일 저장 오류 : %s", e.getMessage());
                }
                System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("!!!!!!!!                     !!!!!!!!");
                System.out.println("!!!!!!!!   저장 되었습니다   !!!!!!!!");
                System.out.println("!!!!!!!!                     !!!!!!!!");
                System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                break;

            // 조회
            case "3":
                // 파일 불러오기
                try {
                    FileInputStream fisnames = new FileInputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\namelist.ser");
                    BufferedInputStream bisnames = new BufferedInputStream(fisnames);
                    ObjectInputStream innames = new ObjectInputStream(bisnames);

                    FileInputStream fisguk = new FileInputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\guklist.ser");
                    BufferedInputStream bisguk = new BufferedInputStream(fisguk);
                    ObjectInputStream inguk = new ObjectInputStream(bisguk);

                    FileInputStream fiseng = new FileInputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\englist.ser");
                    BufferedInputStream biseng = new BufferedInputStream(fiseng);
                    ObjectInputStream ineng = new ObjectInputStream(biseng);

                    FileInputStream fissu = new FileInputStream("D:\\Java\\WorkSpace\\java_project\\src\\java_proj_src\\sulist.ser");
                    BufferedInputStream bissu = new BufferedInputStream(fissu);
                    ObjectInputStream insu = new ObjectInputStream(bissu);

                    // 읽어온 Byte파일을 배열로 강제 형 변환
                    Object objnames = innames.readObject();
                    ArrayList<ManagementScore> readnames = (ArrayList<ManagementScore>) objnames;

                    Object objguk = inguk.readObject();
                    ArrayList<ManagementScore> readguk = (ArrayList<ManagementScore>) objguk;

                    Object objeng = ineng.readObject();
                    ArrayList<ManagementScore> readeng = (ArrayList<ManagementScore>) objeng;

                    Object objsu = insu.readObject();
                    ArrayList<ManagementScore> readsu = (ArrayList<ManagementScore>) objsu;

                    System.out.println("+------------+---------+---------+---------+");
                    System.out.println("|   이  름   |  국  어 |  영  어 |  수  학 |");
                    System.out.println("+------------+---------+---------+---------+");

                    // 강제 형 변환 한 파일 출력을 위한 for문	
                    for(int i = 0; i < readnames.size(); i++) {
                        if(Objects.isNull(readnames.get(i))) {
                        }
                        else {
                            System.out.printf("|   %-3s   |   %3s   |   %3s   |   %3s   |\n", readnames.get(i).names, readguk.get(i).score, readeng.get(i).score, readsu.get(i).score);
                        }
                    }

                    // Stream Close
                    innames.close();
                    inguk.close();
                    ineng.close();
                    insu.close();
                }

                //에러 검출
                catch(Exception e) {
                    System.out.printf("파일 불러오기 오류 : %s", e.getMessage());
                }

                System.out.println("+------------+---------+---------+---------+");
                break;

            // 화면 청소 메서드 호출
            case "4":
                clearScreen();
                break;

            // default 
            default:
                break;
        }
    }

    // 화면 청소 메서드 정의
    void clearScreen() {
        try {
            if(System.getProperty("os.name").contains("Windows")) {
                new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
            }
            else {
                Runtime.getRuntime().exec("clear");
            }

        }
        catch(IOException | InterruptedException ex) {
        }
    }
}

 

// file: 'ScoreManagementProgram.java'
public class ScoreManagementProgram {
    public static void main(String[] args) {
        // 생성자
        Management mg = new Management();

        // 프로그램 실행
        do {
            // 메뉴 출력    	  
            System.out.println("                            ");
            System.out.println("        +------------------+");
            System.out.println("        | 성적관리프로그램 |");
            System.out.println("        +------------------+");
            System.out.println("        |    1. 입력       |");
            System.out.println("        +------------------+");
            System.out.println("        |    2. 저장       |");
            System.out.println("        +------------------+");
            System.out.println("        |    3. 조회       |");
            System.out.println("        +------------------+");
            System.out.println("        |    4. 화면청소   |");
            System.out.println("        +------------------+");
            System.out.println("        |    5. 종료       |");
            System.out.println("        +------------------+");
            System.out.print("          ※선택 : ");

            // 메뉴 기능 메서드 호출
            mg.managementProgram();

            // 프로그램 종료
        } while(!mg.strM.equals("5"));
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!             !!!!!!!!!");
        System.out.println("!!!!!!!!! PROGRAM END !!!!!!!!!");
        System.out.println("!!!!!!!!!             !!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

        // 스캐너 Close
        mg.sc.close();
        System.exit(0);
    }
}

 


© 2022. All rights reserved.