酒店管理系统分析
业务:
1.查房(show)
1001 1002 1003 1004 1005
null null null null null
2001 2002 2003 2004 2005
null null rose null null
3001 3002 3003 3004 3005
null null null null null
4001 4002 4003 4004 4005
null null null null null
5001 5002 5003 5004 5005
2.办理入住(in)
控制台获取信息: 房间名 和 客户名
例如: 1001 小丽
还需要判断这个房间里边原本有没有人,没有人才可以入住
3.办理退房(out)
控制台获取信息: 房间名
例如: 1001 小丽
把 名字改成 null
如果 原来就是 null 就不需要退房
4.退出程序(exit)
按0,退出程序 -> 退出死循环 -> break;
分析
对象:客人,房间,酒店
类:客人类,房间类,酒店类,主方法
客人类(Guest):成员变量:name,sex,id... ;构造方法name;成员方法:无
房间类(Room):成员变量:roomNumber,Guest;构造方法roomNumber;成员方法:无
酒店类(Hotel):成员变量:Room ;构造方法(无参);成员方法:checkIn,out,show
主方法:Scanner;调用;循环;选择判断
代码说明
//主方法
import java.util.Scanner;
//酒店管理系统
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Hotel hotel = new Hotel();
System.out.println("欢迎使用霄云大酒店业务小程序!");
while(true) {
System.out.println("请选择您要办理的业务sc1:1(办理入住);2(办理退房);3(查阅空房);0(退出程序)");
int num = sc.nextInt();
switch (num){
case 1:
System.out.println("您的姓名是?");
String name = sc.next();
System.out.println("您想入住的房间号是?(1001-1005;2001-2005;3001-3005;4001-4005;5001-5005)");
int roomNumber = sc.nextInt();
hotel.checkIn(name,roomNumber);
break;
case 2:
System.out.println("您需要退房的房间号是?");
int roomNumber2 = sc.nextInt();
hotel.out(roomNumber2);
break;
case 3:
System.out.println("++++++++++++++霄云大酒店+++++++++++++++");
hotel.show();
break;
case 0:
System.out.println("感谢您使用霄云大酒店业务小程序!");
return;
default:
System.out.println("您输入的业务数字有误噢!");
break;
}
}
}
}
//客人类
public class Guest {
//入住所需客人信息
String name;//客人姓名
char sex;//性别
int age;//年龄
//构造方法
Guest(){}
Guest(String name){
this.name = name;
}
}
//房间类
public class Room {
int roomNumber;//房间号
Guest guest;//客人
Room(){}
Room(int roomNumber){
this.roomNumber = roomNumber;
}
}
//酒店类
public class Hotel {
Room[][] room;
//无参构造方法:酒店房间数 5层5个房间
Hotel(){
room = new Room[5][5];
for (int i = 0; i < room.length; i++) {
for (int j = 0; j < room[i].length; j++) {
int number = (1+i)*1000+(j+1);
room[i][j] = new Room(number);
}
}
}
//成员方法1.入住checkIn
void checkIn(String name,int roomNumber){
int i = roomNumber / 1000-1;
int j = roomNumber % 10-1;
//判断是否是空房间
if(room[i][j].guest == null){
room[i][j].guest = new Guest(name);
System.out.println("您的业务办理成功!"+name+"成功入住"+roomNumber);
} else{
System.out.println("抱歉,房间已经住人了,请换一间房!");
}
}
//成员方法1.退房out
void out(int roomNumber){
int i = roomNumber / 1000-1;
int j = roomNumber % 10-1;
//判断房间是否住人
if(room[i][j].guest != null ){
room[i][j].guest = null;
System.out.println(roomNumber+"退房成功,期待您的下次入住!");
}else{
System.out.println("您提供的房间号有误,请确认您需要退房的房间号!");
}
}
//成员方法3.查房show
void show() {
//1.显示每层楼的房间号
for (int i = 0; i < room.length; i++) {
for (int j = 0; j < room[i].length; j++) {
System.out.print(room[i][j].roomNumber + "\t");
}
System.out.println();
for (int j = 0; j < room[i].length; j++) {
//如果房间有客户,则显示客户名字
if (room[i][j].guest != null) {
System.out.print(room[i][j].guest.name + "\t");
} else {
room[i][j].guest = null;
System.out.print(room[i][j].guest + "\t");
}
}
System.out.println();
System.out.println("****************************************");
}
}
}