비트교육_단기과정
1주차 주말과제 성적관리
- -
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Day2 { static String[] Subject_name = { "학번", "국어", "영어", "수학", "총점" }; static int[][][] score;// 몇반,어떤학생의,어떤과목의점수? static String[][] name; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int std_total_num = 50; System.out.print("반의 개수는 몇개입니까? : ");// 반 입력 int cc = sc.nextInt();// 반 개수 name = new String[cc][std_total_num]; // 반 수, 학생 이름 score = new int[cc][std_total_num][Subject_name.length];// 몇반,어떤학생의,어떤과목의점수? int[] nc = new int[std_total_num];// 각반의 학생수 int[][] full_std = new int[cc * std_total_num][3]; // 반,학번,총점 int std_count = 0; // 현재 학생 총 인원 while (true) { System.out.print("1.입력 2.출력 3.검색 4.종료 : "); int cc_opt = sc.nextInt(); switch (cc_opt) { case 1: System.out.print("몇 반에 입력할 것입니까? : "); int temp = sc.nextInt(); int cl_num = temp - 1; // 현재 반 System.out.print(temp + "반에 입력할 학생의 이름은 무엇입니까? : "); String std_name = sc.next(); name[temp - 1][nc[cl_num]] = std_name; // ex)1반이면 name[0][nc[0]] score[cl_num][nc[cl_num]][0] = nc[cl_num]; // 학번 부여 for (int i = 1; i < Subject_name.length - 1; i++) { System.out.print(Subject_name[i] + "점수 : "); score[cl_num][nc[cl_num]][i] = sc.nextInt(); score[cl_num][nc[cl_num]][score[cl_num][nc[cl_num]].length - 1] += score[cl_num][nc[cl_num]][i]; // 총점 } full_std[std_count][0] = temp; // 반 인 full_std[std_count][1] = nc[cl_num]; // 반내 학번 번호 full_std[std_count][2] = score[cl_num][nc[cl_num]][score[cl_num][nc[cl_num]].length - 1]; // 총점 nc[cl_num]++; std_count++; break; case 2: System.out.print("전체 학생 출력(성적순) => 1번 반 별로 학생 출력(성적순) => 2번 : "); int case2_opt = sc.nextInt(); switch (case2_opt) { case 1:// 전체 학생 출력 Arrays.sort(full_std, new Comparator<int[]>() {// 전체 학생에 대하여 총점순으로 배열 정렬 @Override public int compare(int[] o1, int[] o2) { return o2[2] - o1[2]; } }); for (int h = 0; h < full_std.length; h++) { // 천체학생수 만큼 반복 if (full_std[h][0] == 0) break; printScore(full_std[h][0] - 1, full_std[h][1]);// 반 과 학번을 값으로 넘김 } break; case 2: // 반별로 학생 출력 System.out.print("어떤 반을 출력하시겠습니까? : "); int _classnum_2 = sc.nextInt(); _classnum_2--; // 1반을 출력하겠다하면 score 첫 배열의 인덱스값으로 0이 들어가야하기떄문에 --연산을 함 for (int i = 0; i < name.length; i++) { Arrays.sort(score[i], new Comparator<int[]>() {// 반별 성적순으로 배열 정렬 @Override public int compare(int[] o1, int[] o2) { return o2[Subject_name.length - 1] - o1[Subject_name.length - 1]; } }); } for (int k = 0; k < nc[_classnum_2]; k++) {// 학생수 만큼 반복문 printScore(_classnum_2, k); } break; default: System.out.println("잘못입력하셨습니다 다시 입력하세요"); break; } break; case 3: System.out.print("이름으로 검섁 => 1번 |||| 성적으로 검색 => 2번 : "); int case3_opt = sc.nextInt(); switch (case3_opt) { case 1: System.out.print("이름을 입력하시오 : "); String case3_1_name = sc.next(); for (int i = 0; i < name.length; i++) {// i = 반 for (int j = 0; j < name[i].length; j++) {// j = 학생 수 if (name[i][j] != null) { if (name[i][j].equals(case3_1_name)) {// equals 사용시 null값이랑 비교하면 nullpointexception // 발생하기에 위에서 먼저 null값인지 확인 printName(i, j); } } } } break; case 2: System.out.print("1. 국어 2. 영어 3. 수학 4. 총점 : "); int case3_2_subName = sc.nextInt(); System.out.print("커트라인을 입력하시오 : "); int case3_2_subGrade = sc.nextInt(); for (int i = 0; i < name.length; i++) { for (int j = 0; j < name[i].length; j++) { if (score[i][j][case3_2_subName] >= case3_2_subGrade) { printScore(i, j); } } } break; default: System.out.println("잘못입력하셨습니다 다시 입력하세요"); break; } break; case 4: System.out.println("프로그램을 종료합니다"); System.exit(-1); break; default: System.out.println("잘못입력하셨습니다 다시 입력하세요"); break; } } } public static void printScore(int i, int j) { for (int k = 0; k < Subject_name.length; k++) { if (k == 0) {// 이름 출력 System.out.print(i + 1 + "반 => " + "이름 : " + name[i][score[i][j][0]]); continue; } System.out.print(", " + Subject_name[k] + " : " + score[i][j][k]);// 과목 점수 출력 if (k == score[i][j].length - 1) {// 평균출력 System.out.println(", 평균 : " + score[i][j][k] / (float) (Subject_name.length - 2)); } } } public static void printName(int i, int j) { for (int k = 0; k < Subject_name.length; k++) { if (k == 0) {// 이름 출력 System.out.print(i + 1 + "반 => " + "이름 : " + name[i][j]);// 반 학번 continue; } System.out.print(", " + Subject_name[k] + " : " + score[i][j][k]);// 과목 점수 출력 if (k == score[i][j].length - 1) {// 평균출력 System.out.println(", 평균 : " + score[i][j][k] / (float) (Subject_name.length - 2)); } } } } | cs |
'비트교육_단기과정' 카테고리의 다른 글
다수 성적 관리 프로그램(클래스 활용) (0) | 2022.06.28 |
---|---|
사칙연산계산기(모듈화) (0) | 2022.06.27 |
주말 과제 (0) | 2022.06.24 |
n반 n명의 성적처리 프로그램 (0) | 2022.06.24 |
3반 3명의 성적처리 프로그램 (0) | 2022.06.24 |
Contents
소중한 공감 감사합니다