카테고리 없음
호텔 예약프로그램
JOY_1102
2021. 2. 6. 16:33
/* 호텔예약시스템설계
* -방의 종류(type)
* -방의 갯수 12개 room[12]
* -메뉴구성 : 1.호텔예약 2.예약취소 3.방조회
* -99를 누르면 종료
* -room의 값이 0이면 예약가능, 1이면 예약불가
* 기능 구현
* 1.메뉴화면 구성 =>menu();
* 2.초기화(룸초기화) =>init();
* 3.예약가능 =>preRoom(room)(static안하면) => preRoom();
* 4.취소기능 =>removeRoom();
* 5.호실보기 기능 =>printRoom();
* 6.검색기능 : 방 상태확인 => boolean searchRoom(int n);
*
* 1.방 예약 2.예약 취소 3.호실 확인 99.종료
*/
package kr.co.dong.array;
import java.util.Arrays;
import java.util.Scanner;
public class HotelCheck03 {
static int[] room = new int[12]; //방선언
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
controlRoom();
}
private static void controlRoom() {
boolean done = false;
int n = 0;
System.out.println("호실예약프로그램 ver1.0");
init();
while(!done)
switch(menu()) {
case 1:
System.out.println("예약확인칸");
n = allRes();
if(n!=55) {
preRoom();
}
else {
break;
}
break;
case 2:
System.out.println("예약취소칸");
removeRoom();
break;
case 3:
System.out.println("전체방보기");
printRoom();
break;
case 99:
System.out.println("프로그램 종료");
done = true;
break;
default:
System.out.println("메뉴의 숫자를 입력하세요.");
break;
} //end of switch(menu())
}
private static int allRes() {
int count = 0, n = 0;
for(int i=0;i<room.length;i++) {
if(room[i]==1) {
count++;
}
}
if(count==12) {
n=55;
System.out.println("모든 방의 예약이 끝났습니다.");
System.out.println("메뉴로 돌아갑니다.");
}
return n;
}
private static boolean searchRoom(int n) { //방의 상태확인
//0이면 예약가능 1이면 예약중
if(room[n]==0) {
System.out.println(101+n + "호:예약가능/취소불가");
return true;
}
else {
System.out.println(101+n + "호:예약중/취소가능");
return false;
}
}
private static void printRoom() {
for (int i=0;i<room.length;i++) {
if(room[i]==0) {
System.out.println(i+101 +"호실: 예약가능");
}
else {
System.out.println(i+101 +"호실: 예약중");
}
}
}
private static void removeRoom() {
boolean control = false; //예약확인 먼저확인
int n = 0, sel = 0;
boolean done = false; //다른 방 취소 or 메뉴로 돌아갈래
System.out.println("=101호|102호|103호|104호|105호|106호|107호|108호|109호|110호|111호|112호");
while(!control) {
//n이 0~12의 값이여야한다.
n = isidx();
//각 방의 상태 확인(예약가능[true]/불가능[false])
boolean booking = searchRoom(n);
//만약 불가능이라면 방번호 다시 입력
if(booking == true) {
System.out.println("취소할 수 없습니다.");
return;
}
else {
control = true;
}
}//end of control
//control문을 빠져나와 예약가능한 방을 진행하려면
System.out.println("취소 절차 진행하려면 1번, 다시 메뉴로 돌아가려면 2번을 누르세요.");
sel = Integer.parseInt(isNumber());
while(!done) {
if(sel==1) {
System.out.println("취소가 확정되었습니다.");
room[n] = 0;
System.out.println("메뉴로 돌아갑니다.");
control = true;
break;
}
else if(sel==2) {
System.out.println("메뉴로 돌아갑니다.");
control = true;
break;
}
}
}
private static int isidx() {
int n=0;
boolean idx = false; //인덱스의 값이 아니다
//각 방의 상태 (알고싶은 방을 받아서 하자)
while(!idx) {
System.out.println("=방번호를 입력하세요:");
n = Integer.parseInt(isNumber());
if(!(n>=101 && n<=112)) {
System.out.println("방번호는 101호부터 112호까지 있습니다."); //여기서 다시 방번호를 입력해달라고
idx = false;
}
else {
idx = true;
break;
}
}
return n%100-1;
}
private static void preRoom() {
boolean control = false; //전체 흐름을 관장
int n = 0;
boolean done = false; //예약 가능 확인 후 확정 or 메뉴 돌아가기
int sel = 0;//예약 절차 진행
//예약 불가 or 예약 가능
System.out.println("=101호|102호|103호|104호|105호|106호|107호|108호|109호|110호|111호|112호");
while(!control) {
n = isidx();
//각 방의 상태 확인(예약가능[true]/불가능[false])
boolean booking = searchRoom(n);
//만약 불가능이라면 방번호 다시 입력
if(booking == false) {
System.out.println("예약할 수 없습니다.");
return;
}
else {
control = true;
}
}//end of control
//control문을 빠져나와 예약가능한 방을 진행하려면
System.out.println("예약 절차 진행하려면 1번, 다시 메뉴로 돌아가려면 2번을 누르세요.");
sel = Integer.parseInt(isNumber());
while(!done) {
if(sel==1) {
System.out.println("예약이 확정되었습니다.");
room[n] = 1;
System.out.println("메뉴로 돌아갑니다.");
control = true;
break;
}
else if(sel==2) {
System.out.println("메뉴로 돌아갑니다.");
control = true;
break;
}
}
}
private static int menu() {
String str= null;
int sel = 0;
System.out.println("===========호텔예약시스템============");
System.out.println("1.호텔예약 2.예약취소 3.전체방보기 99.종료");
System.out.println("원하시는 숫자를 입력해주세요: ");
str = isNumber();//숫자확인판별
sel = Integer.parseInt(str);
return sel;
}
private static String isNumber() {
char ch = 'C';
String str = null;
boolean isNumber = false; //숫자 아님
while(!isNumber) {
str = scan.next(); //입력
for(int i=0;i<str.length();i++) {
ch = str.charAt(i);
if(ch>='0'&&ch<='9') {
isNumber = true;
}
else {
System.out.println("숫자만 입력할 수 있습니다. 다시 입력해주세요.");
isNumber = false;
break;
}
}
}
return str;
}
private static void init() {
//초기화 메소드
for(int i=0;i<room.length;i++) {
room[i] = 0;
}
}
}