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;
}
}
<결과>




'STUDY > Java' 카테고리의 다른 글
성적 관리 프로그램 예제1 - 2021.09.03 (0) | 2023.12.09 |
---|---|
<자바의 신> 28장 다른 서버로 데이터를 보내려면 어떻게 하면 되나요? (1) | 2023.12.09 |
<자바의 신> 25장 쓰레드는 개발자라면 알아두는 것이 좋아요 (0) | 2023.12.09 |
<자바의 신> 21장 실수를 방지하기 위한 제네릭이라는 것도 있어요 (0) | 2023.12.09 |
<자바의 신> 16장 클래스 안에 클래스가 들어갈 수도 있구나 (0) | 2023.12.09 |