| 항목 | 내용 | 
|---|---|
| 프로젝트명 | MovieReservation | 
| 개발기간 | 2025.10.20 ~ 2025.10.23 (2일) | 
| 개발환경 | Java 17 (순수 Java SE) | 
| 개발도구 | Eclipse / IntelliJ / VS Code 중 택1 | 
| 목표 | 영화 조회 → 좌석 선택 → 예매 및 취소가 가능한 콘솔 기반 예매 시스템 구현 | 
| 참여 인원 | 1명 (개인 프로젝트) | 
| 주요 특징 | OOP 설계 기반, 클래스 분리, 예외처리 및 데이터 검증 포함 | 
MovieReservation/ ├── src/ │ ├── main/ │ │ ├── Movie.java │ │ ├── Theater.java │ │ ├── Seat.java │ │ ├── Schedule.java │ │ ├── Reservation.java │ │ ├── MovieService.java │ │ ├── ReservationService.java │ │ ├── DataInitializer.java │ │ └── Main.java └── README.md
yaml 코드 복사
| 클래스명 | 역할 | 
|---|---|
| Movie | 영화 정보(id, 제목, 상영시간, 등급 등) 관리 | 
| Theater | 상영관 정보(관 이름, 좌석 수 등) 관리 | 
| Seat | 좌석 번호, 예약 상태를 관리 | 
| Schedule | 특정 영화의 상영 시간과 상영관을 연결 | 
| Reservation | 사용자의 예매 내역(영화, 시간, 좌석, 상태 등) 저장 | 
| MovieService | 영화 목록 조회, 상영 일정 확인 기능 담당 | 
| ReservationService | 좌석 선택, 예약/취소 기능 로직 담당 | 
| DataInitializer | 초기 더미 데이터(영화, 상영관, 좌석 등) 생성 | 
| Main | 콘솔 UI 및 전체 실행 로직 제어(Main Menu) | 
| 구분 | 기능명 | 설명 | 
|---|---|---|
| 1. 영화 조회 | 영화 목록 출력 | 현재 상영 중인 영화 제목/시간/등급 표시 | 
| 2. 상영 일정 선택 | 상영관 및 시간 선택 | 선택한 영화의 상영시간 목록 출력 | 
| 3. 좌석 조회 및 선택 | 좌석 현황(예약/가능) 출력 | 2차원 배열 기반 좌석 표시 ( O=가능,X=예약) | 
| 4. 예매 | 좌석 선택 후 예매 완료 | 예매번호 자동 생성, 중복 예약 방지 | 
| 5. 예매 확인 | 예약번호로 조회 | 예약 내역(영화명, 시간, 좌석) 출력 | 
| 6. 예매 취소 | 예약번호 입력 시 취소 처리 | 취소 시 좌석 상태 복구 | 
| 7. 종료 | 프로그램 종료 | 데이터 저장(선택) 후 종료 | 
============================== 🎬 영화 예매 시스템 영화 목록 보기
영화 예매하기
예매 내역 확인
예매 취소
메뉴 선택: 1
[현재 상영중인 영화]
<서울의 봄> (15세) 120분
<인사이드 아웃 2> (전체) 110분
<슬램덩크> (12세) 125분 선택: 1
상영시간:
13:00 - 15:00 (1관)
16:00 - 18:00 (2관) 시간 선택: 1
좌석 현황 (O: 가능, X: 예약) A1 O | A2 O | A3 X | A4 O | A5 O B1 O | B2 X | B3 O | B4 O | B5 O 좌석 선택: A2
예매 완료 ✅ 예매번호: R20251021-001
yaml 코드 복사
| 기능 | 처리 절차 | 
|---|---|
| 예매 | ① 영화 선택 → ② 상영시간 선택 → ③ 좌석 선택 → ④ 좌석 상태 변경( AVAILABLE → RESERVED) → ⑤ Reservation 객체 생성 | 
| 예매 중복 방지 | 이미 예약된 좌석( status=RESERVED)은 선택 불가 | 
| 예매 취소 | 예약번호 입력 → status=RESERVED → CANCELED로 변경 및 좌석 복구 | 
| 데이터 구조 | ArrayList / HashMap 사용하여 메모리 내에서 관리 | 
Movie 1 --- * Schedule 1 --- * Theater Theater 1 --- * Seat Schedule 1 --- * Reservation Reservation * --- * Seat