본문 바로가기
Development(개발)/JAVA

[개발/JAVA] 영화 예매 프로그램 개발 프로젝트

by wonkidoki 2023. 10. 10.
반응형

- 영화관 예매 하는 과정(지점 선택, 영화&시간 선택, 자리 선택 화면 생성)을 만들기. 결제 화면까지 만들지 않음, 조회 및 삭제 가능

- DB 설계를 잘못해서 수정을 너무 많이 했다.

- 소스 코드 공유

MovieReservation_Project.zip
2.44MB



 
1. DB 설계

member table > 회원 정보 table
reservation > 예약한 표에 대한 정보 table
movie > 영화 정보 table
city > 도시 정보 table
local > 지역구 정보 table
business > 영업점 정보 table

city,local,business table은 영화관 선택을 위해 데이터 미리 저장
movie table 도 영화 정보를 불러오기 위해 데이터 미리 저장
reservation table은 예약이 완료 되면 저장됨


2. UI 설계 & 구현, 기능
로그인, 회원가입, 영화 지점, 시간, 영화, 자리 선택
자리 조회 및 삭제 구현

로그인 하기 전
로그인 후
 

이번에는 나름 느낌 있게 만들어보려고 노력했다.
레드 & 화이트로~

지점 선택

지점 선택은 도시 > 지역구 > 영업점 순서로 선택할 수 있도록 화면이 띄워진다. 처음부터 3개가 다 보이지 않는다.

영화 선택

버튼을 통해 영화를 바꾸고 시간과 영화관을 선택한다.
영화를 바꿀때마다 정보도 바로 갱신된다.

자리 선택

이미 예약 된 자리는 회색으로 선택 못하게 된다.

예약 조회 및 삭제

회원 아이디로 예약된 것만 불러와서 예약 취소를 할 수 있도록 하였다.


3. DB 쿼리 추가
-- 회원
CREATE TABLE member (
id      VARCHAR(10) NOT NULL, -- 아이디
pwd     VARCHAR(20) NOT NULL, -- 비밀번호
name    VARCHAR(20) NOT NULL, -- 이름
phone   VARCHAR(15) NOT NULL, -- 전화번호
addr    VARCHAR(50) NOT NULL, -- 주소
isLogin VARCHAR(10) NOT NULL  -- 로그인여부
);

-- 회원 기본키
CREATE UNIQUE INDEX PK_member
ON member ( -- 회원
id ASC -- 아이디
);

-- 회원
ALTER TABLE member
ADD
CONSTRAINT PK_member -- 회원 기본키
PRIMARY KEY (
id -- 아이디
);

-- 영화
CREATE TABLE movie (
movieNo  VARCHAR(10) NOT NULL, -- 영화번호
title    VARCHAR(20) NOT NULL, -- 영화제목
director VARCHAR(10) NOT NULL, -- 감독
actor    VARCHAR(50) NOT NULL, -- 주연
genre    VARCHAR(10) NOT NULL, -- 장르
age      INTEGER     NOT NULL, -- 기본
playTime VARCHAR(10) NOT NULL, -- 진행시간
nation   VARCHAR(10) NOT NULL, -- 국가
openDate VARCHAR(10) NOT NULL  -- 개봉일
);

-- 영화 기본키
CREATE UNIQUE INDEX PK_movie
ON movie ( -- 영화
movieNo ASC -- 영화번호
);

-- 영화
ALTER TABLE movie
ADD
CONSTRAINT PK_movie -- 영화 기본키
PRIMARY KEY (
movieNo -- 영화번호
);

-- 영화관
CREATE TABLE thearer (
);

-- 예약
CREATE TABLE reservation (
id        VARCHAR(10) NOT NULL, -- 아이디
movieNo   VARCHAR(10) NOT NULL, -- 영화번호
busName   VARCHAR(10) NOT NULL, -- 영업점이름
cityName  VARCHAR(10) NOT NULL, -- 도시이름
localName VARCHAR(10) NOT NULL, -- 지역이름
sit       VARCHAR(10) NOT NULL, -- 좌석
startTime VARCHAR(40) NOT NULL  -- 시작시간
);

-- 지역구
CREATE TABLE local (
localName VARCHAR(10) NOT NULL, -- 지역이름
cityName  VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL  -- 선택
);

-- 지역구 기본키
CREATE UNIQUE INDEX PK_local
ON local ( -- 지역구
localName ASC, -- 지역이름
cityName  ASC  -- 도시이름
);

-- 지역구
ALTER TABLE local
ADD
CONSTRAINT PK_local -- 지역구 기본키
PRIMARY KEY (
localName, -- 지역이름
cityName   -- 도시이름
);

-- 영업점
CREATE TABLE business (
busName   VARCHAR(10) NOT NULL, -- 영업점이름
localName VARCHAR(10) NOT NULL, -- 지역이름
cityName  VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL  -- 선택
);

-- 영업점 기본키
CREATE UNIQUE INDEX PK_business
ON business ( -- 영업점
busName   ASC, -- 영업점이름
localName ASC, -- 지역이름
cityName  ASC  -- 도시이름
);

-- 영업점
ALTER TABLE business
ADD
CONSTRAINT PK_business -- 영업점 기본키
PRIMARY KEY (
busName,   -- 영업점이름
localName, -- 지역이름
cityName   -- 도시이름
);

-- 도시
CREATE TABLE city (
cityName  VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL  -- 선택
);

-- 도시 기본키
CREATE UNIQUE INDEX PK_city
ON city ( -- 도시
cityName ASC -- 도시이름
);

-- 도시
ALTER TABLE city
ADD
CONSTRAINT PK_city -- 도시 기본키
PRIMARY KEY (
cityName -- 도시이름
);

-- 새 테이블
CREATE TABLE startMovie (
startTime VARCHAR() NOT NULL -- 시작시간
);

-- 시작시간
CREATE TABLE startTime (
);

-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_member_TO_reservation -- 회원 -> 예약
FOREIGN KEY (
id -- 아이디
)
REFERENCES member ( -- 회원
id -- 아이디
);

-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_movie_TO_reservation -- 영화 -> 예약
FOREIGN KEY (
movieNo -- 영화번호
)
REFERENCES movie ( -- 영화
movieNo -- 영화번호
);

-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_business_TO_reservation -- 영업점 -> 예약
FOREIGN KEY (
busName,   -- 영업점이름
localName, -- 지역이름
cityName   -- 도시이름
)
REFERENCES business ( -- 영업점
busName,   -- 영업점이름
localName, -- 지역이름
cityName   -- 도시이름
);

-- 지역구
ALTER TABLE local
ADD
CONSTRAINT FK_city_TO_local -- 도시 -> 지역구
FOREIGN KEY (
cityName -- 도시이름
)
REFERENCES city ( -- 도시
cityName -- 도시이름
);

-- 영업점
ALTER TABLE business
ADD
CONSTRAINT FK_local_TO_business -- 지역구 -> 영업점
FOREIGN KEY (
localName, -- 지역이름
cityName   -- 도시이름
)
REFERENCES local ( -- 지역구
localName, -- 지역이름
cityName   -- 도시이름
);