Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오라클
- 생성자오버로드
- 정수형타입
- 자바
- 예외처리
- 인터페이스
- 어윈 사용법
- oracle
- 메소드오버로딩
- 참조형변수
- exception
- 객체 비교
- 한국건설관리시스템
- 대덕인재개발원
- 추상메서드
- GRANT VIEW
- 컬렉션 타입
- NestedFor
- abstract
- 제네릭
- Java
- cursor문
- 환경설정
- 집합_SET
- 다형성
- 컬렉션프레임워크
- 사용자예외클래스생성
- 예외미루기
- EnhancedFor
- 자동차수리시스템
Archives
- Today
- Total
거니의 velog
230829_컬렉션 프레임워크 6 본문
[MyHotel.java]
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*문제) 호텔 객실을 관리하는 프로그램을 작성하시오.
조건1) 호텔 객식을 나타내는 Room클래스는 방번호(int), 방종류, 투숙객이름 필드로 구성되어 있고
방번호와 방종류는 다음과 같다.
- 201~209 : 싱글룸
- 301~309 : 더블룸
- 401~409 : 스위트룸
조건2) 전체 객실 관리는 Map을 이용한다.
(Map의 key값은 방번호로 하고 value값은 Room의 인스턴스로 한다.)
생성자에서는 방번호와 방종류를 초기화한다.
실행예시)
*********************************************
호텔문을 열었습니다. 어서오십시요.
*********************************************
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 1 <--- 입력
----------------------------------------------
체크인 작업
----------------------------------------------
* 201~209 : 싱글룸
* 301~309 : 더블룸
* 401~409 : 스위트룸
----------------------------------------------
방 번호 입력 >> 101 <--- 입력
101호 객실은 존재하지 않습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 1 <--- 입력
----------------------------------------------
체크인 작업
----------------------------------------------
* 201~209 : 싱글룸
* 301~309 : 더블룸
* 401~409 : 스위트룸
----------------------------------------------
방 번호 입력 >> 201 <--- 입력
누구를 체크인 하시겠습니까?
이름 입력 >> 홍길동
체크인이 완료되었습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 1 <--- 입력
----------------------------------------------
체크인 작업
----------------------------------------------
* 201~209 : 싱글룸
* 301~309 : 더블룸
* 401~409 : 스위트룸
----------------------------------------------
방 번호 입력 >> 201 <--- 입력
201호 객실은 이미 손님이 있습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 3 <--- 입력
----------------------------------------------
현재 객실 상태
----------------------------------------------
방 번호 방 종류 투숙객 이름
----------------------------------------------
201 싱글룸 홍길동
202 싱글룸 -
203 싱글룸 -
204 싱글룸 -
205 싱글룸 -
206 싱글룸 -
207 싱글룸 -
208 싱글룸 -
209 싱글룸 -
301 더블룸 -
302 더블룸 -
303 더블룸 -
304 더블룸 -
305 더블룸 -
306 더블룸 -
307 더블룸 -
308 더블룸 -
309 더블룸 -
401 스위트룸 -
402 스위트룸 -
403 스위트룸 -
404 스위트룸 -
405 스위트룸 -
406 스위트룸 -
407 스위트룸 -
408 스위트룸 -
409 스위트룸 -
----------------------------------------------
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 2 <--- 입력
----------------------------------------------
체크아웃 작업
----------------------------------------------
체크아웃 할 방 번호를 입력하세요.
방번호 입력 >> 101 <--- 입력
101호 객실은 존재하지 않습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 2 <--- 입력
----------------------------------------------
체크아웃 작업
----------------------------------------------
체크아웃 할 방 번호를 입력하세요.
방번호 입력 >> 303 <--- 입력
303호 객실에는 체크인 한 사람이 없습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 2 <--- 입력
----------------------------------------------
체크아웃 작업
----------------------------------------------
체크아웃 할 방 번호를 입력하세요.
방번호 입력 >> 201 <--- 입력
201호 객실의 홍길동님 체크아웃을 완료하였습니다.
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 3 <--- 입력
----------------------------------------------
현재 객실 상태
----------------------------------------------
방 번호 방 종류 투숙객 이름
----------------------------------------------
201 싱글룸 -
202 싱글룸 -
203 싱글룸 -
204 싱글룸 -
205 싱글룸 -
206 싱글룸 -
207 싱글룸 -
208 싱글룸 -
209 싱글룸 -
301 더블룸 -
302 더블룸 -
303 더블룸 -
304 더블룸 -
305 더블룸 -
306 더블룸 -
307 더블룸 -
308 더블룸 -
309 더블룸 -
401 스위트룸 -
402 스위트룸 -
403 스위트룸 -
404 스위트룸 -
405 스위트룸 -
406 스위트룸 -
407 스위트룸 -
408 스위트룸 -
409 스위트룸 -
----------------------------------------------
-----------------------------------------------------------
어떤 업무를 하시겠습니까?
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
-----------------------------------------------------------
선택>> 4 <--- 입력
*********************************************
호텔문을 닫았습니다.
**********************************************/
public class MyHotel {
private HashMap<Integer, Room2> hotelMap;
private Scanner sc;
// 생성자 ==> 객실 초기화 작업
// - 201~209 : 싱글룸
// - 301~309 : 더블룸
// - 401~409 : 스위트룸
public MyHotel() {
hotelMap = new HashMap<Integer, Room2>();
sc = new Scanner(System.in);
// 객실 초기화
for(int i=2; i<=4; i++) {
// 방 종류 구하기
String roomType = null;
switch(i) {
case 2: roomType = "싱글룸"; break;
case 3: roomType = "더블룸"; break;
case 4: roomType = "스위트룸"; break;
}
// 각 객실(Room객체)을 생성해서 Map에 저장한다.
for(int j=1; j<=9; j++) {
int roomNum = i * 100 + j;
Room2 room = new Room2(roomNum, roomType);
hotelMap.put(roomNum, room);
}
}
}
public static void main(String[] args) {
new MyHotel().hotelStart();
}
// 시작 메서드
public void hotelStart() {
System.out.println();
System.out.println("**************************************");
System.out.println(" 호 텔 영 업 관 리 프 로 그 램");
System.out.println("**************************************");
System.out.println();
while(true) {
int choice = displayMenu();
switch(choice) {
case 1: // 1. 체크인
checkIn(); break;
case 2: // 2. 체크아웃
checkOut(); break;
case 3: // 3. 객실상태
displayRoomState(); break;
case 4: // 4. 업무종료
System.out.println();
System.out.println("*********************************************");
System.out.println(" 호텔문을 닫았습니다.");
System.out.println("*********************************************");
return;
default:
System.out.println("작업 선택 번호를 잘못 입력했습니다.");
System.out.println("다시 입력하세요...");
}
}
}
// 메뉴를 출력하고 선택 번호를 입력 받아 반환하는 메서드
public int displayMenu() {
System.out.println();
System.out.println("-----------------------------------------------------------");
System.out.println("어떤 업무를 하시겠습니까?");
System.out.println("1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료");
System.out.println("-----------------------------------------------------------");
System.out.print("선택 >> ");
return sc.nextInt();
}
// 체크인 처리 메서드
public void checkIn() {
System.out.println();
System.out.println("----------------------------------------------");
System.out.println(" 체크인 작업");
System.out.println("----------------------------------------------");
System.out.println(" * 201~209 : 싱글룸");
System.out.println(" * 301~309 : 더블룸");
System.out.println(" * 401~409 : 스위트룸");
System.out.println("----------------------------------------------");
System.out.print("방 번호 입력 >> ");
int roomNum = sc.nextInt();
// 입력한 값이 Map의 key값에 없으면 존재하지 않는 방번호 이다.
if(!hotelMap.containsKey(roomNum)) {
System.out.println(roomNum + "호 객실은 존재하지 않습니다.");
return;
}
// 해당 객실에 투숙객이 있는지 검사
if(hotelMap.get(roomNum).getName()!=null) {
System.out.println(roomNum + "호 객실에는 이미 손님이 있습니다.");
return;
}
System.out.println("누구를 체크인 하시겠습니까?");
System.out.print("이름 입력 >> ");
String guestName = sc.next();
// 입력 받은 투숙객 이름을 해당 객실의 투숙객이름으로 저장한다.
hotelMap.get(roomNum).setName(guestName);
System.out.println(guestName + "씨가 " + roomNum + "호 객실에 체크인 되었습니다...");
}
// 객실 상태를 출력하는 메서드
public void displayRoomState() {
System.out.println();
System.out.println("----------------------------------------------");
System.out.println(" 현재 객실 상태");
System.out.println("----------------------------------------------");
System.out.println("방 번호" + "\t\t" + "방 종류" + "\t\t" + "투숙객 이름");
System.out.println("----------------------------------------------");
Set<Integer> roomNumSet = hotelMap.keySet();
ArrayList<Integer> roomNumList = new ArrayList<Integer>(roomNumSet);
Collections.sort(roomNumList); // 방번호를 오름차순으로 정렬
for(int roomNum : roomNumList) {
Room2 r = hotelMap.get(roomNum);
System.out.print(r.getNum() + "\t\t");
System.out.print(r.getType() + "\t\t");
String name = r.getName() == null ? "-" : r.getName();
System.out.println(name);
}
System.out.println("----------------------------------------------");
}
// 체크아웃 처리 메서드
public void checkOut() {
System.out.println();
System.out.println("----------------------------------------------");
System.out.println(" 체크아웃 작업");
System.out.println("----------------------------------------------");
System.out.println("체크아웃 할 방 번호를 입력하세요.");
System.out.print("방번호 입력 >> ");
int roomNum = sc.nextInt();
// 입력한 값이 Map의 key값에 없으면 존재하지 않는 방번호 이다.
if(!hotelMap.containsKey(roomNum)) {
System.out.println(roomNum + "호 객실은 존재하지 않습니다.");
return;
}
// 해당 객실에 투숙객이 없는지 검사
if(hotelMap.get(roomNum).getName()==null) {
System.out.println(roomNum + "호 객실에는 체크인 한 손님이 없습니다.");
return;
}
// 해당 객실에 현재 투숙 중인 투숙객 이름 구하기
String guestName = hotelMap.get(roomNum).getName();
// 체크 아웃 작업은 해당 객실의 투숙객 이름을 null로 변경한다.
hotelMap.get(roomNum).setName(null);
System.out.println(roomNum + "호 객실의 " + guestName + "님이 체크아웃을 완료했습니다.");
}
}
// Room클래스는 방번호(int), 방종류, 투숙객이름 필드로 구성
class Room2 {
private int num; // 방 번호
private String type; // 방 종류
private String name; // 투숙객 이름
public Room2() {}
public Room2(int num, String type) {
super();
this.num = num;
this.type = type;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Room2 [num=" + num + ", type=" + type + ", name=" + name + "]";
}
}
[PropertiesTest.java]
package kr.or.ddit.basic;
import java.util.Properties;
public class PropertiesTest {
public static void main(String[] args) {
/*
* Properties 객체
* - Properties는 Map보다 축소된 기능의 객체라고 할 수 있다.
*
* - Map은 key값과 value 값에 모든 종류의 객체를 사용할 수 있지만
* Properties는 key값과 value 값에 String만 사용할 수 있다.
*
* - Map은 put(), get() 메서드를 이용하여 데이터를 입출력하지만
* Properties는 setProperty(), getProperty() 메서드를 통해서 데이터를 입출력한다.
*
* - Properties는 데이터를 파일로 입출력하는 기능이 있다.
*/
Properties prop = new Properties();
prop.setProperty("name", "홍길동");
prop.setProperty("age", "20");
int age = 30;
// prop.setProperty("age2", age + "");
prop.setProperty("age2", String.valueOf(age));
prop.setProperty("tel", "010-1111-2222");
prop.setProperty("addr", "대전");
//----------------------------------------------------------
String name = prop.getProperty("name");
int tempAge = Integer.parseInt(prop.getProperty("age"));
int tempAge2 = Integer.parseInt(prop.getProperty("age2"));
String tel = prop.getProperty("tel");
String addr = prop.getProperty("addr");
System.out.println("이름 : " + name);
System.out.println("나이 : " + tempAge);
System.out.println("나이2 : " + tempAge2);
System.out.println("전화번호 : " + tel);
System.out.println("주소 : " + addr);
// 이름 : 홍길동
// 나이 : 20
// 나이2 : 30
// 전화번호 : 010-1111-2222
// 주소 : 대전
}
}
'대덕인재개발원 > 대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230830_스레드 2 (0) | 2023.08.29 |
---|---|
230829_스레드 1 (0) | 2023.08.29 |
230828_컬렉션 프레임워크 5 (1) | 2023.08.28 |
230825_컬렉션 프레임워크 4 (0) | 2023.08.25 |
230824_컬렉션 프레임워크 3 (1) | 2023.08.24 |