사이먼's 코딩노트
[Java] 호텔 예약 관리 프로그램 개요 본문
[호텔 예약 관리 프로그램 제작]
- 개인 프로젝트로서 호텔 예약 관리 프로그램이라는 주제를 가지고 최대한 구현해보고자 합니다.
- 프로그램을 제작하기에 앞서, 전체 프로그램의 개요(기능 및 데이터 정의)에 대해 작성하려 합니다.
[기능 구성]
- 호텔 예약 관리 프로그램의 기본 기능 구성은 아래와 같습니다.
- 프로그램시작
- 호텔 소개 (hotel introduce)
- 객실 조회 (room list)
- 객실 예약 (booking room)
- 예약 확인 (booking check)
- 예약 취소 (booking delete)
- 회원 로그인 (guest login)
- 회원 로그아웃 (guest logout)
- 회원가입 (guest join)
- 숙박 리뷰 남기기 (review write)
- 리뷰 보기 (review list)
- 숙박 리뷰 html로 추출하기 (export html)
- 프로그램 종료 (exit)
[프로그램 시작]
- 호텔 예약 관리 시스은 시작과 동시에 서비스 모음집을 제공한다.
- 사용자는 콘솔창을 통해 원하는 서비스를 입력할 수 있고, 서비스 모음집을 다시 보고 싶다면 'service' 를 입력해야한다.
[호텔 소개]
- 호텔 소개는 서비스 입력창에 'hotel introduce' 라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있지 않은 상태에서도 열람이 가능하다.
- 호텔 소개의 기본 정보는 상호명, 위치, 전화번호, 영업시간, 객실 정보, 호텔 정책에 대한 내용이 포함되어 있다.
- 또한 호텔 소개와 더불어 간단한 아스키아트를 이용한 각 층별 객실의 위치를 보여준다.
[객실 조회]
- 객실 조회는 서비스 입력창에 'room list' 라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있지 않은 상태에서도 조회가 가능하다.
- 객실 조회는 원하는 날짜와 층을 입력하여 조회가 가능하고, 이 때 날짜는 현재(오늘) 날짜를 기준으로 일주일 간의 날짜만 조회가 가능하다.
- 객실 정보는 객실번호, 객실타입, 예약여부를 보여준다.
- 여기서 말하는 객실번호는 303호 같은 번호를 뜻하고, 객실 타입은 각 객실번호의 끝자리가 홀수인 객실은 싱글룸, 짝수인 객실은 더블룸으로 구분하였다.
[객실 예약]
- 객실 예약은 서비스 입력창에 'booking room' 이라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있는 상태에서만 예약이 가능하다.
- 객실 예약은 예약하고 싶은 객실번호와 체크인/체크아웃 날짜를 입력해야 예약이 가능하고, 이 때 날짜는 현재(오늘) 날짜를 기준으로 일주일 간의 날짜만 예약이 가능하다.
- 만약 선택한 객실번호의 예약여부가 '예약불가' 라면 객실 예약이 불가능하고, '예약가능' 이라면 객실 예약이 가능하다.
- '예약가능' 인 상태의 객실을 선택했다면 총 숙박 기간을 보여주고, 총 인원 체크를 하게되는데 만약 인원이 싱글룸 기준 2인을 초과하거나 더블룸 기준으로 4명이 초과한다면 초과 인원당 추가 요금이 부여되고 지불해야할 요금을 안내한다.
- 예약을 계속 진행한다면 예약이 완료됐다는 안내와 함께 해당 날짜 기간의 객실 예약여부를 모두 '예약불가' 로 변경한다.
[예약 확인]
- 예약 확인은 서비스 입력창에 'booking check' 이라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있는 상태에서만 예약이 가능하다.
- 일반 회원이 아닌 관리자가 해당 서비스를 실행했다면, 역대 예약 리스트가 모두 보여진다.
- 일반 회원이 해당 서비스를 실행했다면, 총 몇 건의 예약이 있는지 먼저 안내하고, 1건 이상의 예약이 있다면 상세보기를 원하는 지 되묻게 된다.
- 상세보기를 원한다면 해당 회원이 예약한 객실번호, 객실타입, 결제요금, 체크인/체크아웃 날짜를 보여준다.
[예약 취소]
- 예약 취소는 서비스 입력창에 'booking delete' 라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있는 상태에서만 예약 취소가 가능하다.
- 예약 취소가 가능한 기준은 회원이 예약한 객실의 체크인 날짜가 현재(오늘) 날짜를 기준으로 지나지 않았다면 취소가 가능하다.
- 일반 회원이 아닌 관리자는 모든 예약 건을 취소할 수 있는 권한이 있다.
- 일반 회원이 해당 서비스를 실행했다면, 취소할 수 있는 예약이 몇 건인지 안내하고, 1건 이상의 예약이 있다면 취소 가능한 예약 리스트를 보여준다.
- 예약 취소를 계속 진행한다면 예약 취소가 완료되었다는 안내와 함께 해당 날짜 기간의 객실 예약여부를 모두 '예약가능' 으로 변경한다.
[회원 로그인]
- 회원 로그인은 서비스 입력창에 'guest login' 이라는 명령어를 입력해야 실행이 가능하다.
- 로그아웃이 되어있는 상태에서만 로그인이 가능하다.
- ID, PW를 등록된 모든 회원에서 확인하여 정보가 일치하면 로그인에 성공하고, 정보가 일치하지 않거나 등록되지 않았다면 로그인에 실패하게 된다.
- 로그인에 성공 시 로그인이 완료되었다는 안내를 해준다.
[회원 로그아웃]
- 회원 로그아웃은 서비스 입력창에 'guest logout' 이라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있는 상태에서만 로그아웃이 가능하다.
- 로그아웃에 성공 시 로그아웃이 완료되었다는 안내를 해준다.
[회원가입]
- 회원가입은 서비스 입력창에 'guest join' 이라는 명령어를 입력해야 실행이 가능하다.
- 로그아웃이 되어있는 상태에서만 회원가입이 가능하다.
- ID를 입력할 때 기존 회원의 ID와 중복된다면 회원가입이 불가하고, PW를 입력할 때 PW 체크를 하게되는데 이 때 일치하지 않게되면 회원가입이 불가하다.
- 가입 완료 시 가입에 성공했다는 안내와 함께 새로운 회원의 정보를 추가한다.
[숙박 리뷰 남기기]
- 리뷰 남기기는 서비스 입력창에 'review write' 라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있는 상태에서만 리뷰 남기기가 가능하다.
- 회원의 역대 예약 목록 중 현재(오늘) 날짜를 기준으로 체크아웃 날짜가 지난 예약 건을 기준으로 총 몇 건의 대해 리뷰 작성이 가능하다는 안내와 함께 리뷰 작성이 가능하다.
- 만약 조건에 맞는 예약 리스트가 없다면 리뷰는 작성할 수 없다.
[리뷰 보기]
- 리뷰 보기는 서비스 입력창에 'review list' 라는 명령어를 입력해야 실행이 가능하다.
- 로그인이 되어있지 않는 상태에서도 리뷰 보기가 가능하다.
- 내용은 객실번호, 평점, 작성자ID, 내용을 보여준다.
[숙박 리뷰 html로 추출하기]
- html 추출하기는 서비스 입력창에 'export html' 라는 명령어를 입력해야 실행이 가능하다.
- 서비스 실행과 동시에 전체 리뷰 건에 대해서 html 작업을 하여 파일에 저장한다.
- 각 html 파일은 한 페이지 당 하나의 리뷰 내용을 담고 있으며, 내용은 리뷰 보기와 동일하다.
[데이터 설계]
- 다음은 시스을 구성할 때 필요한 데이터들을 설계하였다.
- 해당 데이터들은 나중에 DB 설계 시 필요한 것들 이라고 생각하면 좋다.
[회원(Guest)]
- id : 회원번호 (INT, UNSIGNED, NOT NULL, PRIMARY KEY, AUTO_INCREMENT)
- regDate : 회원등록날짜 (DATETIME, NOT NULL)
- loginId : 로그인ID (CHAR(100), NOT NULL, UNIQUE)
- loginPw : 로그인PW (CHAR(100), NOT NULL)
- name : 이름 (CHAR(100), NOT NULL)
- email : 이메일 주소 (CHAR(100), NOT NULL)
- phoneNum : 핸드폰 번호 (CHAR(100), NOT NULL)
[객실(Room)]
- id : 객실 분류번호 (INT, UNSIGNED, NOT NULL, PRIMARY KEY, AUTO_INCREMENT)
- roomNum : 객실의 호수 - 1호부터 5호까지 (INT, UNSIGNED, NOT NULL)
- floor : 객실의 층수 - 3층부터 5층까지 (INT, UNSIGNED, NOT NULL)
- type : 객실의 타입 – 호수가 홀수면 싱글룸, 짝수면 더블룸 (INT, UNSIGNED, NOT NULL)
- checkInDate : 체크인날짜 (CHAR(100))
- checkOutDate : 체크아웃날짜 (CHAR(100))
- booked : 예약여부 – ‘예약가능’ 또는 ‘예약불가’ (CHAR(100), NOT NULL)
- dayOfSelect : 선택 날짜 – 예약하고싶은 날짜 (DATE, NOT NULL)
[예약 목록(Booking)]
- id : 예약번호 (INT, UNSIGNED, NOT NULL, PRIMARY KEY, AUTO_INCREMENT)
- checkInDate : 체크인날짜 (DATE, NOT NULL)
- checkOutDate : 체크아웃날짜 (DATE, NOT NULL)
- roomId : 객실번호 - 301호부터 505호까지 (INT, UNSIGNED, NOT NULL)
- guestName : 예약자이름 (CHAR(100), NOT NULL)
- guestPhone : 예약자 핸드폰 번호 (CHAR(100), NOT NULL)
- roomType : 객실의 타입 – 객실번호가 홀수면 싱글룸, 짝수면 더블룸 (INT, UNSIGNED, NOT NULL)
- bookingPay : 결제요금 (INT, UNSIGNED, NOT NULL)
[리뷰(Review)]
- id : 리뷰번호 (INT, UNSIGNED, NOT NULL, PRIMARY KEY, AUTO_INCREMENT)
- regDate : 리등록날짜 (DATETIME, NOT NULL)
- bookingId : 예약번호 (INT, UNSIGNED, NOT NULL)
- guestId : 회원번호 (INT, UNSIGNED, NOT NULL)
- body : 후기 내용 (TEXT, NOT NULL)
- score : 평점 (INT, UNSIGNED, NOT NULL)
반응형
'프로젝트 > [Java] 호텔 예약 관리 프로그램 제작' 카테고리의 다른 글
[Java] 호텔 예약 관리 프로그램 제작(5) (0) | 2024.04.16 |
---|---|
[Java] 호텔 예약 관리 프로그램 제작(4) (0) | 2024.04.16 |
[Java] 호텔 예약 관리 프로그램 제작(3) (0) | 2024.04.16 |
[Java] 호텔 예약 관리 프로그램 제작(2) (0) | 2024.04.16 |
[Java] 호텔 예약 관리 프로그램 제작(1) (0) | 2024.04.16 |