需求:使用二维数组 构造一个酒店 功能如下:
键盘输入1,2,3,0
1.查房 print()
2.订房 getRoom()
3.退房 exit()
0.退出系统
要求这个酒店 三层楼 每层有十个房间 每个房间都有房间号,类型,状态(空闲/预定)
代码如下:
酒店类:
public class Hotel {
//1.定义二维数组 三层楼 每楼十间房 每个房间有房间号 类型 状态
// 2.查房 订房 退房
Object[][] obj;
public Hotel() {
this.obj =new Object[3][10];
for (int i=0;i<obj.length;i++){
for (int j =0;j<obj[i].length;j++){
//第一层
if (i==0){
Room room =new Room((i+1)*100+j+1,"标准间",true);
obj[i][j]=room;
}
if (i==1){
Room room =new Room((i+1)*100+j+1,"双人间",true);
obj[i][j]=room;
}
if (i==2){
Room room =new Room((i+1)*100+j+1,"豪华间",true);
obj[i][j]=room;
}
}
}
}
//查房
public void print(){
for (int i =0;i<obj.length;i++){
for (int j=0;j<obj[i].length;j++){
System.out.print(obj[i][j]);
}
System.out.println();
}
}
public void getRoom(int number){ //在java中 除法取整 百分号取余
Object o = obj[number / 100 - 1][number % 100 - 1];
if (o instanceof Room){
Room room = (Room) o;
if (room.getStatus()==false){
System.out.println("预定失败!房间有人");
return;
}
room.setStatus(false);
System.out.println("预定成功!!");
System.out.println(room);
}
}
public void exit(int number){
Object o = obj[number / 100 - 1][number % 100 - 1];
if (o instanceof Room){
Room room = (Room) o;
if (room.getStatus()==true){
System.out.println("退房失败!房间没有住人");
return;
}
room.setStatus(true);
System.out.println("退房成功!!!");
}
}
}
房间类:
public class Room {
private int no;
private String type;
private boolean status;
public Room(int no, String type, boolean status) {
this.no = no;
this.type = type;
this.status = status;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Room room = (Room) o;
return no == room.no &&
status == room.status &&
Objects.equals(type, room.type);
}
@Override
public int hashCode() {
return Objects.hash(no, type, status);
}
@Override
public String toString() {
return "Room{" +
"no=" + no +
", type='" + type + '\'' +
", status=" + (status?"空闲":"预定") +
'}';
}
}
测试类:
public class Test {
public static void main(String[] args) {
Hotel hotel =new Hotel();
Scanner s =new Scanner(System.in);
System.out.println("欢迎来到酒店管理系统!!!");
while (true){
System.out.println("请输入序号:1.查房 2.订房 3.退房 0.退出系统");
int i = s.nextInt();
if (i==1){
hotel.print();
}
if (i==2){
System.out.println("请输入您要预定的房间号:");
int num =s.nextInt();
hotel.getRoom(num);
}
if (i==3){
System.out.println("请输入您要退的房间号:");
int num =s.nextInt();
hotel.exit(num);
}
if (i==0){
System.out.println("系统已退出 欢迎下次使用!!");
System.exit(0);
}
}
}
}
测试结果如下:
欢迎来到酒店管理系统!!!
请输入序号:1.查房 2.订房 3.退房 0.退出系统
1
Room{no=101, type='标准间', status=空闲}Room{no=102, type='标准间', status=空闲}Room{no=103, type='标准间', status=空闲}Room{no=104, type='标准间', status=空闲}Room{no=105, type='标准间', status=空闲}Room{no=106, type='标准间', status=空闲}Room{no=107, type='标准间', status=空闲}Room{no=108, type='标准间', status=空闲}Room{no=109, type='标准间', status=空闲}Room{no=110, type='标准间', status=空闲}
Room{no=201, type='双人间', status=空闲}Room{no=202, type='双人间', status=空闲}Room{no=203, type='双人间', status=空闲}Room{no=204, type='双人间', status=空闲}Room{no=205, type='双人间', status=空闲}Room{no=206, type='双人间', status=空闲}Room{no=207, type='双人间', status=空闲}Room{no=208, type='双人间', status=空闲}Room{no=209, type='双人间', status=空闲}Room{no=210, type='双人间', status=空闲}
Room{no=301, type='豪华间', status=空闲}Room{no=302, type='豪华间', status=空闲}Room{no=303, type='豪华间', status=空闲}Room{no=304, type='豪华间', status=空闲}Room{no=305, type='豪华间', status=空闲}Room{no=306, type='豪华间', status=空闲}Room{no=307, type='豪华间', status=空闲}Room{no=308, type='豪华间', status=空闲}Room{no=309, type='豪华间', status=空闲}Room{no=310, type='豪华间', status=空闲}
请输入序号:1.查房 2.订房 3.退房 0.退出系统