Map을 이용한 성적관리
import java.util.TreeMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.*;
public class Test02 {
public static void main(String[] args) {
Pro tt = new Pro();
Scanner sc = new Scanner(System.in);
do {
System.out.println("====성적처리관리프로그램입니다.====");
System.out.println("1.성적입력\n2.성적 전체 출력\n3.학번 검색 출력\n종료하시려면 -1을 입력");
int i;
i = sc.nextInt();
if (i == -1) {
break;
}
switch (i) {
case 1:
tt.add();
break;
case 2:
tt.printall();
break;
case 3:
tt.keyprint();
break;
default:
System.out.println("잘못된 입력입니다."); break;
}
} while (true);
}
}
class Pro {
Scanner sc = new Scanner(System.in);
private TreeMap1 tm = new TreeMap1();
public void add() {
int i;
do {
System.out.print("학번입력: ");
int key = sc.nextInt();
System.out.print("이름입력: ");
String name = sc.next();
System.out.print("국어입력: ");
int korea = sc.nextInt();
System.out.print("영어입력: ");
int eng = sc.nextInt();
System.out.print("수학입력: ");
int mat = sc.nextInt();
Infopro dto = new Infopro();
dto.setName(name);
dto.setKor(korea);
dto.setEng(eng);
dto.setMat(mat);
if (tm.containsKey(key)) {
System.out.println("이미 입력된 학번입니다.");
} else {
tm.add(key, dto);
}
System.out.println("계속 입력하시려면 1 입력");
i = sc.nextInt();
} while (i == 1);
}
public void printall() {
System.out.println("-----------------------------");
System.out.println("학번|이름|국어| 영어| 수학| 총점| 평균");
System.out.println("-----------------------------");
TreeMap<Integer, Infopro> t1 = tm.getTm();
Iterator<Integer> it = t1.keySet().iterator();
while (it.hasNext()) {
int key = it.next();
System.out.printf("%d %s %d %d %d %d %.1f \n"
, key
, t1.get(key).getName()
, t1.get(key).getkor()
, t1.get(key).geteng()
, t1.get(key).getmat()
, t1.get(key).getTotal()
, t1.get(key).getavg());
}
System.out.println("-----------------------------");
}
public void keyprint() {
System.out.print("학번 검색");
int key = sc.nextInt();
System.out.println("-----------------------------");
System.out.println("학번 이름 국어 영어 수학 총점 평균");
System.out.println("-----------------------------");
Infopro dto = tm.getTm(key);
if (dto == null) {
System.out.println("검색 결과 없습니다.");
} else {
System.out.printf("%d %s %d %d %d %d %.1f %n"
, key
, dto.getName()
, dto.getkor()
, dto.geteng()
, dto.getmat()
, dto.getTotal()
, dto.getavg());
}
System.out.println("-----------------------------");
}
}
class Infopro { // 자료 처리 전용 클래스
private String name;
private int korea;
private int eng;
private int math;
private int total;
private float avg;
public void setKor(int korea) {
this.korea = korea;
}
public int getkor() {
return korea;
}
public int geteng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getmat() {
return math;
}
public void setMat(int math) {
this.math = math;
}
public float getavg() {
return avg;
}
public void setAvg() {
this.avg = total / 3;
}
public int getTotal() {
return total;
}
public void setTotal() {
this.total = getkor() + geteng() + getmat();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "이름 : " + name + "\t국어 : " + korea + "\t영어 : " + eng + "\t수학 : " + math + "\t총점 : " + total + "\t평균 : "+ avg + "\n";
}
}
class TreeMap1 {
private TreeMap<Integer, Infopro> tm= new TreeMap<Integer, Infopro>();
public void add(int key, Infopro dto) {
tm.put(key, dto);
}
public boolean containsKey(int key) {
return tm.containsKey(key);
}
public TreeMap<Integer, Infopro> getTm() {
return tm;
}
public Infopro getTm(int key) {
return tm.get(key);
}
}