본문 바로가기

STUDY/Java

성적 관리 프로그램 예제2 - 2021.09.08

 

1. DTO (StudentInfo.java)

package com.score;

public class StudentInfo{
	String name;
	String st_num;
	int kor, eng, math;
	int tot;
	
	public StudentInfo() {
		super();
	}

	public StudentInfo(String name, String st_num, int kor, int eng, int math) {
		super();
		this.name = name;
		this.st_num = st_num;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSt_num() {
		return st_num;
	}

	public void setSt_num(String st_num) {
		this.st_num = st_num;
	}

	public int getKor() {
		return kor;
	}

	public void setKor(int kor) {
		this.kor = kor;
	}

	public int getEng() {
		return eng;
	}

	public void setEng(int eng) {
		this.eng = eng;
	}

	public int getMath() {
		return math;
	}
	Publ
ic void setMath(int math) {
		this.math = math;
	}

	public int getTot() {
		return tot;
	}

	public void setTot(int tot) {
		this.tot = tot;
	}
}
 

 

2. Main 함수 (StudentTest.java)

package com.score;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentTest {
	static ArrayList<StudentInfo> alist = new ArrayList<StudentInfo>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		StudentInput si = new StudentInput();
		StudentOutput so = new StudentOutput();
		StudentDelete sd = new StudentDelete();
		
		StudentSort sort = new StudentSort();
		
		boolean stop = true;
		while(stop) {
		System.out.println("**********************************");
		System.out.println("* 성적 관리 프로그램                  *");
		System.out.println("* 1.성적입력 2.성적삭제 3.성적정렬 4.종료 *");
		System.out.println("* q 입력시 메인화면으로 돌아갑니다        *");
		System.out.println("**********************************");
		System.out.println();
		System.out.print("원하는 번호를 입력하세요: ");
		int input = sc.nextInt();
		switch(input) {
			case 1: 
				si.Student_Input(alist); 
				break;
			case 2: 
				sd.delete(alist); 
				break;
			case 3: 
				System.out.println("1.이름 오름차순 2.총점 내림차순");
				System.out.print(">>");
				String input_sort = sc.next();
				if(input_sort.equals("q")) break;
				if(input_sort.equals("1"))
					sort.name_asc(alist); 
				else if(input_sort.equals("2"))
					sort.tot_des(alist);
				else
					System.out.println("1 또는 2를 입력하세요");	
					break;
			case 4: 
				System.out.println("프로그램을 종료합니다."); 
				stop = false; 
				break;
			default:
				System.out.println("1~4사이의 숫자를 입력하세요");
			} // swtich_end
		} // while_end
	}
}
 

3. StudentInput.java

package com.score;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentInput {
	Scanner sc = new Scanner(System.in);
	StudentInfo si = new StudentInfo();
	StudentOutput so = new StudentOutput();
	Student_Total stot = new Student_Total();
	
	public void Student_Input(ArrayList<StudentInfo> alist) {
		System.out.println("**이름(3), 학번(4), 성적(3)**");
		System.out.println("이름, 학번, 국어성적, 영어성적, 수학성적을 공백없이 입력하세요: ");
		System.out.println("ex) 홍길동1001090080070");
		while(true) {
			System.out.print(">>");
			String input = sc.next();
			
			if(input.equals("q")) break;
			
			String name = input.substring(0, 3);
			String st_num = input.substring(3, 7);
			int kor = Integer.parseInt(input.substring(7, 10));
			int eng = Integer.parseInt(input.substring(10, 13));
			int math = Integer.parseInt(input.substring(13, 16));
		
			StudentInfo si = new StudentInfo(name, st_num, kor, eng, math);
			si.setTot(stot.total(si.getKor(), si.getEng(), si.getMath()));
			alist.add(si);
		} // while_end
		System.out.println();
		so.Array_Output(alist);
		System.out.println();
	}
}
 

4. StudentDelete.java

package com.score;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentDelete {
	Scanner sc = new Scanner(System.in);
	StudentOutput so = new StudentOutput();
	
	public void delete(ArrayList<StudentInfo> alist) {
		System.out.println("삭제할 학생의 학번을 입력하세요: ");
		System.out.print(">>");
		String st_num = sc.next();
		int index = -1;
		for(int i=0; i<alist.size(); i++) {
			if(st_num.equals("q")) {
				break;
			}
			if(st_num.equals(alist.get(i).getSt_num())) {
					index = i;
					alist.remove(index);
					System.out.println();
					so.Array_Output(alist);
					System.out.println();
					break;
			}
		} // for_end
		if(index == -1) {
			System.out.println("데이터가 존재하지 않습니다.");
			System.out.println();
		}
	}
}
 

5. StudentSort.java

package com.score;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class StudentSort {
	StudentOutput so = new StudentOutput();
	
	
	public void name_asc(ArrayList<StudentInfo> alist) {
		List<StudentInfo> name_asc = alist.stream().sorted(Comparator.comparing(StudentInfo::getName)).collect(Collectors.toList());
		System.out.println();
		so.List_Output(name_asc);
		System.out.println();
	}
	
	public void tot_des(ArrayList<StudentInfo> alist) {
		List<StudentInfo> tot_des = alist.stream().sorted(Comparator.comparing(StudentInfo::getTot).reversed()).collect(Collectors.toList());
		System.out.println();
		so.List_Output(tot_des);
		System.out.println();
	}
}
 

6. StudentOutput.java

package com.score;

import java.util.ArrayList;
import java.util.List;

public class StudentOutput {
	
	public void Array_Output(ArrayList<StudentInfo> alist) {
		System.out.println("============================================");
		System.out.println("이름\t학번\t국어\t영어\t수학\t총점");
		alist.forEach(k->System.out.println(k.getName() + "\t" + k.getSt_num() + "\t" + k.getKor() + "\t" + k.getEng() + "\t" + k.getMath() + "\t" + k.getTot()));
		System.out.println("============================================");
	}
	
	public void List_Output(List<StudentInfo> list) {
		System.out.println("============================================");
		System.out.println("이름\t학번\t국어\t영어\t수학\t총점");
		list.forEach(k->System.out.println(k.getName() + "\t" + k.getSt_num() + "\t" + k.getKor() + "\t" + k.getEng() + "\t" + k.getMath() + "\t" + k.getTot()));
		System.out.println("============================================");
	}
}
 

7. Student_Total.java

package com.score;

public class Student_Total {
	public int total(int k, int e, int m) {
		return k + e + m;
	}
}
 

 

<결과>