Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 접근제어자
- 미국주식
- 자바
- object
- 인플레이션
- 백준
- 주린이
- 금리인하
- 그리디 알고리즘
- 제태크
- 프로그래머스
- 객체지향
- XLF
- 알고리즘
- S&P500
- StringBuffer
- 기업분석
- 무디스
- etf
- FCF
- Java
- 잉여현금흐름
- 금리인상
- javascript
- mco
- 다형성
- 오버라이딩
- 배당성장
- 주식
- 현금흐름표
Archives
- Today
- Total
오늘의하루
[Java] 성적 조회 프로그램 만들기 본문
지금까지 배운 내용으로 만들어본 성적 조회 프로그램
필요한 기능
- 성적 입력
- 학번, 이름, 영어 점수, 수학 점수를 입력받는다.
- 성적 조회
- 개인의 성적을 조회한다.
- 학번, 이름, 영어 성적, 수학 성적, 평균 점수, 전교 등수를 출력한다.
- 전교생의 성적을 조회한다.
- 전교 등수대로 출력된다.
- 전교 등수, 이름, 학번, 영어 점수, 수학 점수, 평균 점수를 출력한다.
- 개인의 성적을 조회한다.
- 과목별 통계
- 과목명, 최고 점수, 최저 점수, 평균 점수를 출력한다.
- 프로그램을 종료
소스코드
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");
}
}
}
'JAVA' 카테고리의 다른 글
Java로 숫자야구 게임 만들기 (0) | 2022.12.01 |
---|---|
Java Scanner 대신 BufferedReader 사용해보기 (0) | 2022.11.30 |
[자바의 정석] 날짜와 시간, 형식화 정리 (0) | 2022.10.25 |
[자바의 정석] Object, String, StringBuffer 클래스 정리 (0) | 2022.10.21 |
[자바의 정석] 예외처리 (0) | 2022.10.19 |
Comments