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 쿼리를 위한 상수모음
 

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

프로젝트 후...

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