为酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能。要求
1.系统用户:酒店前台
2.酒店使用一个二维数组来模拟。“Room[][] rooms;”
3.酒店的每个房间都是一个Java对象:Room
4.每个房间都有:编号,类型,房间状态
5.系统应该对外提供的功能:
预定房间:用户输入房间编号,订房
退房:用户输入房间编号,退房
查看所有房间状态:用户输入某个指令即可查看所有房间状态
由于每个房间都是一个对象(对象是new出来的)并且房间的属性也有提到,所有可以先创建一个Room类。
Room类中所有的属性都私有化,并对外提供get和set方法,然后提供两个构造方法,一个无参,一个有参,并且重新Object的的toString方法和equals方法(这两个方法可以重写成自己需要的样子,当然也可以不重写)
在子类我将toString方法重写为打印房间状态的方法,在房间状态这里使用了三目运算符:
b ? x : y
里面的?是格式要求,如果b的值为true,则为结果x,否则为结果y。
而equals方法我重写为如果两个房间的编号相同则为同一个房间。
Room.class部分代码如下:
//最好重写toString方法和equals方法,如果不重写调用的就是Object里面的 public class Room{ private int roomnumber; private String type; private boolean flag; public Room() { } public Room(int roomnumber, String type, boolean flag) { this.roomnumber = roomnumber; this.type = type; this.flag = flag; } public int getRoomnumber() { return roomnumber; } public void setRoomnumber(int roomnumber) { this.roomnumber = roomnumber; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } //重写equals方法 public boolean equals(Object obj){ } //重写toString方法,可以转换成输出房间信息 public String toString(){ //三目运算符 return "["+this.getRoomnumber()+","+this.getType()+","+(this.isFlag()?"占用":"空闲")+"]"; } }
现在房间创建好了,一个酒店有多个房间组成,使用可以创建一个Hotel类,在里面搭建酒店。
酒店里面只有一个私有的Room类型的数组,由于现在水平有限,只能通过无参构造方法将酒店里面的每一个房间写死。并且在酒店里面实现所有的方法
部分代码实现:
public class Hotel { private Room[][] rooms; //无参构造 public Hotel(){ } //打印所有房间状态即遍历二维数组rooms public void printRooms(){ } public void bookRoom(int roomnumber){ } public void reRoom(int roomnumber){ } }
测试项目要求的功能是否实现
在这里通过while循环可以一直输入,然后通过判断输入的编号进行下一步的功能。
tip:不能把以下代码写到循环外面,否则将会一直循环输出,导致电脑死机。
System.out.println("请输入编号:"); int i = s.nextInt();
**
HotelMgSystem.class部分代码实现:
public class HotelMgSystem { public static void main(String[] args) { System.out.println("输入[1]表示查看房间列表,[2]表示订房,[3]表示退房,[0]表示退出系统"); while (true){ System.out.println("请输入编号:"); int i = s.nextInt(); if(i==1){ }else if (i==2){ System.out.println("请输入房间号:"); }else if (i==3){ System.out.println("请输入房间号:"); }else if (i==0){ System.out.println("欢迎下次使用!"); return; } else { System.out.println("输入编号错误,请重新输入:"); } } } }
最初的状态:
当房间被订后会显示占用,并且不能再被预定:
如果房间空闲:
房间被占用:
这个只是一个小小的项目,还可以改进很多小细节(如输出所有被预定的房间或者空闲的房间、已经输入的内容不正确等这些是现在的能力可以做到的)还有就是运用以后的学到的新知识,如数据库来存储被预定的房间、其他改变的地方,而不是像现在这样没一次运行都是全新的系统。
最后Java是一门面向对象的编程语言,要学会用面向对象的思想去编写代码(这是一个让人哭泣的过程)。