-
[Java] Map 성적관리 프로그램Java 2022. 9. 19. 01:40
Student.java
package Map; import java.util.TreeMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Scanner; class Student { private int id; private String name; private LinkedHashMap<String, Integer> subject; private int total; private float avg; private String flag; private Scanner scan; public Student(int id) { scan = new Scanner(System.in); subject = new LinkedHashMap<String, Integer>(); System.out.println("이름을 입력해주세요"); name = scan.next(); do { this.id = id; System.out.println("과목 이름을 입력해주세요"); String sb = scan.next(); System.out.println("점수를 입력해주세요"); int score = scan.nextInt(); subject.put(sb, score); System.out.println("계속 입력하시겠습니까? Y/N"); flag = scan.next(); total += score; }while(flag.equals("Y") || flag.equals("y")); avg = (float) total / subject.size(); } public void disp() { System.out.println("학번: " + getId()); System.out.println("이름: " + getName()); for(String key : subject.keySet()) { System.out.println(key + ": "+ subject.get(key) + "점"); } System.out.println("총점: " + getTotal()); System.out.println("평균: " + getAvg()); System.out.println(); } public LinkedHashMap<String, Integer> getSubject(){ return subject; } public String[] getSubjectArray() { Iterator<String> keys = subject.keySet().iterator(); String[] sbName = new String[subject.size()]; int i = 0; while(keys.hasNext()) { String key = keys.next(); sbName[i++] = key; } return sbName; } public void setSubject(LinkedHashMap<String, Integer> subject) { this.subject = subject; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getAvg() { return avg; } public void setAvg(float avg) { this.avg = avg; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
Main.java
package Map; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Scanner; public class Main { private LinkedHashMap<Integer ,Student> stu; public Main() { stu = new LinkedHashMap<Integer ,Student>(); } public static void main(String[] args) { Main m = new Main(); int index; Scanner scan = new Scanner(System.in); Iterator<Integer> keys; int key; int score; Loop1: while(true) { System.out.println("번호를 입력하세요(1. 입력, 2. 출력, 3. 검색, 4. 삭제, 5. 종료)"); int num = scan.nextInt(); keys = m.stu.keySet().iterator(); switch(num) { case 1: System.out.println("학번을 입력해주세요"); index = scan.nextInt(); while(m.stu.containsKey(index)) { System.out.println("이미 존재하는 학번입니다."); continue Loop1; } m.stu.put(index, new Student(index)); break; case 2: // 전체 출력(학번, 이름, 과목, 점수, 총점, 평균) while(keys.hasNext()) { key = keys.next(); m.stu.get(key).disp(); } break; case 3: System.out.println("1. 학번 검색, 2. 이름 검색, 3. 점수 검색"); int inputNum = scan.nextInt(); // 학번 검색 if(inputNum == 1) { System.out.println("검색하실 학번을 입력해주세요"); int id = scan.nextInt(); key = keys.next(); while(keys.hasNext()) { if(m.stu.containsKey(id)) { m.stu.get(id).disp(); break; } }break; } // 이름 검색 else if(inputNum == 2) { System.out.println("검색하실 이름을 입력해주세요"); String inputName = scan.next(); while(keys.hasNext()) { key = keys.next(); String searchName = m.stu.get(key).getName(); if(searchName.equals(inputName)) { m.stu.get(key).disp(); }else if(!searchName.equals(inputName)) { continue; } } break; } // 점수 검색 else if(inputNum == 3) { System.out.println("1. 평균, 2. 과목당 검색"); int inputN = scan.nextInt(); if(inputN == 1) { System.out.println("검색하실 평균을 입력해주세요"); int avg = scan.nextInt(); // 평균 while(keys.hasNext()) { key = keys.next(); float searchAvg = m.stu.get(key).getAvg(); if(searchAvg >= avg) { m.stu.get(key).disp(); }else if(searchAvg != avg) { continue; } } }else if(inputN == 2) { System.out.println("검색하실 과목을 입력해주세요"); String sb = scan.next(); int pointer = 0; int searchScore = 0; while(keys.hasNext()) { key = keys.next(); String[] subject = m.stu.get(key).getSubjectArray(); // 과목이름 배열 위치값 공유 for(int i = 0; i < subject.length; i++) { if(subject[i].equals(sb)) { if(pointer == 0) { System.out.println("점수를 입력해주세요"); searchScore = scan.nextInt(); pointer++; } score = m.stu.get(key).getSubject().get(sb); if(score >= searchScore) { m.stu.get(key).disp(); } } } } } break; } case 4: // 삭제 System.out.println("삭제하실 학생의 학번을 입력해주세요"); int numm = scan.nextInt(); while(keys.hasNext()) { key = keys.next(); int searchId = m.stu.get(key).getId(); if(searchId == numm) { m.stu.remove(key); break; }else if(searchId != numm) { continue; } } break; case 5: System.exit(-1); default: System.out.println("다시 입력해주세요"); } } } }
728x90'Java' 카테고리의 다른 글
[Java] Comparator (1) 2023.12.03 [Java] BigInteger 다루기 (0) 2022.10.02 [Java] Set 성적관리 프로그램 (0) 2022.09.19 [Java] ArrayList 성적관리 프로그램 (0) 2022.09.19 [Java] 참조 자료형 (0) 2022.07.09