개발/Java
자바 미니 솔루션 (1) - 학생 관리 시스템
멍냐옹2
2023. 2. 21. 16:53
반응형
Git : https://github.com/dddddni/StudentManage
자바 강의 다 듣고 까먹지 않게 흔한 학생 관리 시스템을 구현했다.
ArrayList만을 이용해서 만들었고 추후 수정하면서 개선해나갈 예정이다
클래스
1) 교수
package Entity;
public class Professor {
public Professor(String name, String subject, int number) {
this.name = name;
this.subject = subject;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
private String name;
private String subject;
private int number;
}
2) 학생
package Entity;
import java.util.ArrayList;
import java.util.HashMap;
public class Student {
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getNumber() {
return number;
}
public ArrayList<Subject> getSubjects() {
return subjects;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setNumber(int number) {
this.number = number;
}
public void setSubjects(ArrayList<Subject> subjects) {
this.subjects = subjects;
}
private String name;
private int age;
private int number;
private ArrayList<Subject> subjects;
public Student(String name, int age, int number, ArrayList<Subject> subjects) {
this.name = name;
this.age = age;
this.number = number;
this.subjects = subjects;
}
}
3) 과목
package Entity;
public class Subject {
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public Subject(String subject, String grade) {
this.subject = subject;
this.grade = grade;
}
private String subject;
public Subject(String subject) {
this.subject = subject;
}
private String grade;
}
Main 메소드
import Entity.Professor;
import Entity.Student;
import Entity.Subject;
import java.lang.reflect.Array;
import java.util.*;
public class Main {
public static void main(String[] args) throws NotExistCode {
// 학생 List 생성
ArrayList<Student> studentArrayList = new ArrayList<>();
studentArrayList.add(new Student("김서현", 26, 1000, null));
studentArrayList.add(new Student("김민지", 20, 1001, null));
studentArrayList.add(new Student("강해린", 23, 1002, null));
// 교수 List 생성
ArrayList<Professor> professorArrayList = new ArrayList<>();
professorArrayList.add(new Professor("팜하니", "베트남어", 2000));
professorArrayList.add(new Professor("다니엘", "영어" , 2001));
professorArrayList.add(new Professor("이혜인", "한국어" , 2002));
Scanner sc = new Scanner(System.in);
// 계속 조회 및 데이터 추가가 가능하게 while true로 처리함.
// 잘못된 코드 입력시 exception 발생하면서 종료 됨.
while(true){
System.out.println("교직원/학생 코드를 입력해 주세요");
int number = sc.nextInt();
Professor loginProfessor = null;
Student loginStudent = null;
// 학생 검색
for (Student s : studentArrayList) {
if (number == s.getNumber()) {
loginStudent = new Student(s.getName(), s.getAge(), s.getNumber(), s.getSubjects());
}
}
// 교수 검색
for (Professor s : professorArrayList) {
if (number == s.getNumber()) {
loginProfessor = new Professor(s.getName(), s.getSubject(), s.getNumber());
}
}
// 존재 하지 않는 코드
if(loginProfessor != null){
System.out.println(loginProfessor.getName() + "교수님, 환영합니다.");
}else if (loginStudent != null){
System.out.println(loginStudent.getName() + "학우님, 환영합니다.");
}else {
throw new NotExistCode("존재하지 않는 코드 입니다.");
}
// 로그인 한 경우
// 학생 : 성적 정보 조회
// 교수 : 담당 과목 점수 등록
if(loginProfessor != null){
System.out.println("점수를 입력할 학생이름을 입력해 주세요");
String student = sc.next();
System.out.println("과목의 등급을 입력해 주세요");
String grade = sc.next();
// 데이터 넣을 학생 정보 조회
for (Student s : studentArrayList) {
if (student.equals(s.getName())) {
if (s.getSubjects() == null) {
s.setSubjects(new ArrayList<>());
System.out.println("과목 정보 생성");
}
ArrayList<Subject> subjects = s.getSubjects();
subjects.add(new Subject(loginProfessor.getSubject(), grade));
System.out.println(student + "성적 입력 완료");
}
}
}else if (loginStudent != null){
System.out.println(loginStudent.getName() + "님의 기본정보");
System.out.println("====================================");
System.out.println("이름 : " + loginStudent.getName());
System.out.println("나이 : " + loginStudent.getAge());
System.out.println("학번 : " + loginStudent.getNumber());
System.out.println("====================================");
System.out.println(loginStudent.getName() + "님의 성적정보");
System.out.println("====================================");
if(loginStudent.getSubjects() == null){
System.out.println("성적 정보가 존재하지 않습니다.");
}else{
for (Subject s : loginStudent.getSubjects()) {
System.out.println(s.getSubject() + " 과목의 성적은 " + s.getGrade());
}
}
System.out.println("====================================");
}
}
}
}
class NotExistCode extends Exception{
public NotExistCode(String message) {
super(message);
}
}
실행 화면
1) 성적정보가 없는 상태에서 학생 조회

2) 교수님이 성적 정보 입력

2-1) 성적 입력 후 조회

3) 없는 코드로 오류 발생 후 종료

반응형