본문 바로가기
자바과정/Java

Java 실습(한사람 성적처리:과목수 입력) - 5일차

by Parkej 2021. 2. 4.

// 이름 클래스

package Day5;

// 이름입력 데이터 클래스

public class NameStudent {
	
    private String name;
    
    // setter
    public void setName(String name) {
        this.name = name;
    }
    
    // getter    
    public String getName() {
        return name;
    }

}

 

// 과목 입력 클래스

package Day5;

// 과목 입력 데이터 클래스

public class Subject {

	private int []score; // 입력받을 과목 필드 선언
	private float avg;
	private int tot;

	//   private int tot;
	//   private float avg;

	// 과목은 사용자가 가져다 쓸거임

	public Subject() {
		
	}

	// 과목 수 선언
	public Subject(int a) {
		tot = 0;
		score = new int[a];
	}


	// 과목 연산
	public void setScore(int i, int score) {
		this.score[i] = score;
	}
	public int[] getScore() {
        return this.score;
    }
	
	// 총점
	public int getTotal() { 
		
		for(int i=0;i<score.length;i++) {
			tot += score[i];
		}
		return tot;
	}

	// 평균
	public float getAvg() {
		return (float)tot/getScore().length;
	}
}

 

// 메인 클래스

package Day5;

import java.util.Scanner;

public class StudentScoreMag {
	// 연산 담당 

	private NameStudent name; // name 타입을 쓴다. 대기상태
	private Subject sub;

	// 생성자 초기화 및 객체 생성
	// 오버로딩
	public StudentScoreMag() {
		name = new NameStudent(); 
		// name의 메소드를 이용하기 위한 객체 생성
	}
	public StudentScoreMag(int a) {
		sub = new Subject(a);
		// sub의 메소드를 이용하기 위한 객체 생성
	}

	// NameStudent 클래스 사용
	public void setName(String n) {
		this.name.setName(n);
	}
	public String getName() {
		return this.name.getName();
	}

	// main
	public static void main(String[] args) {
		char str;
		Scanner sc = new Scanner(System.in);
		StudentScoreMag ssm = new StudentScoreMag();
		// Name 객체 생성

		do {
			// 이름 입력
			System.out.print("학생 이름 : ");
			ssm.setName(sc.next());

			// 과목 수 입력
			System.out.print("과목 수 입력 : ");
			StudentScoreMag ssm1 = new StudentScoreMag(sc.nextInt());

			for(int i=0;i<ssm1.sub.getScore().length;i++) {
				System.out.printf("%d번 과목점수 입력 : ",i+1);
				ssm1.sub.setScore(i, sc.nextInt());
				// ssm1.sub를 통한 Subject 객체 접근
			}

			// 출력
			System.out.println("이름 : " + ssm.getName());
			for(int i=0;i<ssm1.sub.getScore().length;i++) {
				System.out.println((i+1)+"번 과목 점수 : " +ssm1.sub.getScore()[i]);
			}
			System.out.println("총점수 : "+ssm1.sub.getTotal());
			System.out.println("평균 : "+ssm1.sub.getAvg());



			System.out.println();
			System.out.print("Continue?(y/n) : ");        
			str = sc.next().charAt(0);
			if(str == 'n' || str == 'N') {
				System.out.println("End");
				break;
			}
		}while(str == 'y' || str == 'Y');

	}

}
반응형

댓글