반응형

 

문제

 

호텔 운영을 관리하는 프로그램 작성.(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 <-- 입력

**************************
호텔 문을 닫았습니다.

 

 

 

정답

 

package kr.or.ddit.basic.HomeWork;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class HomeWork3 {
	private Scanner scan;
	private Map<Integer, HotelVo> hotelMap;
	
	public HomeWork3() {
		scan = new Scanner(System.in);
		hotelMap = new HashMap<Integer, HotelVo>();
	}

	public static void main(String[] args) {
		new HomeWork3().startHotel();
	}
	
	public void startHotel() {
		System.out.println("**************************\r\n" + 
				"호텔 문을 열었습니다.\r\n" + 
				"**************************");
		
		while(true) {
			hotelMenu();
			
			System.out.print("메뉴 선택 => ");
			int menu = scan.nextInt();
			
			switch (menu) {
			case 1: insert();
				break;
			case 2: delete();
				break;
			case 3: displayAll();
				break;
			case 4: end();
				return;
			default:
				break;
			}
		}
	}
	
	private void displayAll() {
		/*
		 *  *******************************************
			어떤 업무를 하시겠습니까?
			1.체크인  2.체크아웃 3.객실상태 4.업무종료
			*******************************************
			메뉴선택 => 3 <-- 입력
		
			방번호 : 102, 투숙객 : 성춘향
			방번호 : 101, 투숙객 : 홍길동
		 */
		Set<Integer> keySet = hotelMap.keySet();
		
		if(keySet.size() == 0) {
			System.out.println("투숙한 사람이 없습니다.");
			return;
		}
		
		Iterator<Integer> it = keySet.iterator();
		while (it.hasNext()) {
			int doorNum = it.next();
			HotelVo h = hotelMap.get(doorNum);
			System.out.println("방번호 : " + h.getNum() + ",\t투숙객 : " + h.getName());
		}
		System.out.println();
	}

	private void delete() {
		/*
		 *  어느방을 체크아웃 하시겠습니까?
			방번호 입력 => 101 <-- 입력
			101방에는 체크인한 사람이 없습니다.
		 */
		System.out.println("\n어느방을 체크아웃 하시겠습니까?");
		System.out.print("방번호 입력 => ");
		int doorNum = scan.nextInt();
		System.out.println();
		
		if(hotelMap.get(doorNum) == null) {
			System.out.println(doorNum + "방에는 체크인한 사람이 없습니다.");
			return;
		}
		
		System.out.println("체크아웃 되었습니다.");
		hotelMap.remove(doorNum);
	}

	private void insert() {
		/*
		 *  *******************************************
			어떤 업무를 하시겠습니까?
			1.체크인  2.체크아웃 3.객실상태 4.업무종료
			*******************************************
			메뉴선택 => 1 <-- 입력
		
			어느방에 체크인 하시겠습니까?
			방번호 입력 => 101 <-- 입력
		
			누구를 체크인 하시겠습니까?
			이름 입력 => 홍길동 <-- 입력
			체크인 되었습니다.
		 */
		System.out.println();
		System.out.println("어느방에 체크인 하시겠습니까?");
		System.out.print("방번호 입력 => ");
		int doornum = scan.nextInt();
		System.out.println();
		
		if(hotelMap.get(doornum) != null) {
			System.out.println("체크인한 사람이 존재합니다.\n");
			return;
		}
		
		System.out.print("누구를 체크인 하시겠습니까?");
		String name = scan.next();
		
		hotelMap.put(doornum, new HotelVo(doornum, name));
		
		System.out.println("\n체크인 되었습니다.");
	}

	private void end() {
		System.out.println();
		System.out.println("**************************\r\n" + 
				"호텔 문을 닫았습니다.\r\n" + 
				"**************************");
	}
	
	private void hotelMenu() {
		System.out.println("*******************************************\r\n" + 
				"어떤 업무를 하시겠습니까?\r\n" + 
				"1.체크인  2.체크아웃  3.객실상태  4.업무종료\r\n" + 
				"*******************************************");
	}
}

class HotelVo {
	private int num;
	private String name;
	
	public HotelVo(int num, String name) {
		super();
		this.num = num;
		this.name = name;
	}
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

결과 화면1-1 : 체크인 후 중복 체크인

 

결과 화면1-2 : 체크인 후 객실상태 확인

 

결과 화면1-3 : 체크아웃 후 객실 상태 확인 및 업무종료

 

 

반응형