본문 바로가기
개인프로젝트

[#Java] 개인프로젝트(수강관리 프로그램)

by dopal2 2020. 11. 18.
반응형

ClassManagement(0713).zip
0.10MB
수강관리 클래스별.zip
0.01MB
클래스다이어그램_V3.pptx
0.08MB

개요 : 2019년경 인턴생확을 할 때 실무를 하기 전 회사에서 객체지향과 MVC를 이해하라고 줬던 과제다.

어떻게 만들든 상관없다고 하셔서 그냥 GUI를 이용해서 만들었던 과제다.

처음 실행하면 마우스가 지나처야지 실행되는데 이건 수정하기 귀찮아서 그냥 이렇게 제출하고 말로 설명했던거 같다.(기능을 확인하는거였기 때문에 딱히 상관없었음)

 

각 기능들을 정의 한 부분이다. 아마 제출하기전에 이것저것 바뀐부분이 있어서 일정부분 다르게 정의된 것도 있을꺼다.

사용하려면 파일을 읽어오는 부분에서 경로를 수정해야 실행이 가능할 것이다.(fileread.java의 각각의 *.txt 파일)

이 프로젝트를 진행할때 DB는 사용할 필요없다고 하셔서 저장하는 부분은 모두 fileio를 이용하여 파일입출력으로 처리했다.

 


 

----------------------- main class -----------------------

학생 (Map) 생성

교직원 (Map) 생성

수업 (Map) 생성

성적 (Map) 생성

키값교환 (keyvalue)

------------------------ 인원 VO -----------------------

이름 (String)

연락처 (String)

이메일 (String)

------------------------ 학생 VO -----------------------

extends 인원VO

학번(key*) (int)

학년 (int)

성별 (String)

---------------------- 교직원 VO -----------------------

extends 인원VO

직원번호(key*) (int)

 

------------------------ 수업 VO -----------------------

수업명(key*) (String)

학년 (int)

담당교직원 (int -> 교직원VO.직원번호)

신청인원 (int)

정원 (int)

학기 (boolean) (기본값 true)

 

------------------------ 성적 VO -----------------------

난수(key*) (int)

학번 (int -> 학생Vo.학번)

수업 (String -> 수업VO.수업명)

성적(실수형)

 

---------------------- 등록 뷰 class -----------------------

구분 (button) (폼 호출방식)

- 학생

학번 (label, textfield)

이름 (lable, textfield)

연락처 (lable, textfield)

이메일 (lable, textfield)

학년 (lable, textfield)

성별 (lable, textfield)

취소 (button) (이전화면 -> login view)

등록 (button) (등록 class 호출, 학생VO에 입력정보를 전달)

 

- 교직원

직원번호 (label, textfield)

이름 (lable, textfield)

연락처 (lable, textfield)

이메일 (lable, textfield)

취소 (button) (이전화면 -> login view)

등록 (button) (등록 class 호출, 교직원VO에 입력정보를 전달)

 

------------------------ 등록 class -----------------------

- 학생 등록 메소드

1. 학번을 키값으로 학생Map에 저장된 값 확인

2. 저장된 값이 있을시 저장 실패(등록 뷰로 이동)

3. 저장된 값이 없을시 학생VO를 hashmap으로 저장

4. 로그인 뷰 class 호출

 

- 교직원 등록 메소드

1. 직원번호를 키값으로 저장된 값 확인

2. 저장된 값이 있을시 저장 실패(등록 view로 이동)

3. 저장된 값이 없을시 학생VO를 hashmap으로 저장

4. 로그인 뷰 class 호출

 

-------------------- 로그인 뷰 class ---------------------

구분 (button) (교직원/ 학생)

id (label, textfield) (학번/직원번호)

이름 (label, textfield)

등록 (button) (등록 뷰 class 호출)

로그인 (button) (로그인 class, 구분에 따른 메소드 호출)

 

------------------------ 로그인 class -----------------------

- 학생 로그인 메소드

1. id 값을 키값으로 저장된 값을 확인

2. 저장된 값이 없을시 로그인 실패(로그인 뷰로 이동)

3. 저장된 값이 있을시 이름과 저장된 이름값을 비교

4. 두 값이 일치할시 로그인 성공

5. 학생VO에 찾은 값을 전달

6. 학생 뷰 class 호출

 

- 교직원 로그인 메소드

1. id 값을 키값으로 저장된 값을 확인

2. 저장된 값이 없을시 로그인 실패(로그인 뷰로 이동)

3. 저장된 값이 있을시 이름과 저장된 이름값을 비교

4. 두 값이 일치할시 로그인 성공

5. 교직원VO에 찾은 값을 전달

6. 교직원 뷰 class 호출

 

--------------------- 학생 뷰 class --------------------------

학생 정보 (label -> 학생VO에서 값 불러오기)

수정 (button) (수정 뷰 class 호출 -> 구분 학생)

삭제 (button) (삭제 뷰 class 호출 -> 구분 학생)

검색 (button) (검색 뷰 class 호출 -> 구분 학생)

수업신청 (button) (수업신청 뷰 class 호출)

로그아웃 (button) (로그인 뷰 호출)

 

-------------------- 교직원 뷰 class --------------------------

교직원 정보 (label -> 교직원VO에서 값 불러오기)

수정 (button) (수정 뷰 class 호출 -> 구분 교직원)

삭제 (button) (삭제 뷰 class 호출 -> 구분 교직원)

검색 (button) (검색 뷰 class 호출 -> 구분 교직원)

수강관리(button) (수강관리 뷰 class 호출)

로그아웃 (button) (로그인 뷰 호출)

 

----------------------  수정 뷰  class --------------------------

- 학생

1. 학생의 학번을 key값으로 학생Map에서 데이터 호출

2. key값을 제외한 나머지 정보에 대한 textfield 생성

이름 (lable, textfield)

연락처 (lable, textfield)

이메일 (lable, textfield)

학년 (lable, textfield)

성별 (lable, textfield)

취소 (button) (학생 뷰 class 호출)

변경 (button) (학생VO에 값 전달, 수정 class 호출 -> 구분 학생)

 

- 교직원

1. 교직원의 직원번호를 key값으로 교직원Map에서 데이터 호출

2. key값을 제외한 나머지 정보에 대한 textfield 생성

이름 (lable, textfield)

연락처 (lable, textfield)

이메일 (lable, textfield)

취소 (button) (교직원 뷰 class 호출)

변경 (button) (교직원VO에 값 전달,수정 class 호출 -> 구분 교직원)

 

-------------------------  수정 class --------------------------

- 학생

1. 학생VO에서 학번을 키값으로 학생VO를 Map에 저장

2. 학생 뷰 class 호출

 

- 교직원

1. 교직원VO에서 직원번호를 키값으로 교직원VO를 Map에 저장

2. 교직원 뷰 class 호출

 

----------------------  삭제 뷰  class --------------------------

- 학생

취소 (button) (학생 뷰 class 호출)

삭제 (button) (로그인 뷰 class 호출)

 

- 교직원

취소 (button) (교직원 뷰 class 호출)

삭제 (button) (로그인 뷰 class 호출)

 

--------------------------  삭제 class ----------------------------

- 학생

1. 모든 키값을 이용해서 성적Map의 학번과 학생VO의 학번이

일치하는 데이터를 검색

2. 성적Map의 학번을 이용해 키값확인

3. 확인된 키값으로 성적Map의 저장된 값을 삭제

4. 학생VO에서 학번을 키값으로 학생Map의 저장된 값을 삭제

5. 로그인 뷰 class 호출

 

- 교직원

1. 교직원VO에서 학번을 키값으로 교직원Map의 저장된 값을 삭제

2. 로그인 뷰 class 호출

 

----------------------  검색 뷰  class --------------------------

- 학생

학생정보 (label -> 학생VO)

검색유형 (label, combobox)

검색 (label, textfield, button) (combobox유형에 맞게 textfield값으로 검색하여

해당 VO에 데이터 전달)

출력 (table, scrollpane)

뒤로 (button) (학생 뷰 class 호출)

 

- 교직원

교직원정보 (label -> 교직원VO)

검색유형 (label, combobox)

검색 (label, textfield, button) (combobox유형에 맞게 textfield값으로 검색하여

해당 VO에 데이터 전달)

출력 (table, scrollpane)

뒤로 (button) (교직원 뷰 class 호출)

 

---------------------------- 검색 class -------------------------

- 학생

1. 수업검색 (combobox값 -> 수업검색, 검색 (button) 클릭 시)

(1) 수업Map에 검색(textfield)값을 키값으로 검색

(2) 검색결과가 없을 시 출력 X

(3) 검색결과가 있을 시 결과값을 출력(table)에 전달

 

2. 전체성적검색 (combobo값 -> 전체성적검색, 검색 (button) 클릭 시)

(1) 모든 키값을 이용해 성적Map의 학번값과 학생VO의 학번값이

같은 데이터를 검색

(2) 검색결과가 없을 시 출력 X

(3) 검색결과가 있을 시 결과값을 출력(table)에 전달

 

3. 수업성적검색 (combobo값 -> 수업성적검색, 검색 (button) 클릭 시)

(1) 모든 키값을 이용해 성적Map의 학생VO의 학번과 검색(textfield)가

같은 값을 검색

(2) 검색결과가 없을 시 출력 X

(3) 검색결과가 있을 시 결과값을 출력(table)에 전달

 

4. 학년별성적검색 (combobo값 -> 학년별성적검색, 검색 (button) 클릭 시)

(1) 성적Map에서 학생VO의 학번을 키값으로 데이터 검색

(2) 검색된 결과를 성적VO에 전달

(3) 성적VO의 수업을 키값으로 수업Map의 학년값, 검색(field)값이 일치하는

데이터를 검색 

(4) 검색된 수업VO와 성적VO를 출력(table)에 전달

 

- 교직원

1. 학생정보검색 (combobox값 -> 학생정보검색, 검색(button) 클릭 시)

검색한 정보와 일치하는 키값 확인

if(검색(textfield == 학번)

(1) 검색(textfield)를 키값으로 학생Map 검색

(2) 결과 값이 없을 시 출력(X)

(3) 결과 값을 학생VO에 전달

(4) 학생VO 값을 출력(table)로 전달

if(검색(textfield == 이름)

(1) 모든 키값을 이용해 학생Map에서 이름과 검색(textfield)값이 일치하는 경우를 검색

(2) 결과 값이 없을 시 출력(X)

(3) 결과를 학생VO에 전달

(4) 학생VO값을 출력(table)으로 전달

 

2. 학생성적검색 (combobox값 -> 학생성적검색, 검색(button) 클릭 시)

검색한 정보와 일치하는 키값 확인

if(검색(textfield == 학번)

(1) 검색(textfield)를 키값으로 학생Map을 검색

(2) 결과를 학생VO에 전달

(3) 검색(textfield)를 키값으로 성적Map을 검색

(4) 결과를 성적VO에 전달

(5) 학생VO와 성적VO를 출력(table)에 전달

 

if(검색(textfield == 이름)

(1) 모든 키값을 이용해 학생Map에서 이름과 검색(textfield)값이 일치하는 경우를 검색

(2) 결과 값이 없을 시 출력(X)

(3) 결과를 학생VO에 전달

(4) 모든키값으로 성적Map의 학번과 학생VO의 학번이 일치하는 경우를 검색

(5) 결과를 성적VO에 전달

(6) 학생VO와 성적VO를 출력(table)에 전달

 

if(검색(textfield == 수업)

(1) 모든 키값으로 성적Map의 수업과 입력(textfield)값과 일치하는 경우를 검색

(2) 결과 값을 성적VO에 전달

(3) 성적VO의 학번을 키값으로 학생Map을 검색

(4) 결과를 학생VO에 전달

(5) 학생VO와 성적VO를 출력(table)에 전달

 

--------------------------- 수업신청 뷰 class -------------------------

학생정보 (label -> 학생VO)

출력 (table, scrollpane)

신청 (button) (table의 row -> 수업신청 class 호출)

뒤로 (button) (학생 뷰 class 호출)

 

--------------------------- 수업신청 class ----------------------------

수업 출력

1. 모든 키값을 이용해 수업Map의 학년과 학생VO의 학년이 일치하는 경우를 검색

2. 결과를 수업VO에 전달

3. 수업VO를 출력(table)에 전달

 

신청 클릭 시

1. 수업VO의 신청인원과 총원이 일치할 시 신청 X

2. 학생VO의 학번과 수업VO의 수업명을 성적Map에 저장(키 값은 난수 생성하여 저장)

 

--------------------------- 수강관리 뷰 class -------------------------

교직원정보 (label ->교직원VO)

수업등록 (button) (수업등록 뷰 class 호출)

수업수정 (button) (수업수정 뷰 class 호출)

수업삭제 (button) (수업삭제 뷰 class 호출)

학생평가 (button) (학생평가 뷰 class 호출)

학기마감 (button) (학기마감 뷰 class 호출)

뒤로 (button) (교직원 뷰 class 호출)

 

--------------------------- 수업등록 뷰 class -------------------------

수업명 (label, textfield)

학년 (label, combobox)

담당교직원 (label, label)

정원 (label, textfield)

등록 (button) (수업VO에 값 전달, 수업등록 class 호출)

취소 (button) (수강관리 뷰 class 호출)

 

--------------------------- 수업등록 class -------------------------

1. 수업VO의 수업명을 키값으로 수업Map의 수업명과 일치하는 경우를 검색

2. 결과값이 있을 경우 등록 X

3. 결과값이 없을 경우 수업VO를 수업Map에 저장

 

--------------------------- 수업수정 뷰 class -------------------------

교직원정보 (label -> 교직원VO)

출력 (table, srollpane)

수정 (button) (table의 row -> 수업수정 뷰_1 class 호출)

취소 (button) (수강관리 뷰 호출)

 

--------------------------- 수업수정 class -------------------------

1. 모든 키값으로 수업Map의 담당교직원과 교직원VO의 직원번호가 일치하는 경우를

검색

2. 결과가 없는 경우 출력X

3. 결과를 수업VO로 전달

4. 결과를 이용하여 수업Map의 키값 저장(keyvlaue)

 

--------------------------- 수업수정 뷰_1 class -------------------------

수업명 (label, label)

학년 (label, combobox)

담당교직원 (label, label)

정원 (label, textfield)

등록 (button) (수업VO에 값 전달, 수업수정_1 class 호출)

취소 (button) (수강관리 뷰 class 호출)

 

--------------------------- 수업수정_1 class -------------------------

1. 수업VO의 수업명을 키값으로 수업VO를 수업Map에 저장

 

--------------------------- 수업삭제 뷰 class -------------------------

교직원정보 (label -> 교직원VO)

출력 (table, srollpane)

수정 (button) (table의 row -> 수업삭제 뷰_1 class 호출)

취소 (button) (수강관리 뷰 호출)

 

--------------------------- 수업삭제 class -------------------------

1. 모든 키값으로 수업Map의 담당교직원과 교직원VO의 직원번호가 일치하는 경우를

검색

2. 결과가 없는 경우 출력X

3. 결과를 수업VO로 전달

4. 모든 키값을 이용하여 수업Map의 수업과 수업VO의 수업명이 일치하는 경우를 검색

5. 결과를 이용하여 키값 저장 (keyvalue)

 

--------------------------- 수업삭제 뷰_1 class -------------------------

삭제 (button) (수업관리 class 호출)

취소 (button) (수업관리 class 호출)

 

--------------------------- 수업삭제_1 class -------------------------

1. 삭제 시 수업VO의 수업명을 키값으로 수업Map의 값을 삭제

2. keyvalue를 이용하여 성적Map의 값을 삭제

 

--------------------------- 학생평가 뷰 class -------------------------

수업명 (label, combobox)

검색 (button) (combobox의 값으로 수업Map의 데이터를 VO에 전달)

출력 (table, scrollpane)

성적 (label, textfield)

등록 (button) (수업관리 뷰 class 호출)

뒤로 (button) (수업관리 뷰 class 호출)

 

--------------------------- 학생평가 class ---------------------------

검색

1. 모든 키값을 이용하여 성적Map의 수업과 combobox의 값이 일치하는

경우를 검색

2. 결과를 성적VO에 전송

3. 성적VO를 table로 전송

 

등록

1. table의 row값을 성적VO에 전송

2. 성적VO의 값으로 해당 성적Map의 키값을 keyvalue에 저장

3. keyvalue를 키값으로 성적VO를 성적Map에 저장

 

--------------------------- 학기마감 뷰 class -------------------------

학기마감 (button) (학기마감 class 호출)

수업 (label)

수업목록 (combobox)

검색 (button)

출력 (table, scrollpane)

총점 (label, label)

평균 (label, label)

뒤로 (button) (수업관리 뷰 class 호출)

 

--------------------------- 학기마감  class -------------------------

총점 total

평균 avg

 

- 학기마감

1. 모든 키값을 이용해 수업Map의 담당교직원값과 교직원VO의 직원번호가 일치하는

일치하는 경우를 검색

2. 검색결과의 키값으로 수업Map의 학기를 false로 업데이트

 

- 평균처리 및 등수 출력

1. 총점, 평균을 0으로 초기화

2. 수업목록(combobox)를 키값으로 수업Map을 검색

3. 검색결과를 수업VO에 전송

4. 모든 키값을 이용해 성적Map의 수업과 수업VO의 수업명이 일치하는 경우를 검색

5. 검색결과를 성적VO에 전송

6. 성적VO의 성적값을 total에 더함

7. 성적VO를 출력(table)에 전송

8. 출력(table)에 성적으로 내림차순 정렬

9. avg = total/수업VO의 신청인원

 

- 학년올림

1. 모든 키값을 이용해 수업Map의 학기를 검색

2. 결과값이 모두 false일 경우 학생Map의 모든 키값을 이용해 학년에 +1

 

 

실행이미지

 

 

 

반응형

댓글