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
- 추상메서드
- NestedFor
- 예외미루기
- 참조형변수
- abstract
- 사용자예외클래스생성
- 자동차수리시스템
- 예외처리
- Java
- 집합_SET
- 대덕인재개발원
- 정수형타입
- 컬렉션 타입
- cursor문
- 인터페이스
- 자바
- 제네릭
- oracle
- GRANT VIEW
- 환경설정
- exception
- 메소드오버로딩
- 생성자오버로드
- 어윈 사용법
- 오라클
- 다형성
- 한국건설관리시스템
- 객체 비교
- EnhancedFor
- 컬렉션프레임워크
Archives
- Today
- Total
거니의 velog
230828_컬렉션 프레임워크 5 본문
[PhoneBookTest2.java]
package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
/*
* 문제) 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들고,
* Map을 이용하여 전화번호 정보를 관리하는 프로그램을 작성하시오.
*
* (Map의 구조는 Key값으로 입력한 '이름'을 사용하고, value값으로는 'Phone클래스의 인스턴스'로 한다.)
* 변수 선언 예시) HashMap<String, Phone> 변수명;
*
* 이 프로그램에는 다음과 같은 메뉴가 있는데 각 메뉴의 기능을 구현한다.
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
*
* - 검색, 삭제 기능은 '이름'을 입력 받아 처리한다.
*
* 실행 예시)
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 1
*
* 새롭게 등록할 전화번호 정보를 입력하세요.
* 이 름 >> 홍길동
* 전화번호 >> 010-1234-5678
* 주 소 >> 대전시 중구 오류동
*
* '홍길동' 전화번호 등록 완료!!!
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 1
*
* 새롭게 등록할 전화번호 정보를 입력하세요.
* 이 름 >> 홍길동
*
* '홍길동'은 이미 등록된 사람입니다...
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 5
*
* ----------------------------------------
* 번호 이름 전화번호 주소
* ----------------------------------------
* 1 홍길동 010-1234-5678 대전시 중구 오류동
* ~~~
* ~~~
* ----------------------------------------
* 출력 끝...
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 0
*
* 프로그램을 종료합니다.
*
*/
public class PhoneBookTest2 {
private HashMap<String, Phone2> phoneBookMap;
private Scanner sc;
// 생성자
public PhoneBookTest2() {
phoneBookMap = new HashMap<String, Phone2>();
sc = new Scanner(System.in);
}
public static void main(String[] args) {
new PhoneBookTest2().startPhoneBook();
}
// 프로그램을 시작하는 메서드
public void startPhoneBook() {
System.out.println("************************");
System.out.println(" 전 화 번 호 관 리 프 로 그 램");
System.out.println("************************");
while(true) {
int choice = displayMenu();
switch(choice) {
case 1: // 전화번호 등록
insert(); break;
case 2: // 전화번호 수정
update(); break;
case 3: // 전화번호 삭제
delete(); break;
case 4: // 전화번호 검색
search(); break;
case 5: // 전화번호 전체 출력
displayAll(); break;
case 0: // 프로그램 종료
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("작업 번호를 잘못 입력했습니다.");
System.out.println("다시 선택하세요...");
}
}
}
// 메뉴를 출력하고 작업 번호를 입력받아 반환하는 메서드
private int displayMenu() {
System.out.println();
System.out.println("-----------------");
System.out.println("다음 메뉴를 선택하세요.");
System.out.println("1. 전화번호 등록");
System.out.println("2. 전화번호 수정");
System.out.println("3. 전화번호 삭제");
System.out.println("4. 전화번호 검색");
System.out.println("5. 전화번호 전체 출력");
System.out.println("0. 프로그램 종료");
System.out.println("-----------------");
System.out.print("메뉴선택 >> ");
return sc.nextInt();
}
// 새로운 전화번호 정보를 등록하는 메서드 (이미 등록된 사람은 등록되지 않는다.)
private void insert() {
System.out.println();
System.out.println("새로운 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = sc.next();
// 입력받은 이름이 이미 등록된 이름인지 검사
if(phoneBookMap.containsKey(name)) {
System.out.println(name + "씨는 이미 등록된 사람입니다...");
System.out.println("등록 작업을 마칩니다.");
return;
}
System.out.print("전화번호 >> ");
String tel = sc.next();
sc.nextLine(); // 일종의 입력 버퍼 비우기
System.out.print("주 소 >> ");
// String addr = sc.next(); // '대전시 중구 오류동' 중에 대전시만 가져가고 [데이터구분자 : 사이띄기, tab키, enter키], '중구 오류동' 중에 중구를 가져다 displayMenu()의 return sc.nextInt();와 충돌을 일으켜 오류가 뜸.
String addr = sc.nextLine(); // 처음 문장부터 enter키 이전까지 모두 가져옴. enter 키를 제외한 값을 반환함.
// String tel = sc.next(); 에 010-1234-1234[엔터키] 중에 010-1234-1234만 가져가고 구분자 [엔터키]를 남김.
// 이 구분자 [엔터키]를 String addr = sc.nextLine();이 인식해서 값을 입력받지 않고 그냥 넘어가 버림.
// 따라서 실제 주소를 입력받기 전에 이 찌꺼기(구분자 [엔터키])를 비워줘야 함.
// sc.nextLine(); 입력키를 한 번더 입력해 주면 끝.
/*
* - Scanner객체는 입력 버퍼를 이용하여 입력 작업을 수행한다.
* 즉, 입력 버퍼를 확인하여 값이 있으면 현재 입력 버퍼에 있는 값을 가져가고
* 없으면 새로운 데이터를 입력받은 후 가져간다.
*
* - Scanner의 next(), nextInt(), nextDouble() ... 등 (nextLine()을 제외한 메서드)
* ==> 이 메서드들은 사이띄기, Tab키, Enter키를 구분 문자로 분리해서 분리된 자료만 읽어간다.
*
* - Scanner의 nextLine()메서드
* ==> 한 줄 단위로 입력한다. (즉, 자료를 입력하고 Enter키를 누르면 Enter키까지 읽어간다.)
*/
// 입력 받은 정보를 이용하여 Phone2 객체 생성
// Phone2 p = new Phone2(name, tel, addr);
// phoneBookMap.put(name, p);
phoneBookMap.put(name, new Phone2(name, tel, addr));
System.out.println(name + "씨의 전화번호 정보 등록 완료!!!");
}
// 전체 전화번호 정보를 출력하는 메서드
private void displayAll() {
System.out.println();
System.out.println("----------------------------------------");
System.out.println("번호 이름 전화번호 주소");
System.out.println("----------------------------------------");
Set<String> phoneBookSet = phoneBookMap.keySet();
if(phoneBookSet.size() == 0) {
System.out.println("등록된 전화번호 정보가 하나도 없습니다...");
}else {
int cnt = 0; // 번호 출력용 변수
Iterator<String> it = phoneBookSet.iterator();
while(it.hasNext()) {
cnt++;
String key = it.next(); // 키 값(등록된 사람 이름)
Phone2 p = phoneBookMap.get(key); // Value값(Phone2 객체)
System.out.println(" " + cnt + "\t" + p.getName() + "\t" + p.getTel() + "\t" + p.getAddr());
}
}
System.out.println("----------------------------------------");
System.out.println("출력 끝...");
}
// 전화번호를 수정하는 메서드
private void update() {
System.out.println();
System.out.println("수정할 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = sc.next();
// 해당 이름이 없으면 수정 작업을 중단한다.
if(!phoneBookMap.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보는 등록되지 않았습니다.");
System.out.println("수정 작업을 마칩니다...");
return;
}
System.out.print("새로운 전화번호 >> ");
String newTel = sc.next();
sc.nextLine(); // 일종의 입력 버퍼 비우기
System.out.print("새로운 주소 >> ");
// String newAddr = sc.next();
String newAddr = sc.nextLine();
// 같은 key값에 새로운 데이터를 셋팅한 Phone2 객체를 저장하면 된다.
phoneBookMap.put(name, new Phone2(name, newTel, newAddr));
System.out.println(name + "씨의 전화번호 정보 수정 완료!!!");
}
// 전화번호 정보를 삭제하는 메서드
private void delete() {
System.out.println();
System.out.println("삭제할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >> ");
String name = sc.next();
// 해당 이름이 없으면 삭제 작업을 중단한다.
if(!phoneBookMap.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보는 등록되지 않았습니다.");
System.out.println("삭제 작업을 마칩니다...");
return;
}
phoneBookMap.remove(name); // 삭제작업
System.out.println(name + "씨의 전화번호 정보를 삭제했습니다...");
}
// 전화번호 정보를 검색하는 메서드
private void search() {
System.out.println();
System.out.println("검색할 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = sc.next();
// 입력한 이름을 key값으로 Phone2 객체 가져오기
Phone2 p = phoneBookMap.get(name);
if(p==null) { // 해당 key값의 데이터가 없으면...
System.out.println(name + "씨의 전화번호 정보가 없습니다...");
}else {
System.out.println();
System.out.println(name + "씨의 전화번호 정보");
System.out.println("-----------------------");
System.out.println("이 름 : " + p.getName());
System.out.println("전화번호 : " + p.getTel());
System.out.println("주 소 : " + p.getAddr());
System.out.println("-----------------------");
}
}
}
// 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들기
class Phone2 {
private String name;
private String tel;
private String addr;
public Phone2() {}
public Phone2(String name, String tel, String addr) {
this.name = name;
this.tel = tel;
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "Phone2 [name=" + name + ", tel=" + tel + ", addr=" + addr + "]";
}
}
[LottoTest2.java]
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
/*로또를 구매하는 프로그램 작성하기
사용자는 로또를 구매할 때 구매할 금액을 입력하고
입력한 금액에 맞게 로또번호를 출력한다.
(단, 로또 한장의 금액은 1000원이며 최대 100장까지만 구입할 수 있고,
거스름돈도 계산하여 출력한다.)
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 2500 <-- 입력
행운의 로또번호는 아래와 같습니다.
로또번호1 : 2,3,4,5,6,7
로또번호2 : 20,21,22,23,24,25
받은 금액은 2500원이고 거스름돈은 500원입니다.
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 900 <-- 입력
입력 금액이 너무 적습니다. 로또번호 구입 실패!!!
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 101000 <-- 입력
입력 금액이 너무 많습니다. 로또번호 구입 실패!!!
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 2 <-- 입력
감사합니다*/
public class LottoTest2 {
private Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
new LottoTest2().startLottoStore();
}
// 시작 메서드
public void startLottoStore() {
while(true) {
int choice = displayMenu();
switch(choice) {
case 1: // 구입
buyLotto(); break;
case 2:
System.out.println();
System.out.println("감사합니다...");
return;
default:
System.out.println("작업 번호를 잘못 입력하셨습니다...");
System.out.println("작업 번호는 '1' 또는 '2'를 입력하세요...");
}
}
}
// 메뉴 출력 및 작업번호를 입력 받아 반환하는 메서드
private int displayMenu() {
System.out.println("==========================");
System.out.println(" Lotto 프로그램");
System.out.println("--------------------------");
System.out.println(" 1. Lotto 구입");
System.out.println(" 2. 프로그램 종료");
System.out.println("==========================");
System.out.print("메뉴 선택 >> ");
return sc.nextInt();
}
// 로또 구입을 처리하는 메서드
private void buyLotto() {
System.out.println();
System.out.println(" Lotto 구입 시작");
System.out.println();
System.out.println("(1000원에 로또번호 하나입니다.)");
System.out.print("금액 입력 >> ");
int money = sc.nextInt();
System.out.println();
if(money < 1000) { // 입력 금액이 1000원 미만 여부 검사
System.out.println("입력 금액이 너무 적습니다. 로또번호 구입 실패!!!");
return;
}
if(money >= 101000) { // 입력 금액이 101000원 이상 여부 검사
System.out.println("입력 금액이 너무 많습니다. 로또번호 구입 실패!!!");
return;
}
//--------------------------------------
// 금액에 맞는 로또 번호 만들기
HashSet<Integer> lottoSet = new HashSet<Integer>();
// 입력한 금액을 이용하여 구입할 로또의 매수를 구한다.
int ticket = money / 1000;
System.out.println("행운의 로또번호는 아래와 같습니다.");
for(int i=1; i<=ticket; i++) { // 로또의 매수만큼 반복
// 1장 분의 로또번호를 만든다. (1~45 사이의 중복되지 않는 번호 6개 만들기)
while(lottoSet.size() < 6) {
lottoSet.add((int)(Math.random() * 45 + 1));
}
// Set에 저장된 로또번호를 갖는 List 객체 생성
ArrayList<Integer> lottoList = new ArrayList<Integer>(lottoSet);
Collections.sort(lottoList);
System.out.println("로또번호 " + i + " : " + lottoList);
// 작업에 사용한 Set 객체를 비워준다.
lottoSet.clear();
} // for문 끝...
// 거스름돈 계산 및 출력
// 받은 금액은 2500원이고 거스름돈은 500원입니다.
System.out.println();
System.out.println("받은 금액은 "+ money +"원이고 거스름돈은 "+ (money % 1000) +"원입니다.");
System.out.println();
}
}
[HotelRoomManagement.java]
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
/*문제) 호텔 객실을 관리하는 프로그램을 작성하시오.
조건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 HotelRoomManagement {
private HashMap<Integer, Room> roomMap;
private Scanner sc;
public HotelRoomManagement() {
roomMap = new HashMap<Integer, Room>();
sc = new Scanner(System.in);
for(int i=200; i<500; i+=100) {
for(int j=1; j<10; j++) {
switch(i/100) {
case 2:
roomMap.put(i+j, new Room(i+j, "싱글룸", "-"));
break;
case 3:
roomMap.put(i+j, new Room(i+j, "더블룸", "-"));
break;
case 4:
roomMap.put(i+j, new Room(i+j, "스위트룸", "-"));
break;
}
}
}
}
public static void main(String[] args) {
new HotelRoomManagement().roomStart();
}
public void roomStart() {
System.out.println();
System.out.println("*********************************************");
System.out.println(" 호텔문을 열었습니다. 어서오십시요.");
System.out.println("*********************************************");
System.out.println();
while(true) {
int choice = task();
switch(choice) {
case 1:
checkIn(); break;
case 2:
checkOut(); break;
case 3:
roomCondition(); break;
case 4:
System.out.println();
System.out.println("*********************************************");
System.out.println(" 호텔문을 닫았습니다.");
System.out.println("*********************************************");
return;
default:
System.out.println("작업 번호를 잘못 입력했습니다.");
System.out.println("다시 선택하세요.");
}
}
}
public int task() {
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();
}
private void checkIn() {
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();
// 방 번호가 없을 때
if(!roomMap.containsKey(roomNum)) {
System.out.println(roomNum + "호 객실은 존재하지 않습니다.");
return;
}
// 방에 사람이 있을 때
if(!roomMap.get(roomNum).getGuest().equals("-")) {
System.out.println(roomNum + "호 객실은 이미 손님이 있습니다.");
return;
}
System.out.println("누구를 체크인 하시겠습니까?");
System.out.print("이름 입력 >> ");
String guest = sc.next();
roomMap.get(roomNum).setGuest(guest);
System.out.println("체크인이 완료되었습니다.");
}
private void checkOut() {
System.out.println("----------------------------------------------");
System.out.println(" 체크아웃 작업");
System.out.println("----------------------------------------------");
System.out.println("체크아웃 할 방 번호를 입력하세요.");
System.out.print("방번호 입력 >> ");
int roomNum = sc.nextInt();
// 방 번호가 없을 때
if(!roomMap.containsKey(roomNum)) {
System.out.println(roomNum + "호 객실은 존재하지 않습니다.");
return;
}
// 체크인 한 사람이 없을 때
if(roomMap.get(roomNum).getGuest().equals("-")) {
System.out.println(roomNum + "호 객실은 체크인한 사람이 없습니다.");
return;
}
System.out.println(roomNum + "호 객실의 " + roomMap.get(roomNum).getGuest() + "님을 체크아웃을 완료하였습니다.");
roomMap.get(roomNum).setGuest("-");
}
private void roomCondition() {
System.out.println("----------------------------------------------");
System.out.println(" 현재 객실 상태");
System.out.println("----------------------------------------------");
System.out.println("방 번호 방 종류 투숙객 이름");
System.out.println("----------------------------------------------");
List<Room> list = new ArrayList<Room>();
for(Integer key : roomMap.keySet()) {
// 맵에 있는 키 값을 가져와서 set으로 반환해서 키에 넣기
Room value = roomMap.get(key);
list.add(value);
}
Collections.sort(list);
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i).getRoomNum() + "\t" + list.get(i).getRoomType() + "\t" + list.get(i).getGuest());
}
System.out.println("----------------------------------------------");
}
}
class Room implements Comparable<Room>{
private int roomNum;
private String roomType;
private String guest;
public Room() {}
public Room(int roomNum, String roomType, String guest) {
super();
this.roomNum = roomNum;
this.roomType = roomType;
this.guest = guest;
}
public int getRoomNum() {
return roomNum;
}
public void setRoomNum(int roomNum) {
this.roomNum = roomNum;
}
public String getRoomType() {
return roomType;
}
public void setRoomType(String roomType) {
this.roomType = roomType;
}
public String getGuest() {
return guest;
}
public void setGuest(String guest) {
this.guest = guest;
}
@Override
public String toString() {
return roomNum + "\t" + roomType + "\t" + guest;
}
@Override
public int compareTo(Room o) {
return Integer.compare(this.getRoomNum(), o.getRoomNum());
}
}
'대덕인재개발원 > 대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230829_스레드 1 (0) | 2023.08.29 |
---|---|
230829_컬렉션 프레임워크 6 (1) | 2023.08.29 |
230825_컬렉션 프레임워크 4 (0) | 2023.08.25 |
230824_컬렉션 프레임워크 3 (1) | 2023.08.24 |
230823_컬렉션 프레임워크 2 (0) | 2023.08.23 |