java

실습) 학생 관리 시스템

dalc3154 2025. 2. 25. 16:56
import java.util.ArrayList;

// 학생 관리 시스템

class Student {
	// 필드
	int studentId;// id
	String name;// 이름
	int age;// 나이
	String major;// 전공
	double gpa;// 학점
	
	// 메소드
	void printStudentInfo() {
		System.out.println("ID: " + studentId
				+ ", Name: " + name
				+ ", Age: " + age
				+ ", Major: " + major
				+ ", Gpa: " + gpa
				 );
	}
	
	void updateGoa(double newGpa) {
		this.gpa = newGpa;
	}
	
	// 생성자
	Student(){
		// 필드값 초기화
		this.studentId = 0;
		this.name = "";
		this.age = 0;
		this.major = "Undeclared";
		this.gpa = 0.0;
	}
	Student(int studentId, String name, int age, String major, double gpa) {
		this.studentId = studentId;
		this.name = name;
		this.age = age;
		this.major = major;
		this.gpa = gpa;
	}
	Student(int studentId, String name, int age) {
		this.studentId = studentId;
		this.name = name;
		this.age = age;
	}
}
// Java 클래스명은 파일 이름과 동일(대소문자까지)
// 하나의 파일에서 public 단위의 클래스는 한 개만 지정 가능
// public 클래스명은 파일명과 일치해야 한다
public class StudentManagementApp {
	
	static ArrayList<Student> studentList = new ArrayList<>();
	// static ArrayList<Integer> numberList = new ArrayList<>();
	
	// static 메소드
	// 인스턴스화 없이 클래스 자체에서 직접 호출
	// >> 메인 메소드 내부에서 다른 메소드 호출 시 반드시 해당 메소드는 static 이여야 함
	
	// 모든 학생 출력
	static void addStudent(int id, String name, int age, String major, double gpa) {
		Student student = new Student(id, name, age, major, gpa);
		studentList.add(student);// .add (리스트의 요소 타입과 일치한 데이터만 삽입 가능)
		// numberList.add(100);
		System.out.println("학생이 등록되었습니다");
	}
	
	// 학생 등록
	static void printAllStudents() {
		System.out.println("전체 학생 목록");
		for (Student student : studentList) {
			student.printStudentInfo();
		}	
	}
	
	//학생 검색: 해당 id를 사용하여 해당 학생의 정보를 출력
	static void findStudentById(int studentId) {
		for (Student student : studentList) {
			if (student.studentId == studentId) {
				student.printStudentInfo();
				return;// 메소드를 종료
			}
		}
		System.out.println("해당 id의 학생을 찾을 수 없습니다");
	}
	
	// 평점 업데이트: 학생 id를 사용하여 해당 학생의 평점을 업데이트
	// 매개변수: int studentId, double newGpa
	static void updateStudentGpa (int studentId, double newGpa) {
		for (Student student : studentList) {
			if (student.studentId == studentId) {
				student.updateGoa(newGpa);
				System.out.println("평점이 업데이트 되었습니다");
				return;
			}
		}
		System.out.println("해당 id의 학생을 찾을 수 없습니다");
	}
	
	// main 메소드
	// 프로그램의 진입점을 제공
	// public static void main(String[] args) 형식이여야만 실행 가능
	// JVM은 main 메소드가 없을 경우 해당 파일을 실행하지 못함
	public static void main(String[] args) {
//		Student student1 = new Student(1, "홍길동", 30, "슬립테크", 4.0);
//		Student student2 = new Student(2, "홍길동", 20, "슬립테크", 2.0);
//		Student student3 = new Student(3, "홍길동", 10, "슬립테크", 4.0);
//		Student student4 = new Student(4, "홍길동", 40, "슬립테크", 3.0);
//		
//		studentList.add(student1);
//		studentList.add(student2);
//		studentList.add(student3);
//		studentList.add(student4);
		
		// 학생 추가
		addStudent(1, "홍길동", 30, "슬립테크", 4.0);
		addStudent(2, "홍길동", 20, "슬립테크", 2.0);
		addStudent(3, "홍길동", 10, "슬립테크", 4.0);
		addStudent(4, "홍길동", 40, "슬립테크", 3.0);
		
		// 학생 조회(전체): 모든 학생 출력
		printAllStudents();
		
		// 학생 조회(단건)
		System.out.println("학생 조회(단건)");
		findStudentById(3);
		findStudentById(5);// 해당 id의 학생을 찾을 수 없습니다
		
		// 학생 평점 업데이트
		updateStudentGpa(1, 3.5);
		updateStudentGpa(2, 4.1);
		
		findStudentById(1);
		findStudentById(2);
	}
}