JAVA

[Java] 클래스를 이용한 간단한 성적관리 프로그램

메가구글 2023. 4. 4. 17:03

1. 문제 

객체 배열을 사용하여 n명 학생의 성적을 국어, 수학, 영어에 대해 받아서 성적을 처리하는 프로그램을작성하시오.

사용자에게 이름, 국어, 수학, 영어를 입력받아서 처리하시오.

 

2. 코드

import java.util.Scanner;

class Student{
	String name;
	int math;
	int english;
	int korean;
	
	public Student(String name,int math,int english,int korean){
		this.name = name;
		this.math=math;
		this.english=english;
		this.korean=korean;
	}
	
	public double SumOfGrade(){
		return math+korean+english;
	}
	public double Average(){
	
		return (math+korean+english)/3;
	}

}

public class ClassGrade {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int studentNum = 0; //입력받을 학생 수
		
		Scanner scanner = new Scanner(System.in); //학생정보 스캐너
		Scanner sc = new Scanner(System.in);      //학생수 스캐너
		
		System.out.println("학생 수를 입력해주세요");
		studentNum = sc.nextInt();
		
		System.out.println("이름 수학 영어 국어 순으로 (홍길동 100 100 100)과 같이 입력하시오");
		Student [] student = new Student[studentNum]; //학생수만큼 Student 객체 생성
		
		//이름, 성적을 Scanner로 입력받는다.
		for(int i=0;i<student.length;i++){
			String name = scanner.next();
			int math = scanner.nextInt();
			int english = scanner.nextInt();
			int korean = scanner.nextInt();
			
			student[i] = new Student(name,math,english,korean); //student에 값 넘겨주기
		}
		
		System.out.println("\t"+"\t"+"##성적표##");
		System.out.println("==============================================");
		System.out.println("이름"+"\t"+"수학"+"\t"+"영어"+"\t"+"국어"+"\t"+"총점"+"\t"+"평균");
		System.out.println("==============================================");
		
		for(int i=0;i<student.length;i++)
		{	
			System.out.print(student[i].name +"\t"+student[i].math +"\t"+student[i].english +"\t"+student[i].korean+"\t");
			System.out.print(student[i].SumOfGrade()+"\t");
			System.out.println(student[i].Average());
		
		}
		System.out.println("==============================================");
	
		scanner.close();
		sc.close();
	}//end of main

}

 

3. 코드 설명

 

Student 클래스

  • 인스턴스 변수로 name, math, english, korean을 가진다.
  • 생성자 public Student(String name,int math,int english,int korean)에서 값을 가져와 인스턴스 변수를 초기화시킨다.
  • 인스턴스 변수의 값을 가져왔다면 SumofGrade나 Average를 이용해 합계와 평균을 계산한다.

 

ClassGrade 클래스 (main 함수)

  • studentNum은 입력받을 학생 수이다.
  • Scanner를 이용해 입력받을 정보를 얻는다.
  • studentNum의 정보를 얻었다면 Student [] student = new Student[studentNum]를 통해 학생 수 만큼 객체를 생성한다.
  • 그러면 for문은 학생수만큼 돌게 된다. 그게 for(int i=0;i<student.length;i++)이 부분이다. (대략 43줄쯤)
  • 값을 입력해주고 student[i] = new Student(name,math,english,korean);를 통해 각 객체에 생성자로 하여금 초기화하게 한다.
  • 각 객체 배열에 데이터가 들어갔다면 이를 이용한 메소드 합계, 평균을 이용해 프로그램을 완성한다.

 

 

여기서 "\t"은 탭으로 탭만큼 띄워쓰기를 하게 한다.

그리고 Scanner를 사용했다면 마지막에 닫아주는걸 잊지 말자.