본문으로 바로가기

11_호텔관리

category HighJava 2020. 9. 17. 11:37

호텔 운영을 관리하는 프로그램 작성.(Map이용)

 - 키값은 방번호 

 

실행 예시)


**************************

호텔 문을 열었습니다.

**************************


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 1 <-- 입력


어느방에 체크인 하시겠습니까?

방번호 입력 => 101 <-- 입력


누구를 체크인 하시겠습니까?

이름 입력 => 홍길동 <-- 입력

체크인 되었습니다.


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 1 <-- 입력


어느방에 체크인 하시겠습니까?

방번호 입력 => 102 <-- 입력


누구를 체크인 하시겠습니까?

이름 입력 => 성춘향 <-- 입력

체크인 되었습니다


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 3 <-- 입력


방번호 : 102, 투숙객 : 성춘향

방번호 : 101, 투숙객 : 홍길동


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 2 <-- 입력


어느방을 체크아웃 하시겠습니까?

방번호 입력 => 101 <-- 입력

체크아웃 되었습니다.


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 1 <-- 입력


어느방에 체크인 하시겠습니까?

방번호 입력 => 102 <-- 입력


누구를 체크인 하시겠습니까?

이름 입력 => 허준 <-- 입력

102방에는 이미 사람이 있습니다.


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 2 <-- 입력


어느방을 체크아웃 하시겠습니까?

방번호 입력 => 101 <-- 입력

101방에는 체크인한 사람이 없습니다.


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 3 <-- 입력


방번호 : 102, 투숙객 : 성춘향


*******************************************

어떤 업무를 하시겠습니까?

1.체크인  2.체크아웃 3.객실상태 4.업무종료

*******************************************

메뉴선택 => 4 <-- 입력


**************************

호텔 문을 닫았습니다.

**************************


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package kr.or.ddit.basic;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
 
public class T11_Hotel {
 
    private Scanner scan;
      private Map<Integer, CheckIn> HotelCheck;
 
      public T11_Hotel() {
         scan = new Scanner(System.in);
         HotelCheck = new HashMap<>();
      }
 
      // 메뉴를 출력하는 메서드
      public void HotelMenu() {
         System.out.println();
         System.out.println("=====================");
         System.out.println("   호텔 문을 열었습니다.");
         System.out.println("=====================");
         System.out.println();
         System.out.println("어떤 업무를 하시겠습니까?");
         System.out.println("1.체크인 2.체크아웃 3.객실상태 4.업무종료");
      }
 
      // 프로그램을 시작하는 메서드
      public void HotelMenuStart() {
       
         while (true) {
 
            HotelMenu(); // 메뉴 출력
 
            int menuNum = scan.nextInt(); // 메뉴 번호 입력
 
            switch (menuNum) {
            case 1:
               in(); // 체크인
               break;
            case 2:
               out(); // 체크아웃
               break;
            case 3:
               showRoom(); // 객실상태
               break;        
            case 4:
               System.out.println("=====================");
            System.out.println("   호텔 문을 닫았습니다.");
            System.out.println("=====================");
              return;
            default:
               System.out.println("잘못 입력했습니다. 다시입력하세요.");
            } // switch문
         } // while문
      }
 
      /**
       * 객실 체크인 메서드
       */
      private void in() {
         System.out.println();
         System.out.println("어느방에 체크인 하시겠습니까?");
         System.out.print("방번호 입력 =>");
         int roomNum = scan.nextInt();
 
         // 이미 체크인된 방인지 검사
         // get()메서드로 값을 가져올 때 가져올 자료가 없으면 null을 반환한다.
         if (HotelCheck.get(roomNum) != null) {
            System.out.println(roomNum + "방은 이미 체크인된 방입니다.");
            return// 메서드 종료
         }
         System.out.println("누구를 체크인 하시겠습니까? =>");
         String name = scan.next();
         
         HotelCheck.put(roomNum, new CheckIn(name, roomNum));
         System.out.println(roomNum + "방 체크인 되었습니다.");
      }
 
      /**
       * 객실 체크아웃 메서드
       */
      private void out() {
         System.out.println();
         showRoom();
         System.out.println("어느방을 체크아웃 하시겠습니까?");
         System.out.print("방번호 입력 =>");
         int roomNum = scan.nextInt();
 
         // remove(key) => 삭제 성공하면 삭제된 value값을 반환하고, 실패하면 null을 반환함.
         if (HotelCheck.remove(roomNum) == null) {
            System.out.println(roomNum + "방은 체크인된 방이 아닙니다..");
         } else {
            System.out.println(roomNum + "방을 체크아웃 하였습니다.");
         }
 
      }
 
      /**
       * 객실 상태 메서드
       */
      private void showRoom() {
         Set<Integer> keySet = HotelCheck.keySet();
 
         if (keySet.size() == 0) {
            System.out.println("등록된 체크인 정보가 없습니다.");
         } else {
            Iterator<Integer> it = keySet.iterator();
 
 
            while (it.hasNext()) {
               int roomNum = it.next(); // 키값
               CheckIn c = HotelCheck.get(roomNum);
               System.out.println(" " + "방번호:" + "\t" + c.getRoomNum() + "\t" + "투숙객:" + c.getName());
            }
         }
         System.out.println("================================================");
         System.out.println("출력 완료.");
      }
 
      public static void main(String[] args) {
         new T11_Hotel().HotelMenuStart();
      }
   }
 
   /**
    * 체크인 정보를 저장하기 위한 VO 클래스
    */
   class CheckIn {
      private String name; // 이름
      private int roomNum; // 방번호   
      
      
      
      public CheckIn(String name, int roomNum) {
         super();
         this.name = name;
         this.roomNum = roomNum;
      }
      
      public String getName() {
         return name;
      }
      public void setName(String name) {
         this.name = name;
      }
      public int getRoomNum() {
         return roomNum;
      }
      public void setRoomNum(int roomNum) {
         this.roomNum = roomNum;
      }
 
      @Override
      public String toString() {
         return "CheckIn [name=" + name + ", roomNum=" + roomNum + "]";
      }
 
      
   }
cs


'HighJava' 카테고리의 다른 글

13_Properties  (0) 2020.09.17
12_전화번호부관리  (0) 2020.09.17
10_Map  (0) 2020.09.17
09_Hash  (0) 2020.09.17
08_숫자야구  (0) 2020.09.17