Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

학생관리 프로그램

자바 스탠다드 및 JDBC연동 교육후 한 팀 프로젝트

  3조 : 최규식, 김양군, 김흥섭, 변정훈, 오도현, 권성기

  ------------------------------------------------------

                        기능

  ------------------------------------------------------

       1. 학생 개인정보 간리

       2. 출석체크(지각 및 조퇴처리)

       3. 학생 성적 관리

       4. 벌금 부과

  ------------------------------------------------------

                          DB

  ------------------------------------------------------

       student - 메인 테이블, 학생 개인 정보 관리

                    필드 : ID  NOT NULL  VARCHAR2(15) PRIMARY KEY //회원 아이디

                             PASSWORD  NOT NULL  VARCHAR2(15)  //비밀번호

                             NAME  NOT NULL  VARCHAR2(15)  //이름

                             NO  NOT NULL  NUMBER(3)  //회원 등급 1:학생 2:관리자

                             ADDR     VARCHAR2(40)  //주소

                             BIRTHDAY     VARCHAR2(20)  //생년월일 (년/월/일)

       attend - 출석을 위한 테이블

                   필드 :  SEQ  NOT NULL  NUMBER(5) PRIMARY KEY // attend_seq 시퀀스 사용

                             ID  NOT NULL  VARCHAR2(15) FOREIGN KEY REFERENCE STUDENT //아이디

                             ATTEND     VARCHAR2(10)   // 출석체크, 출석하면 1, 아니면 0 or null

                             LATE     VARCHAR2(10)  //지각체크, 지각하면 1, 아니면 0 or null

                             EARLY     VARCHAR2(10)  //조퇴체크, 조퇴하면 1, 아니면 0 or null

                             FINISH     VARCHAR2(10)  //퇴근체크, 퇴근하면 1, 아니면 0 or null

                             ADATE     VARCHAR2(20)  //시간 기록 (월/일 시각:분)

        grade - 성적관리를 위한 테이블

                   필드 : SEQ  NOT NULL  NUMBER(10) PRIMARY KEY //grade_seq 시퀀스 사용

                            ID  NOT NULL  VARCHAR2(15) FOREIGN KEY REFERENCE STUDENT //아이디

                            GRADE     VARCHAR2(10)  //성적

                            SUBJECT     VARCHAR2(10)  //과목명

        penalty - 벌금 관리를 위한 테이블

                     필드 : SEQ  NOT NULL  NUMBER(5)  PRIMARY KEY //penalty_seq 시퀀스 사용

                              ID  NOT NULL  VARCHAR2(15) FOREIGN KEY REFERENCE STUDENT //아이디

                              AMOUNT     NUMBER(10)  //벌금 금액

                              WHY     VARCHAR2(20)  //벌금 부과 이유

                              PDATE     VARCHAR2(20)  //시간 기록 (월/일 시각:분)

  -----------------------------------------------------

                          클래스

  ------------------------------------------------------

     com.project.admin ->  AdminAttendControl //출석 수정

        AdminAttendSelect //출석 열람

        AdminControlMenu //관리(수정)메뉴 선택부

        AdminGradeControl //성적 수정

        AdminGradeSelect //성적 열람

        AdminMenu //로그인한 사용자가 관리자일때 호출되는 어드민 메인

        AdminPenaltyControl //벌금 수정

        AdminPenaltySelect //벌금 열람

        AdminSelectMenu //열람메뉴 선택부

        AdminStudentControl //학생정보 수정

        AdminPenaltySelect //학생정보 보기

    com.project.dao -> AbstractDao //드라이버로딩과 클로즈를 위한 추상클래스. 다른 DAO가 상속받음.

        AttendDao //attend 테이블에 대한 쿼리를 위한 DAO

        GradeDao //grade 테이블에 대한 쿼리를 위한 DAO

        PenaltyDao //penalty 테이블에 대한 쿼리를 위한 DAO

        StudentDao //student 테이블에 대한 쿼리를 위한 DAO

    com.project.dto -> AttendDto //attend 테이블을 위한 DTO

        GradeDto //grade 테이블을 위한 DTO

        PenaltyDto //penalty 테이블을 위한 DTO

        StudentDto //student 테이블을 위한 DTO

    com.project.main -> LogInProCess //로그인 및 회원가입 처리

        StudentTestMain //메인!!!!

        Users //로그인한 사용자가 학생일 경우

    com.project.util -> SceneUtil //메인에서 사용할 화면전환 상수모음

        StudentMethod //공통적으로 사용될 메서드 모음

        StudentUtil //DB 쿼리를 위한 상수모음

JDBC_Project.zip

  • 중간까지 주석열심히 달다가 다른 진도 쫓아가느라고 포기.
  • 정리된 소스가 아니라서 남이 보면 이해못할 가능성 높음.

프로젝트 후...

  • 팀프로젝트로 입사를 같이 할것이기 때문에 다른 조와 다르게 마인드맵 프로그램으로 모든 클래스와 메서드에 대한 이름과 반환값, 아규먼트를 2-3시간동안 작업해서 완료함.
  • 팀원들간 실력차이가 나는 관계로 미리 협의한대로 작성되지 않은 부분이 많아서 결국은 다시 일일이 보며 수정을 해야 했음!
  • 나름 초기에 모든 메서드를 정의한다고 생각했지만 의외로 빠진 부분도 많았고 아규먼트나 반환값에서 잘못된 부분도 상당부분이 있었음.
  • 역시 팀으로 하는 것은 쉽지 않다는 생각.
  • 마인드 맵으로 미리 모든 것을 정의한것은 잘 했다고 생각. 약간의 여유와 서로 의논의 시간이 있었다면 분업해서 해볼 수 있었을 거라고 생각됨.
  • 하지만 같은 얘기를 할때도 머릿속에 그리고 있는 생각이 서로 다른 경우가 많았고 그 결과 작성된 코드의 형태에서 많은 차이를 보이게 됨. 이런건 어떻게 해결해야 할지 잘 모르겠음.
  • 클래스를 나누어서 작성했지만 합쳐서 돌아갈수 있도록 하는 과정에서 결국은  전체소스를 보면서 버그없이 돌아갈 수 있도록 하기 위해 한사람이 수정작업을 해야해서 결과적으론 다시 한사람이 프로그램을 짜는 형태가 되어버림. 이것두 어떻게 해결해야 할지 잘 모르겠음.
Valid HTML5 Valid CSS WCAG 2.1 AA tested