성적 관리 프로그램
in Diary
자바로 만드는 성적 관리 프로그램
요즘 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);
}
}