개발/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) 없는 코드로 오류 발생 후 종료

반응형