-
[Java] 성적 조회 프로그램 만들기JAVA 2022. 11. 3. 17:21728x90반응형
지금까지 배운 내용으로 만들어본 성적 조회 프로그램
필요한 기능
- 성적 입력
- 학번, 이름, 영어 점수, 수학 점수를 입력받는다.
- 성적 조회
- 개인의 성적을 조회한다.
- 학번, 이름, 영어 성적, 수학 성적, 평균 점수, 전교 등수를 출력한다.
- 전교생의 성적을 조회한다.
- 전교 등수대로 출력된다.
- 전교 등수, 이름, 학번, 영어 점수, 수학 점수, 평균 점수를 출력한다.
- 개인의 성적을 조회한다.
- 과목별 통계
- 과목명, 최고 점수, 최저 점수, 평균 점수를 출력한다.
- 프로그램을 종료
소스코드
import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); Map<String[], int[]> map = new HashMap<>(); // 학번, 이름, 점수등을 저장하는 용도 List<Integer> math = new LinkedList<>(); // 수학 점수를 저장하는 용도 List<Integer> english = new LinkedList<>(); // 영어 점수를 저장하는 용도 Map<String, Integer> rank = new HashMap<>(); // 전교 등수를 알기 위해 만든 용도 while(true){ System.out.println("메뉴를 선택해주세요."); System.out.println("1. 성적 입력"); System.out.println("2. 성적 출력"); System.out.println("3. 통계 출력"); System.out.println("4. 프로그램 종료"); System.out.print("메뉴 선택 : "); int x = s.nextInt(); show.menuShow(map, x, s, math, english, rank); } } }
class show{ static String[] sub = {"학번","이름","영어", "수학", "평균"}; static void menuShow(Map map, int x, Scanner s, List math, List english, Map rank){ if(x == 1){ menu1(map, s, math, english, rank); }else if(x == 2){ menu2(map, s, rank); }else if(x == 3){ menu3(math, english, s); }else if(x == 4){ System.out.println("\n프로그램이 종료되었습니다."); System.exit(0); }else{ System.out.println("잘못입력 하셨습니다."); } } static void menu1(Map<String[], int[]> map, Scanner s, List<Integer> math, List<Integer> english, Map<String, Integer> rank){ System.out.println("\n성적 입력창 입니다."); System.out.print("1. 학번 : "); String cn = s.next(); System.out.print("2. 이름 : "); String name = s.next(); System.out.print("3. 영어 점수 : "); int e = s.nextInt(); System.out.print("4. 수학 점수 : "); int m = s.nextInt(); map.put(new String[]{cn, name}, new int[]{e, m, (e+m)/2}); math.add(m); english.add(e); Collections.sort(math); Collections.sort(english); rank.put(cn, (e+m)/2); System.out.println(); } static void menu2(Map<String[], int[]> map, Scanner s, Map<String, Integer> rank){ List<String> rankList = new LinkedList<>(rank.keySet()); Collections.sort(rankList, (o1,o2)->(rank.get(o2).compareTo(rank.get(o1)))); System.out.println("\n성적 출력창 입니다."); System.out.println("1. 개인 성적 출력"); System.out.println("2. 전체 성적 출력"); System.out.print("메뉴 선택 : "); int x = s.nextInt(); if(x == 1){ System.out.print("\n학번을 입력 : "); int pcn = s.nextInt(); for(Map.Entry<String[], int[]> entrypcn : map.entrySet()){ if(Arrays.toString(entrypcn.getKey()).contains(pcn+"")){ for(int i = 0; i < sub.length; i++){ if(i < 2){ System.out.println(sub[i] + " : " + entrypcn.getKey()[i]); }else{ System.out.println(sub[i] + " 점수 : " + entrypcn.getValue()[i-2]); } } for(String key : rankList){ if(key.equals(pcn+"")){ System.out.println("전교 등수 : " + (rankList.indexOf(key)+1)); } } System.out.println(); }else{ System.out.println("잘못 입력하셨습니다.\n"); } } }else if(x == 2){ int i = 0; for(String tkey : rankList){ for(Map.Entry<String[], int[]> entryt : map.entrySet()){ if(Arrays.toString(entryt.getKey()).contains(tkey)){ System.out.println("전교 " + ++i +"등 : " + entryt.getKey()[1] + ", 학번 : " + entryt.getKey()[0] + ", 영어 점수 : " + entryt.getValue()[0] + ", 수학 점수 : " + entryt.getValue()[1] + "평균 점수 : " + entryt.getValue()[2]); break; } } } }else{ System.out.println("잘못 입력하셨습니다."); } } static void menu3(List<Integer> math, List<Integer> english, Scanner s){ System.out.println("\n과목별 통계 출력창 입니다."); System.out.println("1. 영어"); System.out.println("2. 수학"); System.out.print("과목 선택 : "); int ch = s.nextInt(); if(ch == 1){ int sum = 0; System.out.println("\n수학 과목에 대한 통계입니다."); System.out.println("최고 점수 : " + math.get(math.size() - 1)); System.out.println("최저 점수 : " + math.get(0)); for(int i = 0; i < math.size(); i++){ sum = sum + (int)math.get(i); } System.out.println("평균 점수 : " + sum/math.size()+"\n"); }else if(ch == 2){ int sum = 0; System.out.println("\n영어 과목에 대한 통계입니다."); System.out.println("최고 점수 : " + english.get(english.size() - 1)); System.out.println("최저 점수 : " + english.get(0)); for(int i = 0; i < english.size(); i++){ sum = sum + (int)english.get(i); } System.out.println("평균 점수 : " + sum/english.size()+"\n"); }else{ System.out.println("잘못 입력하셨습니다.\n"); } } }
728x90반응형'JAVA' 카테고리의 다른 글
Java로 숫자야구 게임 만들기 (0) 2022.12.01 Java Scanner 대신 BufferedReader 사용해보기 (0) 2022.11.30 [자바의 정석] 날짜와 시간, 형식화 정리 (0) 2022.10.25 [자바의 정석] Object, String, StringBuffer 클래스 정리 (2) 2022.10.21 [자바의 정석] 예외처리 (0) 2022.10.19 - 성적 입력