728x90
이번 포스트에서는 Java를 사용하여 학생들의 성적을 관리하는 프로그램을 작성해보겠습니다. 프로그램은 사용자로부터 학생의 수와 각 학생의 정보(번호, 이름, 국어, 수학, 영어 성적)를 입력받고, 이를 출력하는 방식으로 진행됩니다. 이 예제는 **객체 지향 프로그래밍(OOP)**의 개념을 활용하여 학생 정보를 관리할 수 있습니다.
1. 요구 사항
- 사용자로부터 학생 수를 입력받고,
- 각 학생의 번호, 이름, 국어, 수학, 영어 점수를 입력받습니다.
- 최종적으로 학생들의 정보를 출력합니다.
2. 클래스 설계
이 프로그램을 작성하기 위해서는 두 가지 클래스가 필요합니다:
- Student 클래스: 학생의 정보를 저장하는 클래스
- 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
'Java' 카테고리의 다른 글
[Java] 상속 예제(과일 구매 프로그램) (0) | 2022.04.13 |
---|---|
[Java] 상속 (0) | 2022.04.13 |
[Java] 절차 지향 프로그램 vs 객체 지향 프로그래밍 (0) | 2022.04.12 |
[Java] 메소드 예제(사칙연산 메소드 작성) (0) | 2022.04.12 |
[Java] 메소드의 중요성 (0) | 2022.04.12 |