酒店管理系统——Java实现(小项目)


前言

为酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能。要求
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实现(小项目)
当房间被订后会显示占用,并且不能再被预定:
酒店管理系统——Java实现(小项目)

订房功能

如果房间空闲:
酒店管理系统——Java实现(小项目)
房间被占用:
酒店管理系统——Java实现(小项目)

退房

酒店管理系统——Java实现(小项目)

退出系统

酒店管理系统——Java实现(小项目)

总结

这个只是一个小小的项目,还可以改进很多小细节(如输出所有被预定的房间或者空闲的房间、已经输入的内容不正确等这些是现在的能力可以做到的)还有就是运用以后的学到的新知识,如数据库来存储被预定的房间、其他改变的地方,而不是像现在这样没一次运行都是全新的系统。
最后Java是一门面向对象的编程语言,要学会用面向对象的思想去编写代码(这是一个让人哭泣的过程)。

上一篇:Android数据库---Room、LitePal、GreenDao


下一篇:ElasticSearch(十一):Spring Data ElasticSearch 的使用(一)