NBC Management - 1

이재현·2024년 8월 4일

Project

목록 보기
3/5

🩵 프로젝트 설명

내일 배움 캠프 수강생들에 대한 정보를 관리하는 프로그램이다.

일반적으로는 수강생들의 정보와 점수 정보를 관리하는 프로그램으로, 자바의 기초를 다시 한번 복습한다는 느낌으로 진행할 예정이다.




🩵 기능 설명

💙 전반적인 기능 설명

전반적인 기능은 다음과 같다.

⭐ 필수 요구사항

  1. 수강생 관리
    수강생 정보 등록 (수강생의 고유 번호는 중복 불가)
    수강생 목록 조회 (형식은 자유)

  2. 점수 관리
    수강생의 과목별 시험 회차 및 점수 등록
    수강생의 과목별 회차 점수 수정
    수강생의 특정 과목 회차별 등급을 조회

⭐ 추가 요구사항

  1. 수강생 관리
    수강생 정보 수정
    상태별 수강생 목록 조회
    수강생 기록 삭제 (점수 기록까지 전)

  2. 점수 관리
    수강생의 과목별 평균 등급 조회
    특정 상태 수강생들의 필수 과목 평균 등급 조회




💙 역할 분담

팀프로젝트이기 때문에, 다음과 같이 기능을 5가지로 나눴다.

  1. 메인
  2. 등록
  3. 조회
  4. 수정
  5. 데이터

이 중 내가 맡게된 파트는 1. 메인 부분이다.

메인에서는 주로 콘솔에 출력되는 부분, 메뉴 기능, 각 기능 호출, exception 문제 등을 구현하려고 한다.




🩵 기능 구현

1. 메뉴 작성

메뉴는 가시성을 위해서 다음과 같은 형태로 작성했다.

public static void displayMenu_Main() {
        System.out.println("\t=========================================");
        System.out.println("\t=         NBC management system         =");
        System.out.println("\t=========================================");
        System.out.println("\t=        What do you want to do?        =");
        System.out.println("\t=---------------------------------------=");
        System.out.println("\t=                                       =");
        System.out.println("\t=         [1] Student Management        =");
        System.out.println("\t=         [2] Score Management          =");
        System.out.println("\t=         [3] Done                      =");
        System.out.println("\t=                                       =");
        System.out.println("\t=---------------------------------------=\n");
 }

\t를 활용하여 간격을 일정하게 맞춰주고 기호들로 틀을 잡아 선택지를 명확하게 보여주려 했다.
사실 중요한 부분은 아니라 예시로 하나만 보여주고 넘어가겠다.

보면 알다시피, displayMenu_Main() 의 형태로 되어있는데, 이는 main() 부분을 최대한 깔끔하게 남겨놓기 위해서 함수형태로 처리해서 뒤로 빼놓은 것이다.

public class Main {

    private static Scanner scanner = new Scanner(System.in);


    public static void main(String[] args) {
        List<StudentData> students = new ArrayList();
        Inquiry inquiry=new Inquiry();
        StudentData student;


        int choice;
        String stop_keyword = "";

        do {

            // 메인 메뉴 제공 및 선택값 받기
            displayMenu_Main();
            choice = scanner.nextInt();

            // 선택값에 대한 함수 실행 / 1. 학생 관리 / 2. 점수 관리 / 3. 종료 /
            switch(choice) {
                case 1:
                    managementStudentInfo();
                    break;
                case 2:
                    managementScoreInfo();
                    break;
                case 3:
                    System.out.println("Terminate Management Program.");
                    stop_keyword = "exit";
                    break;
                default:
                    System.out.println("Is not a valid choice.\nInput right choice again.\n");
            }


        } while(!stop_keyword.equals("exit"));

    }

2. Manager Class

위에서 선택지에 따른 기능을 수행하기 위한 메서드들을 모아놓기 위해서 별도로 Manager Class를 작성했다.

public abstract class Manager {

    protected List<String[]> dataList;

    abstract void addData();

    abstract void inquiryData();

    abstract void modifyData();

}

추상클래스로 구현한 뒤에 상속을 통해 각각 StudentManager , ScoreManager 자식클래스를 생성했다.

자식클래스는 다른 팀원이 구현한 Add, Inquiry, Modify 클래스의 메서드들을 호출해 사용하는 메서드들을 작성할 예정이다.




🩵 추가 목표

여기까지만 해도 역할은 다했지만, 추가적으로 file에 별도로 데이터를 저장해서 프로그램을 시작할 때 기존에 등록하거나 수정했던 정보들을 불러올 수 있게 하려고 한다.

0개의 댓글