About Project/My Projects

호텔 예약 프로그램 만들기 : Only Java

마이트너 2023. 6. 7. 20:02

작성 일자

20230607 : 설계 및 Receipt 클래스 DummyData 세우기

20230608 : Main 클래스에 ReserveCheck와 ReserveCancle 클래스를 연결하기

20230609 : 최종 완성본 깃허브 링크 삽입

 

목 차

오늘의 TIL 주제

오늘의 사설

 

✅ 코딩하기 전 : 요구사항 분석
✅ 코딩하기 전 : 전체 구상

✅ 코딩하기 전 : 소프트웨어 설계
✅ 코딩하기 전 : 역할분담

 

오늘의 회고

 

✅관련 배경이론 습득 : 오늘 공부한 이론 요점정리

✅참고한 자료모음

 


오늘의 TIL 주제

기술 스택 : Java

프로젝트명 : 호텔 예약 프로그램 만들기 - 백엔드 팀 프로젝트

 

 

오늘의 사설

이번 프로젝트는 팀 프로젝트이기 때문에

요구사항 분석부터 시작해서 팀과 함께 하였기에

오늘치 TIL은 팀과 함께 작성한 자료를 기반으로 하고 있다.

 

따라서 부분적으로 직접 작성하지 않은 부분이 있음을 미리 말하고 시작하려 한다 !


✅ 코딩하기 전 : 요구사항 분석

(출처 : 스파르타 코딩클럽 내일배움캠프 6기 ch2 팀프로젝트 발제 자료 "더보기 클릭")

더보기
  1. 호텔은 여러 객실, 보유 자산을 가지고 있다.
  2. 객실은 객실 당 하루에 한 사람만 예약이 가능하다.
  3. 객실은 크기, 숙박비를 가진다.
  4. 예약은 객실, 고객의 이름, 고객의 전화번호, 예약 날짜를 가지고 있다.
    (1)전화 번호 제한(XXX-XXXX-XXXX) 정규 표현 식
    (2)예약 날짜 **** 날짜는 ISO 8601 형식으로 조합된 UTC 날짜 및 시간 예) 2016-10-27T17:13:40+00:00
  5. 고객은 이름, 전화번호, 소지금을 가진다. 이때, 고객 소지금보다 비싼 방은 예약 불가
  6. 호텔은 모든 예약 목록을 조회 할 수 있다.
  7. 고객은 자신의 예약 목록을 조회 할 수 있다. 이때, 예약 번호로 예약 내역을 조회한다
  8. 고객은 자신의 예약을 취소 할 수 있다.
고객이 호텔 예약 시에 예약 번호(id)를 반환 (uuid 활용)

(1) 고객이 호텔 예약에 성공하면 예약 번호(id)를 받는다.
(2) 고객이 예약 목록을 조회 시 예약 번호도 같이 조회 된다.

(3) 고객이 예약 취소 시 예약 번호를 통해 자신의 특정 예약을 취소한다.

1. 일단 프로그램이 시작되면 관리자 프로그램인지 사용자 프로그램인지 선택해야함

->그래야 프로그램이 시작되면서 유형을 선택할 수 있음 (의견이 프로그램형, 대화형으로 나왔기 때문에 사용자 입장에서는 대화형, 관리자 입장에서는 프로그램형으로 하면 좋을 것 같다.)

 

2. 객실은 객실당 하루에 한 사람만이 가능하다

-> 프로그램 자체에서 오늘의 날짜를 알고 있어야 하며 같은 사람이 방 2개를 예약하는 일이 없어야 함 + 프로그램에서 제공할 날짜 선택권에 대해서 고민해야 함

 

3. 객실의 크기를 정할 기준을 세워야 함 ex. 침대 수 or 크기

 

4. 예약은 객실 , 고객의 이름, 고객의 전화번호(정규 표현식) , 예약 날짜 (날짜는 ISO 8601 형식으로 조합된 UTC 날짜 및 시간 예) 2016-10-27T17:13:40+00:00) 를 가지고 있다.

 

5. 고객의 이름 , 전화번호, 소지금을 가진다. 고객 소지금 보다 비싼 방은 예약불가.

 

6. 호텔은 모든 예약 목록을 조회 할 수 있다.


✅ 코딩하기 전 : 전체 구상 및 시뮬레이션

주제 : 호텔 예약 프로그램 컨셉

컨셉 : 대화형, 사용자 입장, 회원제 예약 프로그램

 

초본 : 이름, 전화번호, 소지금 -> Dummy

1차 DEVELOP 단계 : 이름, 전화번호, 소지금 -> Scanner, Math.random

2차 DEVELOP 단계 : 어디 갈지, 기간 설정, 정렬 설정 -> Switch


1. 고객 정보 입력

1) GuestData : 손님의 이름, 전화번호 -> Dummy

 

2. 프로그램 이용자 선택

1) Who : 관리자/사용자

 

3. 소지금별 호텔 방 목록 조회

1) RoomData : 날짜별 호텔 방의 정보 (2주, ?층 ?호, 사이즈, 체크인, 체크아웃) -> Dummy

2) RoomList : 날짜 별 호텔 방 (정렬은 층별 객실 순, 품절 된 방은 목록의 가장 마지막 보내기) -> Array/Collection

3) SelectRoom : 사용자 호텔 방, 날짜 선택

 

4. 날짜, 호텔 방 선택

-사용자

1) ConfirmRoom : 선택 여부 확인 -> RoomData

 

5. 결제

-사용자

1) Guest손님의 소지금 정보 받기

2) 결제 가능 여부 확인

3) 결제하기

4) 결제완료

 

1) 예약 번호 출력

2) 6. 영수증

3) RoomData (체크인 / 아웃 시간 등)보여주기

 

 

7 . 예약확인

-사용자

1) 정보 (객실, 이름, 전화번호 예약 날짜)

2) 예약번호 출력

 

-관리자

1) 모든 객실 조회


(작성 내용 : 코딩하기 전에 프로그램 실행 시뮬레이션해보기 "더보기 클릭")

더보기

안녕하세요 스파르타 호텔입니다.

어떤 서비스를 이용하시겠습니까?

  1.  
  2. 예약하기 2. 예약확인 3. 예약취소 4. 종료

1

호텔 이용하실 날짜를 알려주세요

-6월 캘린더, 월/일 로 입력해주세요

~월 일에 이용가능한 객실 목록입니다.

객실 다 보여주기

방선택시 디테일 보여주기

예약하시겠습니까?

  1.  
  2. 확인 2.취소

1

고객님의 정보를 입력해주세요

(이름/전화번호)

박현규/01011111111

 

결제 금액은 120000원입니다.

 

결제하시겠습니까?

  1. 확인 2. 취소

 

결제성공!

 

~~~~~~ 영수증 ~~~~~~

reserveId : uuid

~~~~~~~~~~~~~~~~~~

 

안녕하세요 스파르타 호텔입니다.

어떤 서비스를 이용하시겠습니까?

  1. 예약하기 2. 예약확인 3. 예약취소 4. 종료

2

이름과 전화번호를 알려주세요

(이름/전화번호)

박현규/01011111111

 

~~~~~~ 예약 내역 ~~~~~~

uuid

~~~~~~~~~~~~~~~~~~~

  1. 예약 취소 하기 2. 돌아가기

1

취소하실 예약건의 id를 입력해주세요

1341241

~~~~~~ 예약 내역 ~~~~~~

uuid

~~~~~~~~~~~~~~~~~~

취소하시겠습니까?

  1. 확인 2. 취소

1

취소되었습니다

 

안녕하세요 스파르타 호텔입니다.

어떤 서비스를 이용하시겠습니까?

  1. 예약하기 2. 예약확인 3. 예약취소 4. 종료

3

취소하실 예약건의 id를 입력해주세요

1341241

~~~~~~ 예약 내역 ~~~~~~

uuid

~~~~~~~~~~~~~~~~~~

취소하시겠습니까?

  1. 확인 2. 취소

1

취소되었습니다 .

 

 


✅ 코딩하기 전 : 소프트웨어 설계 


✅ 코딩하기 전 : 역할 분담

  • 박현규(팀장) : 전체적으로 방향성 및 최종 수정 단계 (EX. 병합, 골격, 코칭)
  • 송어진(나), 정민재 : '2.예약확인(Receipt, ReserveCheck Class)', '3. 예약 취소(ReserceCancle Class)' 구현
  • 최종우, 정지상 : '1. 예약하기(Reserve, ReserveList, ReserveDetail Class)' 구현

✅ 결과물

[깃허브] song-eojin/SpartaHotel: 호텔 예약 프로그램 (내일배움캠프 Chapter2 팀 프로젝트) (github.com)


오늘의 회고

 


✅ 배경이론 습득 : 오늘 공부한 이론 요점정리하기

 

 

 

✅ 참고한 자료모음

[블로그] Java에서 몇 초를 지연시키는 방법 | Delft Stack


 

728x90