我们对酒店进行调研,发现部分酒店依托第三方平台,但第三方平台没有办法更好帮助酒店管理,故我们决定帮助酒店开发一套基于 Java 的酒店管理系统。使用基于Java的酒店管理系统可以帮助酒店完成顾客入住信息的管理,酒店物资的管理,酒店工作人员的管理,酒店收益管理等。酒店管理系统设计的初衷帮助酒店不用在多个系统切换,可以很好地帮助酒店有效降低成本。同时也为顾客提供了更好的服务。基于Java的酒店管理系统可以帮助酒店记录每一间房的情况,可以提醒酒店管理人员,安排打扫,更新房间的洗漱用品等,让顾客每次入住都是干净卫生的。经过我们发现大部分使用第三方软件进行订购房间,使用大平台的虽然可以为我们提高更好的曝光,这样会导致顾客对于酒店的黏性降低。使用自己的系统软件,可以更好地对酒店并行管理,同时也是提供品牌的行业影响力,在软件中我们可以根据不同地区进行定制设计业务。有一个酒店系统可以实现对酒店正常的分析,帮助经营者有效制定合适经验方案。基于Java的酒店管理系统可以帮助企业完成数字化转型,也是企业经营战略的升级的基石。
关键词:Java,酒店管理,数据库,系统
We conducted research on the hotel and found that some hotels rely on third-party platforms, but the third-party platform can not better help the hotel management, so we decided to help the hotel develop a hotel management system based on Java. The use of the Java-based hotel management system can help the hotel to complete the management of customer check-in information, hotel materials management, hotel staff management, hotel revenue management, etc. The original intention of the hotel management system design helps the hotel does not have to switch in multiple systems, which can well help the hotel to effectively reduce the cost. At the same time, it also provides a better service for the customers. The hotel management system based on Java can help the hotel record the situation of each room, remind the hotel management staff to clean the room, update the toiletries of the room, so that customers are clean and hygienic. We found that most of us use third-party software to order rooms, although the large platform can improve better exposure, which will lead to the stickiness of customers to the hotel. Using our own system software, we can better manage the hotel, and also provide the industry influence of the brand. In the software, we can customize the design business according to different regions. There is a hotel system to realize the normal analysis of the hotel, to help the operators to effectively develop the appropriate experience plan. Java-based hotel management system can help enterprises to complete the digital transformation, and is also the cornerstone of the upgrading of enterprise business strategy.
Keywords:Java, Hotel Management, database, System
1.1 背景
受疫情所影响,2020-2022全国旅游人数较2019年大幅减少。同时旅游行业规模与疫情管控息息相关,2021年随着疫情缓解,管控放松,旅游人数及旅游收入同比有所改善。但随着2022年疫情反复,管控收紧,旅游人数及旅游收入同比下降。因此,随着如今疫情管控放开,旅游行业规模有望复苏至疫情前水平。据统计,2022年中国游客数量为25亿人,同比减少21.88%[1]。
传统酒店管理模式多度依赖节假日旅客,几年前又因为民宿的新起点,导致酒店行业更是雪上加霜,在这样的背景下,很多酒店开始转型市场上出现了,电竞酒店,青旅等[2]。
今年大家出去旅游的人数明显变多,随之而来就来,酒店差点一面也暴露在大众,比如说是否含有摄像头,卫生是否合格,提供的食品是否卫生等,现在很多酒店都是连锁[3]。
我国住房租赁市场目前还在起步阶段,市场稳步发展,根据数据,我国2020年住房租赁总交易额达到1.9万亿元,2014—2020年复合增长率为13.3%,市场持续平稳上升。预计2021年市场规模将进一步增长,可达2.2亿元。受传统思想影响,国人普遍认为购买新房才算家,才拥有安全感。对比房地产的迅速发展,我国租房市场整体发展缓慢。未来随着观念的转变,租房市场仍有较大发展空间。
再进行系统开发之前,首先需要进行适当的调研工作,根据实际需求,确定系统所需要实现的功能,这就是系统需要分析。考虑到目前酒店都是连锁比较多,系统设计方面需要能够上网,现在移动互联网,APP已经慢慢被小程序取代,系统主要有web管理台、用户小程序组成[4]。
系统主要面对人群是酒店员工,系统运维人员(系统管理人员),顾客。三种大方向人群。为了更好的为顾客提供服务,同时也为了更好管理企业员工,系统模块需要一个员工管理模块,模块主要功能:添加员工,修改员工,删除员工,分页查询员工,员工数据详情。顾客可以分为普通用户,VIP用户,两种类型,顾客管理模块,如果是酒店使用人员登录系统,新增的顾客全部由小程序端提供,顾客的信息涉及顾客的个人信息,我们也没有办法修改。顾客管理模块需要和评价模块进行关联,可以查看该顾客所有的评论,还需要和订单模块进行关联,对顾客订单的查看。对于顾客数据的操作,酒店使用人员无法编辑数据,只有系统运维人员(系统管理人员)可以进行修改[5]。
考虑目前的酒店行业背景,酒店房间使用时间更加灵活,可以向用户提供日租,月租,半月租,年租等,酒店提供租房服务,酒店提供较长租相比传统房屋出租,用户不用担心,水电气等费用。在酒店短租可以向用户提供房间的清扫服务等,对于临时出差人士相当友好。酒店的房间管理模块,有如下的功能,新增房间,修改房间,预定房间,删除房间,分页查询房间,房间收益统计[6]。
酒店管理系统很多时候容易忽略对于酒店本身的支出情况,采买卫生纸等一些清洁用品的开销,考虑到这些因素,所以本系统决定提供一个收支管理系统。顾客下单就会生成订单,订单模块也是必须的,订单模块,是顾客消费才能生成的数据,对于这方面的数据我主要以分析为主,分页查询订单信息,订单数据统计[7]。
酒店系统最重要的评论系统,评论系统可以更好对顾客提供的反馈作出修正,也可以对员工经营状态的查看。酒店可以向顾客提供饮食服务,需要一个餐饮管理模块,酒店员工可以添加菜品,修改菜品,删除菜品,查询菜品服务[8]。
酒店服务对于很多人都不是每天的刚需消费,所以很多酒店采用积分的性质,酒店换购产品,这样积分换购产品,很多都是需要大量积分才能换购产品,无法迅速给顾客提供真实的利益,这样很难提高消费者的黏度。所以我们取消积分换购模式,改为消费会员模式,现在酒店品牌都是加盟制度,可以更好地实施酒店消费会员制度,加盟酒店按照顾客每次消费获取成长值。
当然对于一个系统而言不仅有业务模块也有一些基本的功能,我们一般统称为系统模块比如:字典管理,菜品管理等。
现在很多酒店加盟比较多,系统考虑到这一点,故新增一个酒店管理,方便系统管理员添加酒店,修改酒店信息等。
经过简单的分析,我们得出系统需要以下几个核心的模块,员工管理模块,收支管理模块,售后模块,顾客管理模块,餐饮模块,房间管理模块,系统模块。
员工管理模块只有在web端才有,主要对员工信息进行管理。(1)新增员工功能:当者酒店负责人添加员工,需要先选员工对应的酒店,酒店负责人只能选择管理的酒店无法选择其他酒店。添加员工的身份证号必须唯一保证系统不重复且是必填字段,手机号也是必填字段。员工身份选择:保洁,厨师,保安,服务员,前台,等身份,为了后面扩展建议配置在字典中。当添加员工完成会自动生成一个员工编号。(2)编辑员工功能:当酒店负责人对添加的数据进行修改,修改时也需要保证身份证的唯一,身份证和手机号也是必填。(3)删除员工功能:删除员工,当酒店负责人对已经添加的员工数据进行逻辑删除操作。(4)分页查询员工,当酒店负责人输入查询按照身份证号,手机号,名字,等进行查询可以查看对应数据列表。(5)员工数据详情:详情可以查看员工更详细的信息。
收支管理模块web端,对收入支出信息进行管理。(1)新增收支信息,酒店的收支信息主要由顾客消费产生的收入信息,顾客退款的退款信息。当酒店负责人添加支出信息,添加支出信息,需要选择对应的酒店,金额不能为空,支出的事由不能为空,支出的时间不能为空,添加成功后会自动生成一个订单号。(2)修改收支信息:修改信息只能对手动添加支出信息进行修改,不能对退款,售后,顾客消费的收支信息进行修改。(3)删除收支信息:当酒店负责人删除收支信息,只能删除人工手动添加的信息,无法删除退款,售后,顾客消费。(4)分页查询收支信息:当酒店负责人可以使用订单类型,时间等进行查询可以查看对应数据列表。(5)退款收支信息:当顾客提交退款申请才会出现退款选项。当订单信息顾客有异议,如果房间在没有入住,菜品下单时间没有超过酒店规定时间可以直接退款。已经过了时间,协商退款,或者拒绝退款。协商退款,操作者需要备注退款理由。(6)收支信息分析:需要对当年或者当月当季度,酒店收支信息的统计,对酒店收入金额统计,支出金额统计,营业额计算等统计功能。(7)收支信息数据详情:详情可以查看订单更详细的信息。
售后模块web端对评论进行管理。(1)回复:当顾客在小程序端对房间或者菜品等进行评论,酒店负责人可以通过web端对顾客评论进行回复。(2)分页查询售后信息,酒店负责人可以使用评价等级、时间等进行查询可以查看对应数据列表。(3)统计与分析:显示酒店的好评率,以及最近最新的五条好评和差评。(4)评论详情:打开对应评论可以查看更多评论信息。
顾客管理模块web端对顾客数据进行管理。(1)分页查询顾客:酒店负责人可以根据手机号,名字,等信息对顾客进行查询。(2)顾客信息详情,点击顾客详情,可以查看顾客在酒店的消费记录,以及对顾客的消费等级查看,评论记录等。
餐饮模块web端,对菜品进行管理。(1)添加菜品:酒店负责人添加上传1张或多张图片作为菜品图片,菜品图片是必填字段,菜名对于该酒店不能重复,菜品数量必须大于1,菜品简介,建议填写,方便顾客了解菜品,完成添加后,系统会生成一个菜品编号,系统生成菜品编号唯一。(2)修改菜品信息:对已完成添加的菜品进行修改数据操作,对顾客已经下单的菜品只能添加菜品的数量,其他数据无法修改。(3)菜品详情:菜品详情功能可以查看菜品的相关数据,以及该菜品的下单记录和对应的评价等信息。(4) 删除菜品:菜品必须保证顾客已经收到菜品,菜品如果存在派送中,制作中等状态无法进行删除菜品。(5)分页查询菜品:酒店负责人输入菜名名字进行模糊匹配,日期等条件进行查询。(6)菜品制作列表:当顾客在小程序端在酒店菜单列表进行下单后会生成一条记录,菜品状态分为:未完成和完成两种状态。类别显示优先显示未完成的。(7)菜品状态修改:当菜品交给顾客手中时将菜品状态修改为完成。
房间管理模块web端,房间管理模块是整个酒店管理系统最重要的功能,当然其难道也是最高的,房间管理模块主要是对该酒店已有的房间进行管理,可以对酒店房间进行预订,这个模块主要是房间管理和预订管理那个主业务组成。(1)添加房间:添加房间时需要保证房间编号唯一,需要上传房间图片方便小程序端顾客进行查看酒店房间信息。添加房间需要将房间的大小,房间提供的服务,比如接机服务,早餐免费,是否有吹风机,是否有电视,房间类型是大床房还是情侣房,标间,等类型房间,房间地址也是必填,需要展示该房间几楼的具体位置方便顾客查找。(2)修改房间:房间无预订信息,可以对数据进行操作。(3)房间报修:是房间状态,房间因为第三方原因导致房间无法预订。房间在没有预订的情况下开启,如果顾客已经预订,需要通知顾客取消预订,然后才能进行报修操作。比如:酒店房间设备有损毁,在顾客预订之前无法进行修复,需要通知顾客进行取消预订,当房间报修状态切换成功后,顾客无法在小程序端查询到对应的房间。(4)删除房间:当房间处于空闲状态时,对房间进行删除。(5)分页查询房间:酒店管理者输入房间号,楼层,等参数进行查询。(6)批量导入:酒店房间数量过多,酒店管理者可以按照导入模板填写数据,导入系统,系统会把数据正常的数据导入成功,错误数据导入失败,并且表明每一条数据错误的原因方便酒店负责人对数据进行修改,修改完成后进行二次导入。(7)房间预订管理列表:当顾客在小程序端进行预订操作,会生成一条记录,记录列表按照时间倒序排序。预订管理列表支持顾客名字查询,手机号查询等相关数据查询列表。(8)房间预订管理详情:当酒店负责人打开对应的预订记录,可以查看记录同随行人员,顾客对房间的评价。(9)添加随行人员:有可能出现多人居住一个房间的情况,系统可以对随行人员数据进行登记。
系统管理模块web端,考虑到不同酒店对于节假日或特殊日期的折扣不一样,可以在web端系统管理模块进行折扣配置,折扣配置可以很好地解决了,酒店使用者不用一个一个点击房间修改价格。
酒店管理模块,(1)添加酒店:系统管理人员按照要求填写酒店信息,比如地址,电话,营业执照等信息。(2)修改酒店:系统管理人员修改已经填写的数据。(3)删除酒店:酒店账号名下产品酒店没有预订,菜品没有在制作中,派送中等状态可以删除。(4)酒店详情:系统管理人员可以查看酒店的详细信息。(5)酒店绑定:酒店绑定主要用户酒店负责人登录系统,系统负责人输入酒店用户登录系统的手机号,被绑定的手机会收到一条短信,酒店负责人输入验证码,系统会随机生成密码,当系统管理员点击确认,酒店负责人的账号密码也确定了,账号密码可以修改,考虑到安全因素,建议不要修改系统生成的密码,系统生成的密码需要经过弱口令测试后生成的密码。酒店管理模块,只有系统管理员才能操作,如果酒店负责人想修改酒店信息,可以联系运维人员对数据进行修改。
用户小程序端,用户打开小程序,一共有三个页面,第一个页面可以选择酒店就行预订服务,第二个页面叫做我的预定可以查看对应的酒店,最后一个页面叫我的,主要实现顾客相关信息查看。(1)查询地址列表:小程序获取到定位地址交给服务端查询酒店列表,按照地址距离倒序排序,顾客也可以根据好评率,平均价格,距离,位置进行筛选排序。(2)酒店详情:顾客打开对应酒店,可以获取酒店的基本介绍,和对应的房间,顾客可以对房间类型,房间大小,房间是否有窗,时间等条件进行筛选。(3)房间预定:顾客在酒店详情列表中的房间列表选择进行预订,预订可以根据天,月,季度,半年,年等时间段进行预订,如果选择的时间段已经被其他顾客预订则无法预订,预订完成后支付完成成功后生成一条订单记录如果是当天进入酒店菜单界面。(4)酒店菜单管理界面:顾客在菜单管理界面选择对应的菜品,进行支付,支付完成后生成订单,并在管理台生成一条菜品制作记录,方便酒店负责人通知相关人员完成菜品制作以及派送等。(5)我的页面中我的订单:可以查看我的订单,菜品不允许退款,酒店房间在没有入住的情况,没有到约定的预定的时间可以直接退款,如果已经到了约定的时间,需按照酒店规定退还对应金额。(6)我的信息:可以查看我的会员等级,会员等级由系统管理在字典中配置实现。每次消费获取对应的经验值,按照规则计算成对应的会员等级。
(1)SpringCloudAlibaba:Spring Cloud Alibaba的主要目标是简化微服务开发和运维,提高系统的可扩展性、高可用性和容错能力。通过使用Spring Cloud Alibaba,开发者可以更轻松地构建、部署和管理微服务应用,同时享受到阿里巴巴提供的一系列强大功能。
(2)Nacos :是阿里开发的一款服务中心和配置中心,是现在Java微服务开发必不可少的中间件[9]。
(3)Mybatis-plus:是一个Mybatis的增强工具,是一种ORM框架,可以更好地使用Java编程语言操作数据库的数据。是一款目前很流行的框架。
(4)EasyExcel:是一个用于读写Excel的开源的Java库,可以帮助我们实现Excel文件的导入和导出操作[10]。
(5)Hutool: 是一个小而全的Java工具类库,可以帮助我们减少很多代码的编写。
(6)Sa-Token:这是最近一段时间比较火的安全框架,主要用于系统的登录方面的权限控制,也是保证数据安全的要求。
(7)MySQL:是一个关系型数据库管理系统,MySQL数据库上手难道较低。
(8)VUE:前端流行框架,是由中国人发明的一种前端框架可以更好地开发前端样式。
(9)Element:一个Vue.js的UI组件库,它为开发者提供了丰富的可重用组件,使得开发者可以快速构建出美观、高效的用户界面。前端开发人员不用过多关注ui组件的编写。
(10)Redis:是目前最流行的缓存数据库,也是一种非关系型数据库常常用于热点数据的存储,可以减少直接访问数据库的访问量。
(1)IntelliJ IDEA:是一款优秀的Java后端开发工具。IntelliJ IDEA提供了对Java语言的全面支持,包括智能代码补全、代码分析、实时错误检查等功能,帮助开发者提高编程效率和代码质量。
(2)WebStorm:一款由JetBrains公司开发的前端开发工具,支持HTML、CSS、JavaScript等多种语言和框架,提供了丰富的插件和模板。
(3)HBuilder:一款由DCloud公司开发的前端开发工具,支持HTML、CSS、JavaScript等多种语言和框架,提供了丰富的插件和模板。
(4)微信开发助手:是微信官方提供一款开发小程序开发工具,可以帮助开发者快速开发、调试和发布小程序。它提供了丰富的功能,包括代码编辑、调试、预览、上传代码等。
酒店管理系统是一个复杂的软件系统,需要合理的系统结构来支持其功能和性能需求。以下是一个简单的Java酒店管理系统的系统结构划分系统采用MVC架构模式。MVC(Model-View-Controller)是一种常用的软件架构模式,用于组织和管理应用程序的代码,每个部分有不同的职责。
模型(Model)负责表示应用程序的数据和业务逻辑。它包含了数据结构、数据库交互、数据验证和处理业务规则的逻辑。模型通常是应用程序的核心部分,负责处理数据的读取、存储和更新。
视图(View)是用户界面的可视部分,负责显示数据给用户。视图通常是与用户交互的窗口、页面或UI元素,如网页、手机应用的界面等。视图不包含业务逻辑,它们仅仅负责将数据可视化并向用户展示。
控制器(Controller)是模型和视图之间的中介,负责协调用户的输入和应用程序的响应。控制器接收用户的请求,处理请求并更新模型和视图。它通常包含了路由、请求处理、业务逻辑的调用等。
MVC架构的优势包括:MVC将应用程序分为三个部分,每个部分具有不同的职责,使代码更易于理解、维护和扩展。由于各部分分离,修改一个部分不会影响其他部分,因此更容易进行单元测试和维护。MVC可以用于各种类型的应用程序,包括Web应用、桌面应用和移动应用。MVC的结构使团队成员可以专注于不同的部分,提高开发效率。
系统模块由员工管理模块,收支管理模块,售后模块,顾客管理模块,餐饮模块,房间管理模块,系统模块组成,员工管理模块需要地表:员工表记录员工相关数据。收支管理模块:订单表记录所有收入或者支出数据,退款表,记录一条对应订单的退款记录。售后模块需要记录顾客的评论记录,需要一张评论表。餐饮模块:需要一张菜品表,记录菜品相关数据。菜品制作表,记录菜品制作的进度。房间管理模块:房间表,记录酒店房间对应的位置已经相关信息,预约表:记录房间的预订信息。系统模块,一般由角色表,用户表,菜单表,字典表,角色用户关联表组成。酒店负责人与用户表进行关联表用于绑定web登录账号记录。
基于JAVA的酒店管理系统是一个全面的管理工具,旨在满足酒店业务的各个方面的需求。在本论文中,我们对该系统进行了设计、实施、测试和性能评估,并总结了以下关键方面的发现:
系统采用了模块化架构,使得不同功能模块能够相对独立地运作。这种设计提高了系统的可维护性和可扩展性,同时也提供了灵活性,以适应不断变化的酒店需求。
JAVA编程语言的跨平台性使系统能够在不同操作系统上无缝运行,而采用HTML、CSS和JavaScript的前端界面设计确保了系统在各种现代浏览器上的兼容性。这为用户提供了更大的自由度。
系统经过全面的性能测试,能够在高负载情况下保持稳定性,并提供良好的响应时间。这是确保系统能够应对酒店业务快节奏和高需求的关键因素之一。
系统采取了多层次的安全措施,包括身份验证、访问控制、数据加密和漏洞扫描,以确保客户和酒店数据的安全性和隐私保护。
通过以上对系统的分析,系统需要实现的功能已经基本确定,数据库设计方面我们需要保证其性能。字段名需要按照驼峰命名法。代码编写需要对层级进行解耦,方法需要添加适当的注释,帮助后期运维人员对代码问题进行修改。在系统部署方面建议使用云部署方案。
前面我们已经对需求进行分析了,下面我们需要对代码进行初步设计,不同公司不一样,有的公司使用时序图对系统进行分析,也有公司采用伪代码进行编写。Java后端开发人员根据原型图分析画图,时序图绘画是后端程序员对业务进行分析,时序图的绘画有助于程序员对业务理解。也可以帮助程序员在编写代码实现对程序的解耦,性能优化,技术是否能实现。编写完成后需交给项目经理或者小组长进行检查,确认后端程序员的理解业务与顾客要求是一样的。时序图的绘画需要表明每一个图的业务核心逻辑,关键判断,方便后期在业务需要扩展,可以快速上手。时序图中的方法名必须符合开发标准如图4-1所示。
图4-1?账本复制业务时序图
聚合根开是法常说的entity和BO,DTO,request,四种,entity对应数据库的表字段,设计,如果字段需要多次查询,建议在对应字段加上数据库索引,达到提高查询速度的效果。BO是entity和DTO或者request处理数据的中间层,BO禁止直接返回给前端。DTO,是接口响应的数据类。Request是数据请求参数。聚合根字段名设计需要符合开发标准,聚合根设计是代码解耦的基础。在设计聚合根的时候一定要观察存在公共部分,需要对公共部分进行分离,使用继承的方式,可以使代码更加简洁。聚合根设计部分设计图如图4-2所示。
图4- 2 聚合根部分设计
4.3 API文档设计
现在开发是前后端分离的开发模式,有些企业采用后端开发完接口,前端再根据接口文档进行调整。我们先编写API文档,后端将编写好的API文档交给前端,前端根据API文档进行mock测试,如果测试合格,请求参数和响应体也就确定了,mock测试合格,前端后端开始变成业务逻辑。在业务编程过程中不建议对API文档进行修改,如果需要修改,需要告诉小组长,小组长根据你的问题进行分析,是否需要执行。如图4-3所示api文档。
4.4 代码编写
在编写过程中需要对关键点进行注释,方法上,控制器(Controller)不允许编写任何业务,在service层编写代码,代码编写建议对代码解耦,拿订阅房间接口,举例,第一个方法我们需要判断,顾客输入的入住时间和退房时间,是未来时间,不是已经发生的时间,我们还需要判断这个房间这个时间段还否其他人预订,我们还需要判断房间是否能够正常使用。顾客填写的信息是否符合业务需求。下图是部分代码4-4所示。
图4-4?部分代码
在本论文中,我们深入探讨了基于JAVA的酒店管理系统的设计和实施,旨在提供一种全面的管理解决方案,以满足酒店业务的多样化需求。通过对系统的设计、技术选择、模块化架构、性能优化、安全性和隐私保护等方面的详细讨论,我们得出了以下结论和观点:
本系统的优点在于其跨平台性、模块化架构、多用户和多角色支持、性能优化和安全性措施。这些特性使系统成为一个灵活、高效和安全的管理工具,有助于提高酒店运营效率,增强客户满意度,提升酒店竞争力。
在系统设计和实施过程中,我们面临了一些挑战,包括技术限制、学习曲线、第三方依赖和集成复杂性。然而,这些挑战通过仔细地计划、测试和不断改进都可以克服。
本论文的研究和实施不仅为基于JAVA的酒店管理系统提供了有价值的经验和洞察,还为酒店行业提供了一种强大的工具,以适应不断变化的市场需求。随着技术的不断发展,我们期待着系统的持续改进和发展,以满足未来的挑战和机会。
最后,我要感谢所有参与本论文研究和实施的人员,他们的辛勤工作和贡献使得这个系统成为可能。同时,我也期待着本论文的研究能够为酒店管理系统领域的进一步研究和发展提供有益的参考和启发。
谢谢大家的关注和支持!