본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 10일차 -21

by oncerun 2020. 3. 10.
반응형

** 성적관리 프로그램 ver 0.1 **
      
      1. 성적입력
      2. 성적출력
      3. 종료
      > _1
      
      // 1 메뉴를 선택했을 경우
      <1 번째 학생의 성적을 입력하세요>
      국어성적 : _
      영어성적 : _
      수학성적 : _
      
      <2 번째 학생의 성적을 입력하세요>
      국어성적 : _
      영어성적 : _
      수학성적 : _
      
      <3 번째 학생의 성적을 입력하세요>
      국어성적 : _
      영어성적 : _
      수학성적 : _
      
      // 2번 메뉴를 선택했을 경우
      1 - 국어:30, 영어:40, 수학:80, 총점:150, 평균 50.00
      2 - 국어:50, 영어:60, 수학:100, 총점:   , 평균 
      3 - 국어:90, 영어:80, 수학:95, 총점:   , 평균:
         
      과목별 평균 : 국어:40.33, 영어:55.55, 수학:60.35

 

package Ex1struct;

import java.util.Scanner;

public class Ex17성적관리프록램 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		boolean loop = true;

		final int INPUT = 1; // 상수형 변수를 사용하므로써
		final int OUTPUT = 2; // switch문의 가독성을 높임
		final int EXIT = 3;

		Exam[] exams = new Exam[3]; // 클래스배열 3개를 만들고
		for (int i = 0; i < 3; i++)
			exams[i] = new Exam(); // 클래스를 통해 객체를 3개만들고

		EXIT: while (loop) {

			System.out.println("** 성적관리 프로그램 ver 0.1 **");
			System.out.println("1. 성적입력");
			System.out.println("2. 성적출력");
			System.out.println("3. 종료");
			System.out.println(">");

			int menu = scan.nextInt();// ?

			if (menu > 3 || menu < 1) {
				System.out.println("1~3까지의 숫자를 입력해주세요");
				System.out.println();
				continue;
			}
			switch (menu) {
			case INPUT:
				for (int i = 0; i < 3; i++) {
					System.out.printf("<%d 번째 학생의 성적을 입력하세요>\n", i + 1);
					System.out.println("국어성적 : ");
					exams[i].kor = scan.nextInt();
					System.out.println("영어성적 : ");
					exams[i].eng = scan.nextInt();
					System.out.println("수학성적 : ");
					exams[i].math = scan.nextInt();

					int korScore = exams[i].kor; // 안이뻐서
					int engScore = exams[i].eng;
					int mathScore = exams[i].math;

					if (korScore > 100 || korScore < 0) {
						i--;
						System.out.println("0~100범위안에서 입력해주세요");
					} 
					else if (engScore > 100 || engScore < 0) {
						i--;
						System.out.println("0~100범위안에서 입력해주세요");
					} 
					else if (mathScore > 100 || mathScore < 0) {
						i--;
					System.out.println("0~100범위안에서 입력해주세요");
					}
				}
				break;
			case OUTPUT:
				// 평균과 총점은 OUTPUT에서만 사용되는 변수이므로 여기에서 선언.

				for (int i = 0; i < 3; i++) {
					int total = exams[i].kor + exams[i].eng + exams[i].math;
					float average = (exams[i].kor + exams[i].eng + exams[i].math) / 3.0f;

					System.out.printf("%d - 국어: %d, 영어: %d, 수학:%d, 총점:%d, 평균: %5.2f\n"
							, i + 1, exams[i].kor,exams[i].eng, exams[i].math, total, average);
				}

				// 과목별 평균
				float korAverage = (exams[0].kor + exams[1].kor + exams[2].kor) / 3.0f;
				float engAverage = (exams[0].eng + exams[1].eng + exams[2].eng) / 3.0f;
				float mathAverage = (exams[0].math + exams[1].math + exams[2].math) / 3.0f;
				System.out.printf("과목별 평균 : 국어:%5.2f, 영어:%5.2f, 수학:%5.2f\n"
						                , korAverage, engAverage, mathAverage);
				break;
			case EXIT:
				System.out.println("국민 93657105757 유성일");
				break EXIT;

			}//switch
		}//while

	}// main
}// class
반응형

댓글