아래는 프로젝트를 진행하면서 내가 작성했던? 문서다. 내가 담당했던 파트에서 개선해야할 점과 작업한 내용을 정리해서 팀원들에게 알려주기위해 작성했었다.
Member View 정리
View 클래스 : 프로그램의 모든 입출력을 담당한다.
l data패키지의 Database와 Point 클래스를 import 받는다.
l function패키지의 Service클래스를 import 받는다.
l 전역변수 :
n Service sv 싱글톤
n boolean isAdmin 계정의 관리자 여부를 저장한다.
n Boolean loginStatus 로그인 여부를 저장한다.
n String loginId 로그인시 로그인한 계정을 저장한다.
n ArrayList<String> temp 사용자가 예매 과정에서 선택하는 옵션들을 임시 저장.
- 예매 과정에서 선택된 옵션들이 순차적으로 입력/삭제되기 때문에 index넘버를 상수로 선언해서 가독성을 높인다.
0 TEMP_ID 예매하는 계정(loginId와 동일함)
1 TEMP_MOVIE 선택한 영화
2 TEMP_TIME 선택한 회차
3 TEMP_ROW 선택한 행
4 TEMP_COL 선택한 열
l 메서드 목록
n int mainView() : 각 메서드를 호출하고 return값을 받아서 다른 메서드를 호출한다.
n int mainMenuView() : 프로그램 시작시 가장 먼저 출력되는 메뉴
n int loginSessionVie() : 로그인메뉴
- Service – login(id,pw)
- Service – isAdmin(id)
n int joinMemberView() : 회원가입메뉴
- Service – isId(id)
- Service – addMember(id,pw,name,age)
n int resignMemeberView() : 회원탈퇴메뉴
- Service – login(this.loginId,pw)
- Service – delMember(this.loginId)
n int memberMenuView() : 멤버 메뉴
- loginId를 temp리스트에 추가
- 로그아웃 선택시 loginId와 loginStatus를 초기값으로 변경
n Int movieChoiceView() : 영화 선택 메뉴
- ArrayList<String> movieTitle Service – getMovieTitleList()
- 개선이 필요함 : 만약 상영하는 영화가 많아진다면 어떻게 입력을 받을건지
if문->movieTitle의 길이보다 작은 수를 입력받으면 그 타이틀을 temp에 추가
int selectedNum = parseInt(movieSelection);
if(selecteNum<movieTitle.length){
temp.add(movieTitle.get(selectedNum));
return TIME_CHOICE;
} else if(movieSelection.equals(“z”)||movieSelection.equals(“Z”)){
temp.remove(TEMP_ID);
return MEMBER_MENU;
} else {
System.out.println(“잘못된 입력입니다.”);
}
n int timeChoiceView() : 회차 선택 메뉴
- ArrayList<String> theaterList Service – getMovieTheaterList(temp.get(TEMP_ID)
- ArrayList<String> timeList Service – getMovieTimeList(temp.get(TEMP_ID), theaterList)
- 개선이 필요함 : 영화 선택 메뉴와 동일함.
n int seatChoiceView() : 좌석 선택 메뉴
- boolean[][] seat Service – getMovieSeatArray(Integer.parseInt(temp.get(TEMP_TIME)))
- 개선이 필요함 : 뷰의 코드가 너무 길고 복잡함. int형태로 변환해서 사용해야하는 경우 메서드를 만들어서 사용해야할 듯
n int ticketingView() : 예매 결정 메뉴
- Point p = new Point(tempRowInt, tempColInt) / ArrayList<Point> pointList
- Service – addTicket(this.loginId, tempTimeInt, pointList)
- 개선이 필요함 : 예매 되어있는 자리를 다시 입력하고 예매하면 실제로 예매는 되지 않으나 예매가 되었다고 출력됨.
n int reservationCancleView() : 예매 취소 메뉴
- 사용자가 예매한 영화들을 출력한다.
- 예매한 영화 목록의 인덱스를 입력받아 해당 영화를 예매 리스트에서 제거한다.
n int ticketReservedView() : 예매 확인 메뉴
- 예매 취소 메뉴에서 호출하는 예매한 영화들을 출력하는 메서드를 그대로 사용한다.
- 확인이 목적이므로 이외의 기능은 필요 없다.
- 굳이 주자면 예매 취소 메뉴로 바로 이동하는 선택지 정도?
Project 전체 개선안
1. 회원가입/로그인 등에서 아이디에 e-mail 형식의 정규식을 추가해야함.
2. 관람 등급에 따라 예매가 제한되는 조건을 추가해야함.
3. 비밀번호 암호화. ASE128 양방향(API사용해야함)
4. Vo클래스들은 Vo를 명시해줘야함
5. 인터페이스 삽입
6. Date 추가해서 요일별 할인, 조조할인, 상영일 지나면 예매 내역이 존재해도 탈퇴가 가능하게
7. 예외처리?
8. 회차를 시간으로
9. 외부파일에 저장하고 프로그램 실행할 때 로드.