blues_log

오늘 학습한 내용

  • Java : 팀 과제
  • 프로그래머스 문풀

팀 과제 (호텔 예약)

우선 전체 코드는 다음 링크를 확인하자.

https://github.com/hakjunjoo/Hotel_05

 

GitHub - hakjunjoo/Hotel_05: 호텔예약 팀과제

호텔예약 팀과제. Contribute to hakjunjoo/Hotel_05 development by creating an account on GitHub.

github.com


내가 담당한 내용은 호텔 예약 취소 기능이었다.

 

구현한 내용은 다음과 같다.

 private static void cancelReservation() {
        Scanner sc = new Scanner(System.in);
        boolean exist = true;
        while(exist) {
            // 1. 예약 취소 화면 출력
            System.out.println("====================================");
            System.out.println("예약 취소를 선택하셨습니다.");
            System.out.println("예약 번호를 조회합니다. 예약 번호를 입력해주세요");
            System.out.print("여기에 예약번호를 입력해주세요 => ");
            UUID cancelID = UUID.fromString(sc.next());
            System.out.print("여기에 예약하신 전화번호 뒷 자리를 입력해주세요 => ");
            String phoneNum = sc.next();

            // 2. 예약 번호 조회
            for (int i = 0;  i < hotel.getreservationlist().size(); i++) { // 예약 번호와 전화 번호가 맞는 경우
                String phone = hotel.getreservationlist().get(i).getCutomer().getPhoneNumber().substring(9);
                if(cancelID.equals(hotel.getreservationlist().get(i).getUuid()) && phoneNum.equals(phone)) {
                    exist = false;
                    System.out.println("====================================");
                    System.out.println("고객 이름    : " + hotel.getreservationlist().get(i).getCutomer().getName());
                    System.out.println("고객 번호    : " + hotel.getreservationlist().get(i).getCutomer().getPhoneNumber());
                    System.out.println("객실        : " + hotel.getreservationlist().get(i).getHotelRoom().getroomsize());
                    System.out.println("예약 날짜    : " + hotel.getreservationlist().get(i).getDate());
                    System.out.println("====================================");
                    System.out.println("위의 예약을 취소하시겠습니까?"); // 3. 예약 취소 확인
                    System.out.println("\n1. 예.         2. 아니오.");
                    System.out.print("여기에 번호를 입력해주세요 => ");

                    int a = sc.nextInt();
                    switch (a) {
                        case 1 -> {   // 4. 예약 취소
                            hotel.getreservationlist().remove(i);
                            System.out.println("====================================");
                            System.out.println("해당 예약을 취소했습니다.");
                            System.out.println("초기 화면으로 돌아갑니다.");
                        }
                        case 2 -> {
                            System.out.println("====================================");
                            System.out.println("이전 화면으로 돌아갑니다.");
                        }
                    }
                }
            }
            if(exist) {
                System.out.println("====================================");
                System.out.println("입력하신 예약번호 또는 전화번호 뒷 자리가 다릅니다.");
                System.out.println("이전 화면으로 돌아갑니다.");
            }
        }
    }

주요 기능은

  • uuid를 활용하여 예약 번호를 부여 받고, 조회나 삭제 기능에 활용할 수 있도록 하였다.
  • 예약 번호와 전화번호 뒷자리가 모두 맞아야만 해당 예약 내용이 출력될 수 있도록 반복문 속 조건문을 구성했다.

아쉬운 내용

하나의 메소드가 너무 긴 문장을 가지고 있으면 가독성이 떨어지는 느낌을 받아서 코드를 최대한 간결하게 구현하고 싶었는데 아직 스캐너로 입력받는 부분이 능숙하지 않아서 결국 하나의 메소드 안에 모든 기능을 구현했다. 이 부분이 가장 아쉬운 부분인 것 같다.

 

더 많이 공부하고 더 많이 코드를 구현해보면 많이 좋아질 것이다 !!