使用简单的Java代码实现酒店管理系统

我们通过学习Java基础知识,让自己正式踏入学习Java语言的行列,这篇博客是用来让我们真正的了解并应用面向对象的思想来实现的。

使用简单的Java代码实现酒店管理系统

1.需求分析

我们如果要实现酒店管理系统,就需要先对酒店管理系统的业务要求进行分析:

  1. 酒店管理系统需要实现哪些功能?
    (1)输入某个命令查询酒店中的所有房间;
    (2)输入某个房间的编号订房;
    (3)输入某个房间的编号退房;
    (4)输入某个命令可以退出酒店管理系统;
  2. 酒店管理系统使用什么数据结构来表示房间?
    (1)酒店管理系统使用数组的形式来存储房间,这里我们用二维数组来表示;
  3. 酒店的房间我们都有什么属性?
    (1)房间编号;
    (2)房间类型;
    (3)房间是否空闲;
  4. 我们用什么来控制房间类有上面这些属性?
    (1)我们可以使用自定义注解来实现;

2.画图分析

酒店管理系统分析图片

3.代码结构

111

4.代码实现

/**
	Room房间实体类
*/
package com.hotel.room.model;

/**
 * 房间实体类
 *
 * @author john
 * @date 2024/5/8 15:14
 */
public class Room {
    /**
     * 房间编号
     */
    private Integer roomNo;

    /**
     * 房间类型
     */
    private String roomType;

    /**
     * 是否空闲
     */
    private Boolean roomFree;

    public Room(Integer roomNo, String roomType, Boolean roomFree) {
        this.roomNo = roomNo;
        this.roomType = roomType;
        this.roomFree = roomFree;
    }

    public Integer getRoomNo() {
        return roomNo;
    }

    public Room setRoomNo(Integer roomNo) {
        this.roomNo = roomNo;
        return this;
    }

    public String getRoomType() {
        return roomType;
    }

    public Room setRoomType(String roomType) {
        this.roomType = roomType;
        return this;
    }

    public Boolean getRoomFree() {
        return roomFree;
    }

    public Room setRoomFree(Boolean roomFree) {
        this.roomFree = roomFree;
        return this;
    }

    @Override
    public String toString() {
        return "Room [" + roomNo + ", " + roomType + ", "+ (roomFree ? "有人入住" : "无人入住")+"]";
    }
}
package com.hotel.room.model;

import java.util.Scanner;

/**
 * 酒店实体类
 * 功能:
 * (1)查看所有房间状态
 * (2)订房
 * (3)退房功能
 *
 * @author john
 * @date 2024/5/8 15:14
 */
public class Hotel {

    /**
     * 这里需要定义一个二维数组来表示房间,因为我们设想的酒店有很多层,且每层有很多你发件
     */
    private static Room[][] rooms;

    public Hotel() {
        // 这里定义酒店为5层,且每层有9个房间
        rooms = new Room[5][9];

        // 这里我们来设置酒店的房间,由于酒店的房间很多,所以我们使用for循环来分别设置每个楼层。
        for (int m = 0 ; m < rooms.length ; m ++) {
            for (int n = 0 ; n < rooms[m].length ; n ++) {
                /*
                    这里我们的房间编号这样设置:
                    如果是是酒店的第一层楼的第一个房间,我们将房间编号设置成:101
                    我规定我们的酒店的楼层为1~5层;
                    我规定我们的酒店的第一个房间为1
                    所以如果我们用二维数组来表示酒店的楼层和第几个房间时,因为我们的二维数组的横纵坐标都是从0开始的,所以我们需要分别加上1,此时房间编号的表达式就为:
                    (m + 1) * 100 + n + 1
                    当m = 0时:
                        n = 0:房间编号为101;
                        n = 1:房间编号为102;
                        n = 2;房间编号为103;
                        ...
                    当m = 1时:
                        n = 0:房间编号为201;
                        n = 1:房间编号为202;
                        ...
                    ...
                */

                // 第一层
                if (m == 0) {
                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "单人豪华房", false);
                }

                // 第二层
                if (m == 1) {
                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "双人豪华房", false);
                }

                // 第三层
                if (m == 2) {
                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
                }

                // 第四层
                if (m == 3) {
                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
                }

                // 第五层
                if (m == 4) {
                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
                }
            }
        }
    }

    /**
     * 查看所有房间状态
     */
    public void queryAllRooms () {
        for (Room[] room : rooms) {
            for (Room value : room) {
                System.out.println(value.toString());
            }
        }
    }

    /**
     * 使用房间编号订房
     * @param roomNo 房间编号
     */
    public void makeRoom (int roomNo) {
        Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
        // 如果该编号的房间已经有人订了
        if (room.getRoomFree()) {
            System.out.println("抱歉,请您订购其他房间,此房间已经有人居住!");
        } else {
            room.setRoomFree(true);
            System.out.println("订房完成");
        }
    }

    /**
     * 使用房间编号退房
     * @param roomNo 房间编号
     */
    public void existRoom (int roomNo) {
        Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
        // 如果该编号的房间本来就没有人居住
        if (!room.getRoomFree()) {
            System.out.println("抱歉,请您退订其他房间,该房间没有人居住不需要退订!");
        } else {
            room.setRoomFree(false);
            System.out.println("退房完成");
        }
    }

    /**
     * 程序运行入口
     */
    public static void main(String[] args) {
        Hotel hotel = new Hotel();
        System.out.println("欢迎使用酒店管理系统,请认真阅读以下使用说明:");
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入对应的功能编号:[1]查看房间列表; [2]订房; [3]退房; [0]退出系统");
            System.out.print("请输入功能编号:");
            int i = scanner.nextInt();
            if (i == 1) {
                hotel.queryAllRooms();
                System.out.println("酒店所有的房间已经加载完毕!");
            }
            else if (i == 2) {
                System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");
                int rId = scanner.nextInt();
                if (rId >= 101 && rId <= 110 || rId >= 201 && rId <= 210 || rId >= 301 && rId <= 310 || rId >= 401 && rId <= 410 || rId >= 501 && rId <= 510) {
                    hotel.makeRoom(rId);
                } else {
                    System.out.println("请输入正确的房间编号!");
                }
            }
            else if (i == 3) {
                System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");
                int rId = scanner.nextInt();
                if (rId >= 101 && rId <= 110 || rId >= 201 && rId <= 210 || rId >= 301 && rId <= 310 || rId >= 401 && rId <= 410 || rId >= 501 && rId <= 510) {
                    hotel.existRoom(rId);
                } else {
                    System.out.println("请输入正确的房间编号!");
                }

            }
            else if (i == 0) {
                System.out.println("成功退出酒店管理系统!");
                scanner.close();
                return;
            }
            else {
                System.out.println("请仔细阅读使用说明,输入正确的功能编号");
            }
        }
    }

	//....后续可以添加自己的功能
}

输出结果:在这里插入图片描述

酒店管理系统使用说明书 主要功能 本系统中包含如下6大功能模块: q 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账。 q 后台管理:该模块主要包括台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进行分类。 q 销售统计:该模块用来分段统计营业额,可以按日、月和年进行统计,其中日统计是按消费单和销售的商品统计销售额,月统计是按日期和每日的销售额统计销售额,年统计是按日期和月份统计销售额。 q 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作员换岗时使用,锁定系统在操作员临时离开时使用。 q 人员管理:该模块主要包括档案管理、管理员管理和操作权限管理功能,其中管理员管理功能用来管理系统的操作员,权限管理功能用来管理系统操作员具有的操作权限。 q 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。 操作注意事项 用户在使用酒店管理系统》之前,应注意以下事项: (1)管理员用户名和密码为:mr、mrsoft。 (2)当鼠标经过主界面右下角时,会弹出菜单,在这里可以对本系统的信息进行管理。 业务流程 要想运行本系统,请按照以下流程操作: (1)在“人员管理”中添加操作员及其档案信息。 (2)在“系统维护”中添加台号、菜系及菜品信息。 (3)在“台号”下拉列表中选择台号、在商品文本框中输入商品助记码或编号及商品数量,然后单击“开台”按钮。可添加多个商品。 (4)顾完单完菜后,单击“签单”按钮,表示确认该订单,此时可以执行结账操作,否则不可进行结账。 如果操作临时离开,可单击“锁定系统”按钮,输入登录密码可解锁。 (5)在“销售统计”中可对日销售、月销售及年销售额进行统计。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值