vue2 +Html + css 实现房间状态图,酒店前台入住管理系统的设计与开发

一、需求分析

        酒店管理系统是指一种可以提高酒店管理效率的软件或平台。其面向酒店前台工作人员和酒店管理员,界面美观大方、操作方便。系统强化以客源为中心的信息完整性、长久性、可操作性,突出以预订、房源、房价等对营销具有影响力的信息处理。

系统功能

本酒店管理系统支持客房预订、前台接待、前台收银、客房管理、财务查询、员工管理和日志查询等功能。

基本要求

  • 房间管理(房间号、房间类型、房间价格、房间状态和入住情况等)
  • 订房(为客人预定房间)
  • 客人入住(入住编号、入住天数、入住时间、房间编号等)
  • 客人登记(登记客人具体信息,如姓名,电话号码,身份证号码等)
  • 查询房间(按房间号,按房间状态等)
  • 退房(退房时间、房间编号、超时情况等)
  • 房间日志(记录房间的历史情况)
  • 账单(记录客人消费的账目)
  • 员工管理
  • 商品销售

二、功能模块

三、数据库设计

1、bills 账单表

名称数据类型长度注释
pay_idint10账单ID
g_idint10商品外键
pay_numint10购买数量
pay_costdecimal5条目花费
pay_datedate0支付时间
in_idint10参考intake外键

2、cancel退房表

名称数据类型长度注释
c_idint10退房订单编号
in_gidint10入住客人编号
in_datedate0登记入住时间
day_numint10入住天数
out_datedate0真正退房时间
r_idvarchar10房间编号

3、employees员工表

名称数据类型长度注释
e_idint10员工编号
e_namevarchar10员工姓名
e_typevarchar20员工类型
e_sexenum0性别
e_ageint10年龄
e_phonevarchar11手机号码

4、商品数量goods

名称数据类型长度注释
g_idint10商品ID
g_namevarchar20商品名字
g_typevarchar10商品类型
g_pricedouble10商品价格
g_numint10商品数量

5、客人表guests

名称数据类型长度注释
in_gidint10客人编号
g_namevarchar10客人姓名
g_ageint3客人年龄
g_sexenum0客人性别
g_IDcardvarchar18客人身份证号码
g_typevarchar10客人类型级别
g_phonevarchar11客人电话号码
g_signtimedate0注册登记时间

6、入住表intake

名称数据类型长度注释
in_idint10入住编号
in_gidint10发起订单客人编号
in_datedate0登记入住时间
day_numint10入住天数
r_idvarchar10房间编号
e_idint10员工编号
costdouble10入住订单价格
stateenum0订单状态
depositdouble10入住押金

7、购买表purchase

名称数据类型长度注释
pur_idint10进货ID
pur_datedate0进货日期
pur_costdouble10进货价格
pur_numint10进货数量
g_idint10商品ID外键

8、房间表room

名称数据类型长度注释
r_idvarchar10房间ID
r_typevarchar10房间类型
r_pricedouble20房间价格/天
r_stateenum0房间状态{'using','free'}
book_aheadenum0房间是否被超前预订
r_volumeint10房间满额人数
r_liveinint10房间现住人数
r_sizeint10房间面积
r_picvarchar100图片url

9、房间日志room_log

名称数据类型长度注释
l_idint10日志记录编号
r_idvarchar10日志记录房间号
l_timedatetime0日志记录时间
l_contentvarchar255日志记录内容
e_idint10参考外键

10、占据表takeups

名称数据类型长度注释
r_idvarchar10房间编号
takeup_datedate0占据房间从此时间至该日的最后一秒(即xx日 23:59:59)
in_idint10住房订单编号

11、用户表user

名称数据类型长度
userNameint10
passwordint10
typeenum0

四、功能分析

4.1登录校验

成功登录的用户,信息保存到session,每次获取数据的时候,保存到Threadlocal保证线程安全,由threadlocal挂载到每个线程 ,线程内共享类似局部变量,线程间隔离。

【业务逻辑层】部分逻辑判断

        if (userDao.selectUserName(userName) == null) {
            result = "0";
            return result;
        } else if (!userDao.selectUserPassword(userName).equals(userPassword)) {
            //用户存在,但是密码错误
            result = "1";
            return result;
        } else if (userDao.selectUserPassword(userName).equals(userPassword)) {
            //用户存在,且密码正确
            User me = this.selectUser(userName);
            //将User对象存储入session
            session.setAttribute("user",me);
            result = "2";
            return result;
        }

对于未登录的用户,配置mvc拦截器,若获取到的当前的用户为空,则未登录,返回状态码401;如果已经登录,就放行,并且将用户信息存储到Threadlocal,便于每次获取登录用户数据数据。拦截器原理图如下所示,外层拦截用户登录,登录校验,内层拦截需要管理员才能发起的请求,例如权限设置。

【拦截器部分代码】

        HttpSession session=request.getSession();
        //获取session中的用户
        Object user=session.getAttribute("user");
//        System.err.println("当前用户:"+user);
        if (user == null) {
            // 不存在,返回状态码401,同时拦截请求
            response.setStatus(401);
            return false;
        }
        // 如果存在,保存用户信息到ThreadLocal
        UserHolder.saveRooter((User) user);
        return true;

4.2入住住房

首先,先说说该部分数据库的设计,每入住客人都会占用房间一段时间,在后续的开发中,可能需要查询到用户的入住信息。所以换个思路,直接让每个订单占据一段时间,订单中自然就包含了用户信息。

对于占据的是时间段,举个例子,某位用户今天入住,入住两天,自然而然,他应该占据了房间的时间端,今天、明天、后天、这三天、所以我只需要将这三天的数据以及对应的订单号插入到数据库中就行了。一旦有新的用户进来,选择了相同房间,而且是相同的时间段,这时候数据库的对应的时间段,就已经被占用了,所以无法订房。

在用户选择入住起始时间以后,查询从起始时间往后的15天内,该房间的入住情况。但是注意的是一定是连续时间段,例如今日起始,但是明日被占用,那可选的入住天数就为0天。查询15天的sql语句如下图所示:

由后端再遍历出可选天数:

if (takeUps.size() == 0) {
    //如果集合为空直接返回结果集
    for (int i = 1; i <= 15; i++) {
        Map<String, String> day = new HashMap<String, String>();
        day.put("value", i + "");
        selectResults.add(day);
    }
} else {
    /*遍历takeUp集合并,将其装换为结果集*/
    for (int i = 1; i <= 15; i++) {
        calendar.add(Calendar.DATE, 1);//下一天
        for (TakeUps t : takeUps) {
            if (dateFormat.format(t.getTakeUpDate()).equals(dateFormat.format(newTakeUpdate))
                    || dateFormat.format(t.getTakeUpDate()).equals(dateFormat.format(calendar.getTime()))) {
                i = 16;//日期被占用了,时间段不连续,结束循环
                break;
            } else {
                Map<String, String> valid = new HashMap<String, String>();
                valid.put("value", i + "");
                selectResults.add(valid);
                break;
            }
        }
    }
}

4.3、订房限制

每一个订单都应该有一个发起人,我们的设计是每个发起人不能有其他的进行中的订单,不同时间段也不行。怎样获取已经订房的客人,定义一个视图,占据时间表、入住表、客人表多表内连接,通过该视图就清楚哪一个客人已经有订房订单了。

  1. 房间状态

重要的状态两个:空闲、使用中

用户新增入住订单,就得插入对应的占据时间段,同时进行如下判断。

If 占据的时间段包含当前时间,就得让房间的状态更新为“使用中……”;同理在用户退房的时候,也应该更新包含当前时间段的对应房间的状态,更新其状态为“空闲中”。具体使设计了一个函数,方便使用。

但是更新状态还是会出现问题,如下图所示:

日期到达第二天,房间状态需要作出改变,即设置更新为“使用中”,对此,设计事件解决问题,如下所示:

判断出占用日期是当前时间的房间,更新其房间状态为使用中。

4.4、房态图

自定义<div>,设置颜色样式

后端查询所有房间的数据返回给前端,前端遍历,动态拼接数据,绑定对应的点击事件。

if (data[i].roomState == "free" && data[i].bookAhead == "true") {
    html += '<li id="myroom' + i + '" onclick=showMyModal("' + data[i].roomId + '") ' +
        'onmouseover=showdetail("' + i + '","' + 1 + '") onmouseleave=clearData("' + i + '","' + 1 + '") class="room-bookAhead">\n' +
        '<div style="color: white"><i class="fa fa-calendar" style="color: #e55957"></i> ' + data[i].roomId + '</div>' +
        '<div style="color: white">' + data[i].roomType + '</div>' +
        '</li>';
    this.room.bSum += 1;
} else if (data[i].roomState == "using") {

……

}……

【效果图展示】

五、界面展示

1、系统首页

2、房态图

3、点击查看某个房间

【历史客人】

【当前客人】

 【房间日志】

 【房间预订情况】

【订房业务】

【房间物品】

 【物品记录】

3、订房业务

【选择房间】

【日期选择】

 【入住客人】

 【确认订单】

预订情况已经变化

 4、入住管理

5、员工管理

6、权限设置

六、资源获取

资源连接: vue2+Html+css实现房间状态图,酒店前台入住管理系统的设计与开发资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304468.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝&#xff1a;触发阀值直接抛弃。冷启动&#xff1a;在一段时间内针对突发流量缓慢增长处理数量。 3&#xff09;匀速器&#xff1a;请求以均匀的速度通过。 降级降级文档 1&#xff09;RT 统计时间内&#xff0c;大于预设请求数量&…

Spring - 配置支持多数据源

目录 SpringBoot整合多数据源整合步骤具体整合步骤如下&#xff1a;1、在application.properties中配置出多个数据源2、在代码中创建出mapper目录&#xff0c;在mapper目录下创建出不同数据源的目录创建出目录MySQL数据源的MapperSQL Server数据源的Mapper 3、创建config packa…

数据结构实验2:队列的应用

目录 一、实验目的 二、实验原理 1.1 队列的基本操作 1.1.1 队列的定义 1.1.2 队列的初始化 1.1.3 入队操作 1.1.4 出队操作 1.1.5 检查队列是否为空 1.1.6 返回队列的长度 2.1队列的运用 三、实验内容 问题描述 代码 截图 分析 一、实验目的 1、理解并掌握队列…

Pod的亲和性和反亲和性

如何部署pod是重要的集群的调度机制&#xff0c;合理的配置pod调度机制可以实现资源最大化利用。 调度策略匹配标签操作符拓扑域调度目标node的亲和性主机标签In、NotIn、Exists、DoesNotExist、Gt、Lt不支持指定主机pod的亲和性pod的标签In、NotIn、Exists、DoesNotExist支持…

【DNS Server Spoofed Request Amplification DDoS漏洞修复】

文章目录 前言 之前对公司服务器做漏洞扫描&#xff0c;发现扫描工具提示存在这样一个漏洞&#xff0c;本来觉得漏洞利用率低&#xff0c;而且扫描百度&#xff0c;QQ等网站也会有此漏洞&#xff0c;主要是找了很久资料也不知道如何修复&#xff0c;所以暂未处理。但是近期由于…

基于ODBC的数据库应用(MFC)

文章目录 1.预备知识1.数据库概述1.数据库和DBMS2.结构化查询语言SQL(Structured Query Language)3.数据库方式种类1.ODBC(Open DataBase Connectivity)开放数据库连接2.DAO(Data Access Objects)数据访问对象3.OLE DB(OLE数据库) 2.MFC ODBC1.CRecordset类构造记录集属性记录集…

制作更好的待办事项清单的方法有哪些?

在忙碌的工作、学习或生活中&#xff0c;我们都渴望变得更加自律&#xff0c;希望每件事都能有目标、有计划地高效完成。而要实现这一愿望&#xff0c;一个精心制作的待办事项清单无疑是不可或缺的。那么&#xff0c;制作更好的待办事项清单的方法有哪些&#xff1f;高效的待办…

C++深入学习之模板

为什么需要模板 先来看下面一段程序&#xff1a; int add(int x, int y) {return x y; }double add(double x, double y) {return x y; }long add(long x, long y) {return x y; }string add(string x, string y) {return x y; }//T1 T2 T3 T3 add(T1 x, T2 y) {return…

Apache ActiveMQ 远程代码执行漏洞分析

漏洞简介 Apache ActiveMQ官方发布新版本&#xff0c;修复了一个远程代码执行漏洞&#xff0c;攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行&#xff0c;从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …

docker部署firefox浏览器,实现远程访问

拉取firefox镜像&#xff0c;部署代码 docker run -d --name firefox -e TZAsia/Hong_Kong -e DISPLAY_WIDTH1920 -e DISPLAY_HEIGHT1080 -e KEEP_APP_RUNNING1 -e ENABLE_CJK_FONT1 -e VNC_PASSWORD12345678ABCabc -p 5800:5800 -p 5900:5900 -v /docker/firefox/config:/…

阿里云计算平台大数据基础工程技术团队直聘!!!

大数据基础工程技术团队&#xff0c;隶属于阿里云智能集团计算平台事业部&#xff0c;是一支负责阿里集团、公共云和混合云场景计算平台大数据&AI产品的稳定性建设、架构&成本优化、运维产品ABM&#xff08;Apsara Big data Manager&#xff09;研发和售后技术专家支持…

05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

目录 CMAK 各个功能的作用解释&#xff08;主题&#xff09;★ 主题★ 分区★ 创建主题&#xff1a;★ 列出和查看主题 CMAK 各个功能的作用解释&#xff08;主题&#xff09; ★ 主题 Kafka 主题虽然也叫 topic&#xff0c;但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 t…

好用的AI写作软件,这6款助你轻松写作

这几年&#xff0c;AI在线写作平台在国内市场上呈现出蓬勃发展的态势&#xff0c;这些写作软件能够帮助用户快速生成高质量的文章。下面我将介绍国内的6款AI在线写作平台&#xff0c;一起来看看吧&#xff01; 第一个爱制作AI 爱制作AI是拥有智能创作的AI在线写作平台之一&…

深兰科技AI医疗健康产品获3000台采购订单

12月6日&#xff0c;武汉某企业与深兰科技签署协议&#xff0c;一次性采购3000台深兰科技AI生理健康检测仪——扁鹊。 深兰科技AI生理健康检测仪——扁鹊是深兰科技推出的人体生理指标检测产品。基于AI生物技术、融合互联网医疗及AIoT技术&#xff0c;深兰科技AI生理健康检测仪…

限制选中指定个数CheckBox控件(2/2)

实例需求&#xff1a;工作表中有8个CheckBox控件&#xff08;下文中简称为控件&#xff09;&#xff0c;现在需要实现限制用户最多只能勾选4个控件。 在上一篇博客中已经实现了这个需求&#xff0c;其基本思路是用户选中第5个控件时&#xff0c;事件代码将取消勾选最后一个选中…

弱光图像增强算法(6大算法附程序),一站式解决论文实验比较部分

过往几年大量从事弱光图像增强的炒菜工作。 为了方便科研比较&#xff0c;也就是主观视觉比较和定量比较&#xff0c;提供一个集成程序给各位参考 非常简单&#xff0c;只需要点击Main.PY和修改输出的路径即可 本次收集的6类算法(EnlightenGAN, RUAS, SCI, ZeroDCE, ZeroDCE…

python封装接口自动化测试套件 !

在Python中&#xff0c;我们可以使用requests库来实现接口自动化测试&#xff0c;并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例&#xff1a; 首先&#xff0c;我们需要安装所需的库&#xff1a; pip install requests …

运动耳机怎么选?2024年运动耳机推荐,运动蓝牙耳机排行榜10强

​在现代生活中&#xff0c;音乐和运动已经成为很多人生活不可分割的一部分。运动耳机在这样的背景下变得越来越受欢迎&#xff0c;它们不仅可以在运动时提供音乐的陪伴&#xff0c;还能增加运动时的乐趣和动力。但是&#xff0c;面对市面上众多不同类型的运动耳机&#xff0c;…

Linux进程通信之管道

目录 1、无名管道 1.无名管道的特点 2.pipe函数创建管道 3.图例 2、命名管道&#xff08;FIFO&#xff09; 1.命名管道的特点 2.mkfifo 函数-创建命名管道 3.示例 1.循环读取数据 2.循环写入数据 1、无名管道 管道通常指的就是无名管道&#xff0c; 1.无名管道的特点…

校招行测,认知能力测验,④破解数量关系测试题

数量关系&#xff0c;值得是数量计算、对比和分析&#xff0c;每种题型都有一定的规律性&#xff0c;如果善于终结也是容易掌握的&#xff0c;当然&#xff0c;只有见多&#xff0c;才能识广&#xff0c;最好的方式就是&#xff0c;锻炼&#xff0c;刷题&#xff0c;就算是临时…