728x90
전체적으로 들어갈 함수 및 클래스 정의 후, 단계별 주석 작성을 한 후, 코딩에 들었갔다
훨씬 수월해지는 좋은 방법인 것 같다.
▷▷ 영화(Movie) 클래스
package theater;
import java.time.*;
public class Movie {//데이터1: 영화 정보 클래스
private String title; //영화 제목
private int runTime; //러닝타임
private String posterURL; //포스터 경로
private LocalDate release; //영화 개봉 날짜
Movie() {
title = null;
runTime = 0;
posterURL = null;
release = null;
}
Movie(String title, int runTime, String posterURL, LocalDate release) {
this.title = title;
this.runTime = runTime;
this.posterURL = posterURL;
this.release = release;
}
//각각의 데이터에 대한 set함수
void setTitle(String title) {
this.title = title;
}
void setRunTime(int runTime) {
this.runTime = runTime;
}
void setPosterURL(String posterURL) {
this.posterURL = posterURL;
}
void setRelease(LocalDate release) {
this.release = release;
}
//각각의 데이터에 대한 get함수
String getTitle() {
return title;
}
int getRunTime() {
return runTime;
}
String getPosterURL() {
return posterURL;
}
String getRelease() {
return release.toString();
}
}
▷▷ 회원 (Person) 클래스
package theater;
public class Person {//데이터2: 회원가입한 고객 클래스
private String name; //사용자 이름
private String phone; //전화번호
private String birth; //생년월일
private String id; //아이디
private String pw; //비밀번호
Person() {
this.name = null;
this.phone = null;
this.birth = null;
this.id = null;
this.pw = null;
}
Person(String name, String phone, String birth, String id, String pw) {
this.name = name;
this.phone = phone;
this.birth = birth;
this.id = id;
this.pw = pw;
}
//각각 데이터에 대한 set 함수
void setName(String name) {
this.name = name;
}
void setPhone(String phone) {
this.phone = phone;
}
void setBirth(String birth) {
this.birth = birth;
}
void setId(String id) {
this.id = id;
}
void setPw(String pw) {
this.pw = pw;
}
//각각 데이터에 대한 get 함수
String getName() {
return name;
}
String getPhone() {
return phone;
}
String getBirth() {
return birth;
}
String getId() {
return id;
}
//비밀번호를 마음대로 get하면 안될 것 같아서
//비밀번호에 대한 get함수는 만들지 않았다.
}
▷▷ 상영영화 (MovieNow) 클래스
package theater;
public class MovieNow {//데이터3: 현재 상영중인 영화
private Movie movie; //영화 정보
private int round; //회차 정보
private String start; //시작시간
private String finish; //끝시간
private String screenID;//상영관 ID
MovieNow() {
movie = null;
round = 0;
start = null;
finish = null;
screenID = null;
}
MovieNow(Movie movie, int round, String start, String finish, String screenID) {
this.movie = movie;
this.round = round;
this.start = start;
this.finish = finish;
this.screenID = screenID;
}
//각각의 데이터에 대한 set 함수
void setMovie(Movie movie) {
this.movie = movie;
}
void setRound(int round) {
this.round = round;
}
void setStart(String start) {
this.start = start;
}
void setFinish(String finish) {
this.finish = finish;
}
void setScreenID(String screenID) {
this.screenID = screenID;
}
//각각의 데이터에 대한 get함
Movie getMovie() {
return movie;
}
int getRound() {
return round;
}
String getStart() {
return start;
}
String getFinish() {
return finish;
}
String getScreenID() {
return screenID;
}
}
▷▷ 예매정보 (ReservInfo) 클래스
package theater;
public class ReservInfo {//데이터4: 예매정보 객체
private Person person; //예매한 고객
private int round; //영화의 회차 정보
private String seat; //예매한 좌석
private String screenID;//상영관 ID
ReservInfo(Person person, int round, String seat, String screenID) {
this.person = person;
this.round = round;
this.seat = seat;
this.screenID = screenID;
}
//각각의 데이터에 대한 set 함수
void setPerson(Person person) {
this.person = person;
}
void setRound(int round) {
this.round = round;
}
void setSeat(String seat) {
this.seat = seat;
}
void setScreenID(String screenID) {
this.screenID = screenID;
}
//각각의 데이터에 대한 get함수
Person getPerson() {
return person;
}
int getRound() {
return round;
}
String getSeat() {
return seat;
}
String getScreenID() {
return screenID;
}
}
▷▷ 상영관 (Screen) 클래스
package theater;
public class Screen {//상영관 클래스
//상영관 ID
private String screenID;
Screen(String screenID) throws Exception{
this.screenID = screenID;
//상영영화 테이블에 연결
//예매 정보 테이블에 연결
}
//상영중인 영화 찾기
MovieNow searchMovieNow(String title, String screenID) throws Exception {
MovieNow movieNow = new MovieNow();
//1. 상영관 id와 영화 제목을 통해 DB에 영화가 상영중인지 검색
//2. 존재하면 MovieNow 객체 생성
//3. && 반환
//4. 존재하지 않으면 익셉션
return movieNow;
}
//예매하기
void booking(ReservInfo reservInfo) {
//1. GUI에서 예매 정보 객체를 받아 온다
//2. 받아온 예매 정보 객체를 예매 정보 테이블에 저장한다
}
//예매 취소
void cancelReserv(ReservInfo reservInfo) throws Exception{
//1. searchMovieNow 실행
//2. GUI에서 전달 받은 reservInfo 객체와
//3. DB에 저장되어 있는 영화 정보와 사용자가 예매 취소하려는 영화 제목을 비교한다
//4. 일치한다면 해당 데이터를 삭제한다
//5. 틀리다면 익셉션을 발생 시킨다
}
//상영영화 등록하기
void addPlayingMovie(MovieNow movieNow) {
//1. GUI를 통해 상영 영화 객체를 받아 온다
//2. 상영영화 객체를 상영영화 테이블에 저장한다
}
//상영영화 취소하기
void deletePlayingMovie(String title) throws Exception{
//1. GUI에서 상영을 멈추려는 영화의 제목을 받아온다
//2. searchMovieNow 실행
//3. 영화를 찾으면
//4. 해당 데이터 삭재
//5. 찾지 못하면 익셉션 발생
}
//상영 영화 정보 수정
void modifyPlayingMovie(MovieNow movieNow_new) throws Exception {
//1. GUI에서 수정하려는 상영중인 영화 제목을 받아온다
//2. 제목을 통해 searchMovieNow 실행
//3. searchMovieNow에서 익셉션이 발생한다면
//4. 익셉션 발생
//5. 수정하려는 데이터를 찾았다면
//6. 해당 데이터 movieNow_new로 변경
}
}
▷▷ 영화관 (Theater) 클래스
package theater;
import java.util.ArrayList;
import java.util.Date;
public class Theater {//영화관 클래스
Person personNow = null; //현재 로그인한 사용자
ArrayList<Screen> screen = new ArrayList<Screen>(9);//상영관 정보
Theater() throws Exception{
//상영관 테이블과 연결: 미리 DB에 만들어 놓은 테이블
//고객 정보 테이블과 연결
//영화 정보 테이블과 연결
//상영관 객체 인스턴스(DB에서 불러온 정보로 인스턴스)
}
//상영관에 대한 추가&삭제&수정 함수??
//사용자 검색
Person searchPerson(String id) throws Exception{
Person p = new Person();
//1. 사용자가 입력한 id를 통해 DB에서 사용자 검색
//2. 일치하는 사용자를 찾으면
//3. 사용자 객체를 만들어 반환한다
//4. 일치하는 사용자를 찾지 못하면
//5. 익셉션 발생
return p;
}
//영화 검색
Movie searchMovie(String title) throws Exception{
Movie movie = new Movie();
//1. 영화제목으로 DB에 영화가 존재하는지 검색
//2. 존재하면 movie 객체 생성후 반환
//3. 존재하지 않는다면 익셉션 발생
return movie;
}
//로그인: boolean?
void logIn(String id, String pw) throws Exception{
//1. 사용자가 입력한 로그인 정보를 가져온다
//2. searchPerson 실행
//3. 검색한 데이터의 비밀번호와 사용자가 입력한 비밀번호가 일치하는지 확인한다
//4. 일치하면 현재 로그인한 사용자에 객체 할당
//5. 일치하지 않으면 익셉션
}
//로그아웃
void logOut() {
//1. personNow를 null로 변경
}
//회원가입
void signUp(String name, String phone, String birth, String id, String pw) {
//1. 입력받은 정보로 Person 객체 생성
//2. 객체 생성 후 DB 저장
//3. 현재 로그인한 사용자에 객체 할당
}
//아이디 중복 검사
void isExistId(String id) throws Exception{
//1. DB에 사용자가 사용하려는 아이디가 존재하는지 검색한다
//2. 존재한다면 익셉션 발생
}
//영화 정보 등록
void addMovie(Movie movie) throws Exception{
//1. GUI에서 movie객체 가져옴
//2. 영화 검색(이미 등록된 영화인지 체크)
//3. 검색한 영화와 입력하고자 하는 영화가 같다면
//4. 익셉션 발생
//5. 같지 않다면
//6. DB에 등록
}
//영화 삭제
void deleteMovie(String title) throws Exception{
//1. 영화 제목을 통해 searchMovie 실행
//2. 익셉션이 발생하지 않는다면(해당 영화 존재) 해당영화 삭제
//3. 익셉션이 발생했다면 익셉션 발생
}
//영화 정보 수정
void modifyMovie(Movie movie) throws Exception{
//1. 제목을 통해 searchMovie 실행
//2. 익셉션이 발생하지 않았다면 해당 영화 정보 수정
//3. 익셉션이 발생했다면 익셉션 발생
}
//고객 정보 삭제
void deletePerson(String id) throws Exception{
//1. id를 통해 searchPerson 실행
//2. 익셉션이 발생하지 않았다면 해당 사용자 삭제
//3. 익셉션이 발생했다면 익셉션 발생
}
//고객 정보 수정
void modifyPerson(Person p) throws Exception{
//1. id를 통해 searchPerson 실행
//2. 익셉션이 발생하지 않았다면 해당 고객 정보 수정
//3. 익셉션이 발생했다면 익셉션 발생
}
//총 영화수 count
int countMovie() {
//1. 영화 테이블에 저장된 전체 영화 수 가져오기
//2. 전체 영화 수 반환
return 0;
}
//총 고객수 count
int countPerson() {
//1. 고객 테이블에 저장된 전체 고객 수 가져오기
//2. 전체 고객 수 반환
return 0;
}
}
+) 영화 개봉 날짜를 계산할 때 LocalDate 함수를 사용하기로했다.
처음에는 Date함수를 쓰려고했는데 상수 이용이 애매해져서 오류를 확인할 수 없다고한다.
그래서 대안으로 나온게 LocalDate함수!
오늘 날짜를 기준으로 몇일 남았는지 계산해보기 (D-Day 계산)
일 단위로만 뜬다
package time;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Period;
import java.time.temporal.ChronoUnit;
public class time {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate Date = LocalDate.of(2021, 2, 21); //ex) 2021.2.21
long days = ChronoUnit.DAYS.between(today, Date);
System.out.println(days);
}
}
참고로 나는 전체적인 디자인, GUI 코드 작성, 세부 기능 코딩을 맡았다
728x90
'ⓟⓡⓞⓙⓔⓒⓣ' 카테고리의 다른 글
[JAVA] 영화관 프로젝트 (GUI설계) (0) | 2021.08.03 |
---|---|
[JAVA] 영화관 프로젝트 (UML 설계) (0) | 2021.08.03 |
댓글