본문 바로가기

Java

[Java] 객체 지향 프로그래밍 - 학생 성적 관리 시스템

728x90

이번 포스트에서는 Java를 사용하여 학생들의 성적을 관리하는 프로그램을 작성해보겠습니다. 프로그램은 사용자로부터 학생의 수와 각 학생의 정보(번호, 이름, 국어, 수학, 영어 성적)를 입력받고, 이를 출력하는 방식으로 진행됩니다. 이 예제는 **객체 지향 프로그래밍(OOP)**의 개념을 활용하여 학생 정보를 관리할 수 있습니다.


1. 요구 사항

  • 사용자로부터 학생 수를 입력받고,
  • 각 학생의 번호, 이름, 국어, 수학, 영어 점수를 입력받습니다.
  • 최종적으로 학생들의 정보를 출력합니다.

2. 클래스 설계

이 프로그램을 작성하기 위해서는 두 가지 클래스가 필요합니다:

  1. Student 클래스: 학생의 정보를 저장하는 클래스
  2. homework1 클래스: 학생 정보를 입력받고 출력하는 메인 클래스

Student 클래스

먼저, 학생의 정보를 담을 Student 클래스를 작성합니다. 이 클래스는 학생 번호, 이름, 국어 점수, 수학 점수, 영어 점수를 필드로 가지고 있으며, 각 필드에 접근하기 위한 getter, setter 메소드와 학생 정보를 출력하는 toString 메소드를 구현합니다.

public class Student {
    private int no;        // 학생 번호
    private String name;   // 학생 이름
    private int kor;       // 국어 점수
    private int math;      // 수학 점수
    private int eng;       // 영어 점수

    // 기본 생성자
    public Student() {}

    // 매개변수가 있는 생성자
    public Student(int no, String name, int kor, int math, int eng) {
        this.no = no;
        this.name = name;
        this.kor = kor;
        this.math = math;
        this.eng = eng;
    }

    // getter, setter 메소드들
    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getKor() {
        return kor;
    }

    public void setKor(int kor) {
        this.kor = kor;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEng() {
        return eng;
    }

    public void setEng(int eng) {
        this.eng = eng;
    }

    // toString() 메소드, 학생 정보를 출력할 때 사용
    @Override
    public String toString() {
        return "학생번호=" + no +
                ", 이름=" + name +
                ", 국어점수=" + kor +
                ", 수학점수=" + math +
                ", 영어점수=" + eng;
    }
}

 

StudentInfo클래스

다음으로, StudentInfo클래스에서는 사용자로부터 학생 수를 입력받고, 각 학생의 정보를 입력받는 기능을 구현합니다. 입력받은 정보를 Student 객체에 저장하고, 최종적으로 입력된 모든 학생 정보를 출력합니다.

import java.util.Scanner;

public class StudentInfo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 몇 명의 학생을 등록할지 입력 받음
        System.out.print("몇명의 학생을 등록할까요? : ");
        int num = sc.nextInt(); // 몇 명의 학생을 등록할 건지 입력받아 num에 저장

        // 학생 배열 생성
        Student[] students = new Student[num]; // 크기가 num인 배열 students를 생성
        for (int i = 0; i < students.length; i++) { // 배열의 크기 만큼 반복
            students[i] = new Student(); // 각각 객체를 생성

            // 각 정보를 입력받는다.
            System.out.print((i + 1) + "번째 학생의 번호를 입력하세요 : ");
            students[i].setNo(sc.nextInt());
            System.out.print((i + 1) + "번째 학생의 이름을 입력하세요 : ");
            students[i].setName(sc.next());
            System.out.print((i + 1) + "번째 학생의 국어점수를 입력하세요 : ");
            students[i].setKor(sc.nextInt());
            System.out.print((i + 1) + "번째 학생의 수학점수를 입력하세요 : ");
            students[i].setMath(sc.nextInt());
            System.out.print((i + 1) + "번째 학생의 영어점수를 입력하세요 : ");
            students[i].setEng(sc.nextInt());
        }

        // 입력 받은 학생 정보 출력
        System.out.println("\n학생 성적 정보:");
        for (Student s : students) { // 향상된 for문. Student 타입의 s변수를 students배열 크기만큼 반복하면서
            System.out.println(s); // 학생 정보를 s.toString()을 통해 출력시켜줌. toString() 생략 가능
        }
    }
}

 

 

728x90