본문 바로가기
Project/Study | etc

성적 관리 프로그램

by 코젼 2022. 6. 23.
728x90
반응형

📂프로젝트 파일

ScoreProgram.zip
0.00MB

💾소스코드

import java.util.Arrays;
import java.util.Scanner;

/*   9. 학생들의 C언어, 자바 성적을 저장하고 평균과 석차를 출력하는 성적관리 프로그램을 만든다.
   저장할 데이터 : 이름(String), C언어 성적(int), 자바 성적(int), 평균(float), 석차(int)
   학급 인원 : 5명
   메뉴 1. 데이터 입력 : 학생별 이름과 C언어와 자바 성적을 입력
      2. 데이터 출력 : 저장된 모든 학생의 이름과 성적을 출력
      3. 이름 입력하면 과목별 성적과 평균 및 석차 출력
      4. 성적순으로 이름 출력 */

public class StudentScore {

	static final int MAX_NUM = 5;
	static String[] name = new String[MAX_NUM];

	static int[][] score = new int[MAX_NUM][2];

	static int[] rank = new int[MAX_NUM];
	static int[] sum = new int[MAX_NUM];
	static float[] average = new float[MAX_NUM];

	public static void main(String[] args) {
		System.out.println("성적 관리 프로그램을 시작합니다.");
		selectMenu();
	}

	static void selectMenu() {

		System.out.println("\n메뉴 조회");
		System.out.println("1. 데이터 입력" + "\n2. 데이터 출력" + "\n3. 이름검색" + "\n4. 성적별 조회");
		System.out.print("\n메뉴 선택 >> ");

		// 메뉴 버튼
		Scanner scanner = new Scanner(System.in);
		int MenuNumber = scanner.nextInt();
		int i = 0, j = 0;

		switch (MenuNumber) {
//      1. 데이터 입력 : 학생별 이름과 C언어와 자바 성적을 입력
		case 1:
			System.out.println("\n메뉴 1 이동");

			// 성적 입력
			for (i = 0; i < score.length; i++) {
				System.out.println("************************");
				System.out.print("이름 >>> ");
				name[i] = scanner.next();

				System.out.print("C언어 성적, java 성적 >>> ");
				for (j = 0; j < score[i].length; j++) {
					score[i][j] = scanner.nextInt();
				}
			}
			
			for (i = 0; i < rank.length; i++) {
				rank[i] = 1;
			}

			for (i = 0; i < score.length; i++) {
				sum[i] = 0;
				// 성적
				for (j = 0; j < score[i].length; j++) {
					
					sum[i] += score[i][j];
				}

				average[i] = (float) sum[i] / score[i].length;
			}
			
			// 석차
			for (i = 0; i < average.length; i++) {

				for (j = 0; j < average.length; j++) {

					if (average[i] < average[j]) {

						rank[i]++;

					}

				}
			}
			selectMenu();
			break;

//      2. 데이터 출력 : 저장된 모든 학생의 이름과 성적을 출력
		case 2:
			System.out.println("\n메뉴 2 이동");
			System.out.println("*****************************");
			System.out.println("이름\t  C성적\t\tJAVA성적");
			for (i = 0; i < score.length; i++) {
				System.out.print(name[i]);
				for (j = 0; j < score[i].length; j++) {
					System.out.print("\t  " + score[i][j] + "\t");
				}
				System.out.println();
			}
			selectMenu();
			break;

//      3. 이름 입력하면 과목별 성적과 평균 및 석차 출력
		case 3:
			System.out.println("\n메뉴 3 이동");
			System.out.println("**************************************");

			System.out.print("성적을 검색하려면 이름을 적으세요>> ");
			Scanner sc = new Scanner(System.in);
			String nameLookup = sc.next();

			for (i = 0; i < score.length; i++) {
				if (name[i].equals(nameLookup)) {
					System.out.println("이름\tC성적\tJAVA성적\t평균\t석차");
					System.out.print(name[i] + "\t");

					for (j = 0; j < score[i].length; j++) {
						System.out.print(score[i][j] + "\t");
					}
					System.out.print(average[i] + "\t");
					System.out.print(rank[i]);

					break;

				}
			}

			System.out.println("");

			selectMenu();
			break;
			
//		4. 성적순으로 이름 출력
		case 4:
			System.out.println("\n메뉴 4 이동");
			System.out.println("**************************************");
			
			System.out.println("성적순 이름 조회");
			String[] arr = new String[rank.length];
			
			for(i=0; i<rank.length; i++) {
				for(j=0; j<rank.length; j++) {
					if(rank[j]== (i+1)) {
						arr[i] = name[j];
					}
				}
					
			}
			
			System.out.println(Arrays.toString(arr));
			
			selectMenu();
			break;

		default:
			System.out.println("error");
		}
	}
}

💬실행 결과

728x90
반응형

댓글