摘 要
随着时代的进步与发展,互联网技术的应用也变得日益广泛。窝窝酒店管理系统在当今社会体系中扮演了一个非常重要的角色,它能大大地提高效率并减少了资源上的浪费。本文首先介绍了窝窝酒店管理系统的优势以及重要性;然后描述了这个系统的开发背景及环境,接着做了一个简单的阐述说明,最后是总结以及回顾。
本次窝窝酒店管理系统主要是以IDEA作为系统的开发工具,以Springboot技术作为功能实现的语言基础,使用MySQL作为系统数据的管理中心,帮助工作人员解决信息的存储问题和管理问题,主要解决了客户的通知公告查询、酒店资讯浏览、房间预定、在线留言、收藏酒店、客房信息以及酒店管理者的数据管理功能,并且配合使HTML5网页技术实现系统页面的布局,做到功能模块布局清晰,系统界面美观大方。而系统的基本框架是基于B/S架构,实现了系统角色的分工,确保不同角色的功能权限能够完美执行,在通过大量的实时数据对系统功能进行精准测试,保证系统功能实现的正确性和准确性。
关键词:Java开发语言;SpringBoot框架技术;酒店管理
Abstract
With the progress and development of the times, the application of Internet technology has become increasingly widespread. The management system of Wowo Hotel plays a very important role in today's social system, which can greatly improve efficiency and reduce resource waste. This article first introduces the advantages and importance of the Wowo Hotel Management System; Then the development background and environment of this system were described, followed by a brief explanation, and finally a summary and review.
This Wowo Hotel Management System is mainly developed using IDEA as the system development tool, Springboot technology as the language foundation for functional implementation, and MySQL as the system data management center to help staff solve information storage and management problems. It mainly solves customer notification and announcement queries, hotel information browsing, room reservations, online messages, and hotel favorites The data management functions for guest room information and hotel managers, combined with the use of HTML5 web technology to achieve a clear layout of system pages and a beautiful and elegant system interface. The basic framework of the system is based on the B/S architecture, which realizes the division of roles and ensures that the functional permissions of different roles can be perfectly executed. Through a large amount of real-time data, the system functions are accurately tested to ensure the correctness and accuracy of the system function implementation.
Key words:Java development language; SpringBoot framework technology; hotel management
目 录
第1章 绪论
1.1 研究背景与意义
1.2 开发现状
第2章 相关技术介绍
2.1Java编程语言
2.2 SpringBoot框架介绍
2.3 MySQL数据库
第3章 系统分析
3.1 可行性分析
3.1.1 经济可行性
3.1.2 技术可行性
3.1.3 运行可行性
3.2 系统功能需求
3.3 系统业务流程分析
第4章 系统设计
4.1 总体目标
4.2 总体结构设计
4.3 功能模块设计
4.4 数据库设计
4.4.1 概念设计
4.4.2 逻辑设计
第5章 系统实现
5.1 登录模块的实现
5.2 用户模块的实现
5.2.1 注册模块的实现
5.2.2 交流模块的实现
5.2.3 客房收藏模块的实现
5.3 后台模块的实现
5.3.1 用户管理模块的实现
5.3.2 客房信息模块的实现
5.3.3 客房类型管理模块的实现
5.3.4 通知公告管理模块的实现
第6章 系统测试
6.1 测试目的
6.2 测试用例
6.2.1 用户登录测试
6.2.2 创建数据测试
6.2.3 修改数据测试
6.2.4 查询数据测试
6.3 测试结果
第7章 结论
参考文献
致谢 37
据国内 IT产业公布的数据显示,近几年来,我国的互联网发展速度很快,不但由于用户人数的不断增多,而且由于宽带网络的普及和速度越来越快,每天都有几十亿人进入到网络世界。网络的发展改变了传统的信息传递模式,以至于打破了以往的时空和时间的障碍,使人们从物质到精神,从形式到内容,从生产到生活,都发生了翻天覆地的变化。
(二)研究目的与意义
最近几年,随着疫情的发展,加上本身酒店行业的激烈竞争,酒店的业绩压力逐渐增加。在这种特殊时期,如何提高酒店的管理水平和服务水平是酒店管理者需要思考的问题,通过使用酒店管理系统可以显著改善以上两点。用户通过本系统可以查看订单的基本信息,进行在线预订,前台用户可以查看用户的预约订房情况和订餐情况,管理员也可以把所有的用户信息等录入到系统中,获取到用户信息之后,也可以为以后进行针对性的营销活动做准备,提升酒店的整体经营效率和用户管理水平。
-
- 开发现状
我国酒店业很早就利用计算机管理系统来加强管理、提高服务水平。我国酒店的IT的发展阶段主要是以电脑系统的运用为标志的,电话通讯系统实际上也是从程控交换技术出现才获得质的飞跃。随着计算机的普及应用,计算机技术的不断发展,同时也使酒店管理系统发展到了一个新的时期,趋于更加完善。酒店管理系统实现了酒店宾馆订房、入住、退房流程的智能化、自动化,节约了酒店的人工成本,较少了客人的等候时间,具有时尚、便捷、私密的特点。
国外的酒店业发展较为国内早了好多年,同事在多年的发展探索中,酒店的功能发展更加全面和多样化。酒店由一开始的建安住宿到现在的休闲娱乐以及商务旅游等,向着更复杂功能更齐全的方向发展。随着这些酒店的全面发展,其对酒店的管理要求也随着提高,为了更方便地管理酒店,在计算机迅速发展的背景下,产生了酒店管理系统软件,在很大成程度上减少了人力物力和财力,也同时使酒店的经营更加规范化,提高了服务的标准。
- 相关技术介绍
- Java编程语言
早在上个世纪90年代,Java就由詹姆斯·高斯林进行开发,自诞生之日起,Java就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Java语言是真的是一种纯面向对象的计算机语言,在Java的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Java中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Java另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Java也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Java编程语言进行后台的开发,一是鉴于标准化制定以后[4],Java语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Java代码的能力。
-
- SpringBoot框架介绍
-
- MySQL数据库
数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的Mysql并不是甲骨文公司的,后来才被他收购的。Mysql非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是mysql同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习总结所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用mysql进行数据库管理。Mysql的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以mysql在使用上还是更多的使用在中小项目中。
为了迎合当今社会的现况,便于在市场中打开局面、占有一席之地;在大数据时代下,所有的信息化资源全部都是共享资源、为了长远性考虑,对此需要考虑如何推动整体的系统开发实现标准化。保证系统成功,所以就必须从效益、技术等上面做可行性报告研究。
-
-
- 经济可行性
-
一般情况下,对一个项目做经济分析主要可从如下几个方面来展开:一方面就是预算投入情况,可包括项目参与人员的薪资支出、申请软硬件工具及差旅等相关支出共同构成预算;另一方面则一般是在开发投入之后近两到三年内的效益预估,可通过预估该软件投入使用后可为酒店管理上的提升带来管理成本的节约。所设计的窝窝酒店管理系统主要是服务器和开发费用,可通过利用现有的服务器资源来运行该系统,其开发费用大概百元即可;另外一旦该窝窝酒店管理系统被发布,可为酒店带来服务效率上的明显提升,同时也可进一步提升酒店的综合信息化水平,由此可得出在经济上也是可行的。
-
-
- 技术可行性
-
任何一个项目在被企业所接纳立项之前,其技术方面的分析是其中一个重要的方面,它关系到该系统是否能被开发出来且可供用户正常良好地使用。通常情况下可从以下几个方面来予以分析:一是企业开发人员对开发技术的掌握情况,二是所考虑采用的技术是否已被企业现有项目所验证为是可靠稳定的,三是是否可引入新技术弥补现有技术上的不足,进而提升其现有系统的性能和美化其界面呈现效果。对于本课题所设计的窝窝酒店管理系统来讲,考虑到技术的成熟性并结合个人的掌握水平,可不考虑新技术的融合,在此基础上综合考虑采用Java语言+MySQL数据库来开发窝窝酒店管理系统,且当前所要被采用的开发技术已被大量的窝窝酒店管理系统所验证,由此在技术上是可行的。
正因为本系统是在服务器的基础上开发的,系统开发成功以后,用户无需导航指导便可自己上手进行操作。系统一经开发测试后,在计算机移动客户端能上网的情况下,只需在浏览器里完成所有可用操作,也无需配置复杂的使用环境,只需一个网址便可进入系统。这大大减少了订房服务的等待时间,在方便用户的同时也让管理人员更加易于管理订房订单。
-
- 系统功能需求
需求分析就是分别对经济、技术和管理的可行性来进行具体的分析。本系统用户的主要需求体现在系统用户、客房信息管理、房间预定管理、办理入住管理、取消预定管理、客房类型管理、系统管理、通知公告管理、资源管理、交流管理等功能上。这些需求都和数据库表字段密不可分。因此,需求分析是项目中非常关键且特别重要的过程。
普通用户用例图如下所示。
图3-1 普通用户用例图
管理员用例图如下所示。
图3-2 管理员用例图
表3-1 客房信息管理描述
描述项 | 说明 |
用例名称 | 客房信息操作 |
用例描述 | 管理员正确登录后台管理的条件下,对客房信息模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入客房信息管理页面,查询客房的信息 (2)管理员可以对客房信息进行增删除和编辑客房信息操作 (3)管理员新增客房信息,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 房间预定管理描述
描述项 | 说明 |
用例名称 | 房间预定操作 |
用例描述 | 管理员正确登录后台管理的条件下,房间预定模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入房间预定管理页面,查询房间预定内容的信息 (2)管理员可以对房间预定进行删除操作 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 办理入住管理描述
描述项 | 说明 |
用例名称 | 办理入住操作 |
用例描述 | 管理员正确登录后台管理的条件下,对办理入住模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入办理入住管理页面,查询办理入住的信息 (2)管理员可以对办理入住进行增删除和编辑办理入住操作 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 取消预定管理描述
描述项 | 说明 |
用例名称 | 取消预定操作 |
用例描述 | 管理员正确登录后台管理的条件下,取消预定模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入取消预定管理页面,查询取消预定内容的信息 (2)管理员可以对取消预定进行删除操作 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 资讯浏览描述
描述项 | 说明 |
用例名称 | 资讯查询 |
用例描述 | 用户可以查看资讯的详情 |
参与者 | 用户 |
前置条件 | 使用者是普通用户类型并成功进入该系统 |
后置条件 | 浏览成功 |
主事件流 | (1)用户可以浏览资讯的模块、资讯的内容 (2)用户点击资讯可以对资讯进行详情阅读 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 交流管理用例描述
描述项 | 说明 |
用例名称 | 交流操作 |
用例描述 | 管理员正确登录后台管理的条件下,交流模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入交流界面,查询交流内容信息 (2)管理员可以删除交流 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
-
- 系统业务流程分析
管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。
用户权限下的工作流程主要为:用户通过系统提供的注册功能,进行身份验证并注册,而后在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。
员工权限下的工作流程主要为:员工通过系统提供的注册功能,进行身份的验证,而后进行身份信息的登录,并且通过首页提供的个人后台按钮,转入员工权限下的个人后台,并进行相应的操作。
窝窝酒店管理系统的业务流程如下图所示。
图3-2 系统业务流程图
管理员拥有最高权限,在对各项信息进行增加、删除、修改后会更新后台数据库的内容,用户在登录进行通知公告查询、酒店资讯浏览、客房浏览、房间预定、办理入住、取消预定、办理退房、留言管理等指令动作同样会更新后台数据。
- 系统设计
窝窝酒店管理系统主要服务于酒店机构的酒店管理,利用网络改变传统酒店管理模式,简化酒店管理流程,减轻传统酒店管理带来的工作负担和降低大量资源的消耗。本系统达到的目标主要有以下几点:
(1)通过简单的页面设计和便捷的功能操作,保证系统的简单性和实用性,形成良好的用户体验。
(2)本系统主要针对酒店管理需求进行设计开发,突出较强的针对性。
(3)能够具有一定的安全机制,保证用户信息的安全性。
-
- 总体结构设计
层次框图是一系列由多层矩形框架组成的树,其顶部为矩形框架,表示整个数据结构,下方的长方形立方体表示独立的数据,下方的长方形表示该数据的实际数据(不能进行分割)。由于这个架构的精炼,层级方块图描述的资料结构也愈加详尽,这个模型很好地满足了需求分析的要求。首先对最上层的信息进行分类,然后在图表中的每个路径上重复地进行优化,直至完整的数据结构被确定。
这个系统由三个模块组成,一是管理员,二是普通用户,三是前台员工,这三个部分看起来是独立的,实际上却是连接着数据库,每个模块都有自己的权限,唯一不同的,就是访问的方式不同。在调研资料的基础上,完成了各个模块的功能。在对上述功能进行分析的基础上,本系统提出了三个主要的模块,每个单元可划分为若干小单元。
系统的功能结构图如下图所示。
图4-2 系统功能结构图
本窝窝酒店管理系统的用户登录涉及到三类信息的判断:第一类是用户名和密码是否为空;第二类是验证码是否录入和正确;第三类就是用户登录信息、验证码和权限是否匹配通过。在该用户登录流程对会对用户名和密码是否为空进行判断,以及验证码是否正确进行判断,只有以上的几类信息中的一种存在问题的情况下都是无法登录成功的。
客房信息管理模块:
本窝窝酒店管理系统中的酒店管理,管理方式都是对信息的三种基本操作:一种是完成客房信息的添加,在这里会对客房信息的录入情况来判断;一种是对客房信息的修改,另一种就是对客房信息的删除。其后两种操作都是要建立在第一种操作而生成的客房列表的基础上完成的。
留言模块:
经过需求分析可以得出,当用户咨询之后,员工可以在主界面中可以选择咨询功能,员工可以进行用户的咨询查看,可以进行填写咨询,也可以对咨询进行删除。通过这种方式,员工可以和用户进行密切的交流。
房间预定模块:
如果需要的话,用户可以发起预定,填写预定数量,选择到店时间,提交预定,即可以在个人中心查看到自己的预定记录,员工查看已提交的房间预定。
在需求分析中,我们用来分析的对象往往是抽象的概念,所以在这个环节应当避免过于细致的细节分析,而是通过这些抽象的概念来分析实体所具备的属性和实体之间的联系。窝窝酒店管理系统利用E-R图对上述实体和联系进行描述。
总体ER图如下图所示。
图4-3 总体ER图
所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,窝窝酒店管理系统的总体设计和实施过程一共涉及到了几个资料表格。
以下就介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库表:
表cancel_reservation (取消预定)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | cancel_reservation_id | int | 10 | 0 | N | Y | 取消预定ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
6 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
7 | expected_date | date | 10 | 0 | Y | N | 预定日期 | |
8 | cancel_time | datetime | 19 | 0 | Y | N | 取消时间 | |
9 | reason_for_cancellation | text | 65535 | 0 | Y | N | 取消原因 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表check_in (办理入住)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | check_in_id | int | 10 | 0 | N | Y | 办理入住ID | |
2 | front_desk_staff | int | 10 | 0 | Y | N | 0 | 前台员工 |
3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
4 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
7 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
8 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
9 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
10 | expected_date | date | 10 | 0 | Y | N | 预定日期 | |
11 | number_of_peers | int | 10 | 0 | Y | N | 0 | 同行人数 |
12 | todays_price | int | 10 | 0 | Y | N | 0 | 今天价格 |
13 | number_of_scheduled_days | int | 10 | 0 | Y | N | 0 | 预定日数 |
14 | prepaid_amount | int | 10 | 0 | Y | N | 0 | 预付金额 |
15 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
16 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表check_out (办理退房)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | check_out_id | int | 10 | 0 | N | Y | 办理退房ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
5 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
6 | departure_date | date | 10 | 0 | Y | N | 离店日期 | |
7 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
8 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
9 | number_of_peers | int | 10 | 0 | Y | N | 0 | 同行人数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表front_desk_staff (前台员工)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | front_desk_staff_id | int | 10 | 0 | N | Y | 前台员工ID | |
2 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
3 | employee_phone_number | varchar | 64 | 0 | Y | N | 员工电话 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表message (留言板)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | message_id | int | 10 | 0 | N | Y | 留言板ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
3 | title | varchar | 64 | 0 | Y | N | 标题: | |
4 | content | longtext | 2147483647 | 0 | N | N | 内容: | |
5 | nickname | varchar | 32 | 0 | N | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像: | |
7 | | varchar | 125 | 0 | Y | N | 留言者邮箱 | |
8 | phone | varchar | 11 | 0 | Y | N | 留言者手机号码 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
11 | reply | longtext | 2147483647 | 0 | Y | N | 回复 | |
12 | reply_state | tinyint | 4 | 0 | Y | N | 0 | 回复状态 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表room_information (客房信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | room_information_id | int | 10 | 0 | N | Y | 客房信息ID | |
2 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
3 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
4 | room_area | varchar | 64 | 0 | Y | N | 房间面积 | |
5 | room_pictures | varchar | 255 | 0 | Y | N | 房间图片 | |
6 | room_status | varchar | 64 | 0 | Y | N | 房间状态 | |
7 | accommodation_capacity | int | 10 | 0 | Y | N | 0 | 容纳人数 |
8 | todays_price | int | 10 | 0 | Y | N | 0 | 今天价格 |
9 | room_introduction | text | 65535 | 0 | Y | N | 房间简介 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表room_reservation (房间预定)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | room_reservation_id | int | 10 | 0 | N | Y | 房间预定ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
6 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
7 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
8 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
9 | room_area | varchar | 64 | 0 | Y | N | 房间面积 | |
10 | todays_price | int | 10 | 0 | Y | N | 0 | 今天价格 |
11 | expected_date | date | 10 | 0 | Y | N | 预定日期 | |
12 | number_of_scheduled_days | int | 10 | 0 | Y | N | 0 | 预定日数 |
13 | number_of_peers | int | 10 | 0 | Y | N | 0 | 同行人数 |
14 | booking_remarks | text | 65535 | 0 | Y | N | 预定备注 | |
15 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
16 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表room_type (客房类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | room_type_id | int | 10 | 0 | N | Y | 客房类型ID | |
2 | customer_service_type | varchar | 64 | 0 | Y | N | 客服类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
用户登录的验证将不再局限于登录信息和权限的匹配验证,而是另外增加了一个验证码,只有界面上所有的编辑框数据都准确的情况下才能实现登录成功。管理员的登录和前台用户登录是一样的过程,其主要就是利用权限字段来完成对用户或管理员的角色识别。
用户登录流程图如下所示。
图5-1 用户登录流程图
登录界面如下图所示。
图5-1 登录界面
登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。
用户注册流程图如下所示。
图5-1 用户注册流程图
用户注册界面如下图所示。
图5-1 用户注册界面
注册关键代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
-
-
- 交流模块的实现
-
当用户和用户之间交流之后,管理者可以在主界面中可以选择交流功能,管理者可以进行用户的交流查看,可以进行填写交流回复,也可以对交流进行删除。通过这种方式,管理者可以和用户进行密切的交流。
发表交流流程图如下所示。
图5-1 发表交流流程图
发表交流界面如图所示。
图5-1 发表交流界面
-
-
- 客房收藏模块的实现
-
用户选择相应的客房收藏,通过id传参,找到id为此传参的客房,在收藏页提交收藏记录表单,生成收藏记录,用户在个人中心管理个人的收藏夹。
客房收藏界面如下图所示。
图5-1 客房收藏界面
用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。
用户管理流程图如下所示。
图5-1 用户管理流程图
用户管理界面如下图所示。
图5-1 用户管理界面
用户管理关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
管理员执行客房信息管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加客房信息”,可以通过客房信息添加界面添加详细信息并添加客房信息注释。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到客房信息查询列表中,管理员可进行编辑以及修改。
客房信息管理流程如下图所示。
图5-1 客房信息管理流程
客房信息添加界面如下图所示。
图5-1 客房信息添加界面
客房信息管理界面如下图所示。
图5-1 客房信息管理界面
客房信息管理关键代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
-
-
- 客房类型管理模块的实现
-
管理员执行客房类型管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加客房类型”,可以通过客房类型添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到客房类型查询列表中,管理员可进行编辑以及修改。
客房类型添加流程图如下所示。
图5-1 客房类型添加流程图
客房类型管理如下图所示。
图5-1 客房类型管理界面
客房类型管理关键代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
-
-
- 通知公告管理模块的实现
-
在主页左侧菜单栏中点击“通知公告管理”按钮,再从二级目录中点击“新增通知公告”按钮,进入到新增通知公告界面。在此处通知公告可以添加通知公告的名称、价格、预约方式。
在主页左侧菜单栏中点击“通知公告管理”按钮,再从二级目录中点击“查询通知公告”按钮,进入到查询通知公告界面。在此处通知公告可以查询当前所有通知公告记录。
通知公告管理界面如下图所示。
图5-1 通知公告管理界面
公告展示界面如下图所示。
图5-1 通知公告展示界面
-
- 测试用例
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
-
-
- 创建数据测试
-
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如下表所示。
表6-2 创建数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行创建数据 | |
测试用例描述 | 使用者输入要创建的数据 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如下表所示。
表6-3 修改数据测试用例
测试用例编号 | YL_06 | |
测试用例名称 | 系统使用者进行修改数据 | |
测试用例描述 | 使用者对可修改的数据项进行修改 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如下表所示。
表6-4 查询数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行查询数据 | |
测试用例描述 | 全部查询以及输入关键词查询 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
界面自动查询全部 | 显示对应所有记录 | 预期结果 |
输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
结 论
本次窝窝酒店管理系统利用了Springboot同现实酒店管理工作进行相结合,在系统功能开始编码之前,作者花费了大量时间在图书馆内进行资料文献的收集和总结,通过大量文献的分析,能够发现,酒店管理的方式在酒店中扮演的位置是越来越重要,而使用的方式也是越来越多元化,也正是因为这个原因,作者深深的希望能够开发出一种专门针对酒店的窝窝酒店管理系统,以满足用户的需求。
在本次窝窝酒店管理系统中,利用了目前市场上普遍使用的Java技术,以及数据库管理功能MySQL,和目前比较流行的Springboot框架,最后配合使用到了HTML页面布局技术进行系统界面的布置,以现实生活的酒店管理过程为标准,设计实现了客房信息浏览、公告查询、在线评论、交流论坛、房间预定等功能,并维护好后台的信息和整体系统的稳定性。
但是由于作者受到了技术水平的限制,在有限的时间,只能够将系统功能模拟时的功能实现,在许多功能方面仍然存在很大的弊端,而这些弊端需要不断的测试,不断的总结,不断的改进。例如本次系统设计中,在数据储存的方面并不够全面,很容易出现信息泄露的风险;例如针对用户权限的设置同样不够全面完整,没有考虑权限在实际情况的运用是否能够完美执行。而在这之后的日子里,作者将会继续学习Java技术和相关的信息技术,对系统功能进行更加完整的,详细的分析,将系统功能一一进行完善,帮助使用者完成相应的操作。
参考文献
[1]刘明,杨胜飞,张冶锋等. 基于SpringBoot框架的长距离输水工程水量监测系统设计 [J]. 云南水力发电, 2023, 39 (11): 359-362.
[2]宋小炜,邱爽. 基于边缘计算的酒店管理系统[P]. 上海市: CN115208922B, 2023-11-03.
[3]尹应荆. JAVA编程语言在计算机软件开发中的应用 [J]. 石河子科技, 2023, (05): 45-47.
[4]袁琳琳. 浅析Java语言在计算机软件开发中的应用 [J]. 信息记录材料, 2023, 24 (09): 81-83.
[5]岳峰,段政伟. 基于SpringBoot框架的营区手机管控平台设计与实现 [J]. 无线互联科技, 2023, 20 (11): 49-52.
[6]Portable Hotel Management System Using Virtual Reality [J]. International Journal of Recent Technology and Engineering (IJRTE), 2023, 12 (1):
[7]郭志英. 基于Web的酒店管理系统的设计与实现 [J]. 长江信息通信, 2022, 35 (12): 120-123.
[8]Li T . CRM Hotel Management System and Intelligent Information Push Based on Bp Neural Network [J]. Advances in Computer, Signals and Systems, 2022, 6 (4):
[9]钱春霞. 智慧酒店系统设计研究 [J]. 电子技术与软件工程, 2022, (14): 175-178.
[10]钱春霞. 连锁酒店管理系统的设计研究 [J]. 电子技术与软件工程, 2022, (11): 216-219.
[11]Wong E . 破解四大云酒店管理系统误区 [J]. 软件和集成电路, 2022, (05): 12-13.
[12]于盛洋. 智慧酒店管理系统设计与实现——基于RFID模块 [J]. 产业科技创新, 2022, 4 (02): 37-40.
[13]董华军. 酒店管理系统的设计与实现 [J]. 工业控制计算机, 2022, 35 (01): 140-141.
[14]高志平. 基于SpringBoot框架与ITIL方法的运维管理系统的设计与实现[D]. 华东师范大学, 2021.
[15]王岩, 一种基于人脸识别和卡片识别的酒店管理系统. 陕西省, 西安顶吉智能科技有限公司, 2021-08-17.
[16]毕可, 基于Java的智慧酒店服务管理系统V1.0. 湖北省, 武汉东湖学院, 2021-02-01.
[17]Bailey B . Advanced Hotel Management System[M]. 2021-09-03.
致 谢
在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的心得,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~