문제)
호텔 운영을 관리하는 프로그램 작성.(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 <-- 입력
**************************
호텔 문을 닫았습니다.
**************************
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Homework03_hotel {
private Scanner scan;
// key값 Integer(방번호), value값 HotelVO
private Map<Integer, HotelVO> HotelMap;
public Homework03_hotel() {
scan = new Scanner(System.in);
HotelMap = new HashMap<Integer, HotelVO>();
}
public void printVar() {
System.out.println("***************************************");
}
public void printMenu() {
System.out.println();
printVar();
System.out.println("\t어떤 업무를 하시겠습니까?");
System.out.println();
System.out.println("1. 체크인 2.체크아웃 3.객실상태 4.업무종료");
printVar();
}
public void hotelStart() {
printVar();
System.out.println();
System.out.println("\t호텔 문을 열었습니다.");
System.out.println();
printVar();
while (true) {
printMenu();
int menuNum = scan.nextInt(); // 메뉴 번호 입력
switch (menuNum) {
case 1:
checkIn(); // 체크인
break;
case 2:
checkOut(); // 체크아웃
break;
case 3:
displayRoom(); // 객실상태
break;
case 4:
close(); // 업무종료
return;
default:
System.out.println("잘못 입력했습니다. 다시 입력하세요.");
} // switch문
} // while문
}
private void close() {
printVar();
System.out.println("\t호텔 문을 닫았습니다. 안녕히 가세요.");
printVar();
}
private void displayRoom() {
printVar();
Set<Integer> keySet = HotelMap.keySet();
Iterator<Integer> it = keySet.iterator();
// 순번
while (it.hasNext()) {
Integer roomNo = it.next();
HotelVO hvo = HotelMap.get(roomNo);
System.out.println("\t방 번호: " + hvo.getRoomNo() + ", 투숙객: " + hvo.getName());
}
printVar();
}
private void checkOut() {
System.out.println();
System.out.println("어느 방을 체크아웃 하시겠습니까?");
System.out.print("방 번호 입력 => ");
Integer roomNo = scan.nextInt();
// 체크아웃 잘 됐는지 확인하기 위한 널 체크
if (HotelMap.remove(roomNo) == null) {
System.out.println(roomNo + "번 방에는 체크인한 사람이 없습니다.");
} else {
System.out.println(roomNo + "번 방 체크아웃 되었습니다.");
}
}
/**
* 호텔 체크인을 하기 위한 메서드
*/
private void checkIn() {
System.out.println();
System.out.println("어느 방에 체크인 하시겠습니까?");
System.out.print("방번호 입력 => ");
Integer roomNo = scan.nextInt();
// 이미 체크인 된 방인지 체크
if (HotelMap.get(roomNo) != null) {
System.out.println(roomNo + "번 방에는 이미 사람이 있습니다.");
return; // 메서드 종료
}
scan.nextLine(); // 버퍼에 남아있는 엔터키 비워주기
System.out.println("누구를 체크인 하시겠습니까?");
System.out.print("이름 입력 => ");
String name = scan.nextLine();
HotelMap.put(roomNo, new HotelVO(roomNo, name));
System.out.println("체크인 되었습니다.");
}
public static void main(String[] args) {
new Homework03_hotel().hotelStart();
}
class HotelVO {
private Integer roomNo; // 방번호
private String name; // 이름
// 생성자
public HotelVO(Integer roomNo, String name) {
super();
this.roomNo = roomNo;
this.name = name;
}
public Integer getRoomNo() {
return roomNo;
}
public void setRoomNo(Integer roomNo) {
this.roomNo = roomNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "HotelVo [roomNo=" + roomNo + ", name=" + name + "]";
}
}
}
'중급과정 > HighJava' 카테고리의 다른 글
[Java] 행성의 면적 구하기 (Enum) (0) | 2023.11.30 |
---|---|
[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections) (0) | 2023.11.30 |
[Java] 학생 리스트 정렬 (List, Comparable, Comparator) (0) | 2023.11.30 |
[Java] Thread(스레드)를 이용한 알파벳 대문자 출력과 출력순대로 순위 매기는 프로그램 작성예제 (0) | 2023.11.29 |
[Java] Thread(스레드)를 이용한 가위바위보 예제 (1) | 2023.11.29 |