前言
为酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能。要求
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是一门面向对象的编程语言,要学会用面向对象的思想去编写代码(这是一个让人哭泣的过程)。