본문 바로가기

JAVA

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

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를 사용했다면 마지막에 닫아주는걸 잊지 말자.