基于JSP和MySQL的酒店管理系统
1 开发背景
1.1 系统开发背景与意义
近年来随着生活水平的提高,人们会利用假期到全国各地旅游与消费,这促进了酒店业进入了一个快速发展的轨道。随着旅游业的发展,在每个城市中,当地的酒店业就像是一个城市的名片,也是一个小型社会,酒店服务的好坏关系到城市的形象与发展。尤其随着中国成功地加入世界贸易组织后,国内酒店业的发展必须与国际酒店进行接轨,这也是酒店管理人员必须面对与考虑的问题,要实现与国际酒店的接轨,则必须要加强酒店内部管理问题,提高酒店的服务水平,提高酒店的工作效率,增强市场竞争力,为了更好实现酒店客房的管理与经营,酒店客房管理信息系统的信息化、合理化已成为酒店经营者的一种必然的选择。酒店客房管理是整个酒店管理的一个非常重要的环节,随着计算机技术与互联网技术的不断发展与成熟,信息化管理客房成为酒店管理的一种非常重要的手段。同时也是提高酒店客房管理工作效率与经济效益的一种先进的管理模式。信息化管理酒店具有优越性与高效性,因此分析与开发酒店客房管理系统便得到酒店经营者的青睐和重视。
1.2 研究内容
酒店管理系统可以依据系统特点在服务器中进行部署,使得通过互联网查看服务器上的管理系统,可以方便地实时查询酒店客房入住情况、客房信息、当前房间状态等信息。
研究的内容主要包括以下方面:
该系统的开发主要包括后台数据库的建立、连接和维护以及前台网络页面的开发两大方面。由于Java的跨平台性、安全性等诸多优势,本论文采用Jsp+SSM+MySql的技术途径和规范全局设计开发流程,在Eclipse的开发环境下设计、编写酒店管理系统。
该系统主要模块有登录、房间管理、住宿管理、财务管理、旅客管理等五大功能模块,客房工作人员可以进行旅客信息登记、入住登记、客房盘点、旅客管理、员工管理、费用查询与统计、客房入住情况查询等详细信息。
1.3 文档的组织结构
文档的组织结果安排如下:
-
第一章绪论介绍了系统开发的背景与意义,对主要研究内容进行了说明,对文档的组织结构进行了阐述
-
第二章主要讨论了系统的需求以及实现相关功能的关键技术和方法
-
第三章对系统进行了业务建设与设计,对系统的用户角色和功能需求作了初步设计
-
第四章主要对系统相关实现作了更详细的阐述,阐述了系统开发过程中所设计的代码、接口等
-
第五章性能测试与分析
-
第六章主要阐述了对系统的总结和展望
-
最后为致谢与参考文献
2 系统需求分析
2.1 系统需求分析
需求是软件开发的基础,也是研发团队进行系统开发的凭据。有资料指出在软件开发周期中,如果软件项目越新颖、所涉及的应用领域越偏僻,需求分析所占用的时间可以达到整个开发周期的一半以上,而如果是迭代式的开发模型,需求时间也不应该少于1/3。可见,软件需求的重要性不言而喻。然而在软件开发中,需求不明确,客户的参与度不高,沟通不及时,获取客户的信息不完整;无法理解某些领域的技术指标和概念;客户想法的多变性都会造成需求的变更,而一旦变更就会对软件的开发进度和整体结构产生影响,甚至是灾害性的重新设计。
需求分析通过对收集到的需求资料进行分析,深层次的说明需求所表达的含义,介绍软件需要开发的功能和特性,描述软件要提供的接口或者和其它软件交互的方式,确定其它的非功能性需求。所以,需求分析是确定软件需要完成的内容,而不是如何完成这些功能要求。
2.2 可行性分析
2.2.1 经济可行性
本课题要求实现一个酒店管理系统,系统本身并不复杂,实现起来相对比较容易。由于Java在Web开发上的优势,本系统的开发周期并不需要太长,这样对成本的要求并不是太高。
本系统基于B/S模式:在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
传统的酒店客房管理大部分是由人工手工操作,这需要大量的人力、精力和物力。而采用计算机辅助的客房管理系统进行管理,则在人力、精力和物力等方面可以大大降低,开发计算机酒店客房管理系统只需一些设备费用与开发费用。而随着现代企业管理信息化的不断发展,大部分员工都有计算机,因此系统开发的硬件投入成本不大,主要费用是软件开发与维护费用。如果酒店客房管理系统投入使用,则可以从物力、人力、精力方面得全面的降低成本开销。除此之外,信息管理系统还有两个重要的作用:第一,利用酒店客房管理系统,可以对客房的信息进行时时存储、更新,提高客房信息的准确性、时效性,避免因信息更新不及时而导致经济上的损失;第二,通过系统,可以进行在线时时统计经营情况,如客源信息、消费账目等,有利于客房管理者及时了解与统计酒店客房的经营信息,并为下一步决策提供依据。
通过信息管理系统可以有效提高数据存储的准确性和更新数据的实时性,减少了由于数据不准确造成的业务损失。信息管理系统提供了科学的统计工具,使客房管理的负责人或酒店管理者能实时掌握客房入住的数据,做到优化酒店资源配置和及时调速整客房经营策略,真正做到酒店客房的信息化、科学化管理。
因此,以计算机技术开发的酒店客房管理系统对酒店客房进行管理,可以极大的降低酒店的经营成本,而对于中小型酒店,一般都可承担系统开发的费用。
2.2.2 技术可行性
本系统基于Jsp+SSM+Tomcat+MySQL,并采用B/S模式,由于JSP、SSM功能强大,而Tomcat和MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、SSM、Tomcat和MySQL是开发轻平台的最佳组合从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
开发本系统所需的软件系统都可免费获得,软件所依赖的相关组件都为开源软件并可以免费引用。
所以从技术角度开发酒店管理系统也是完全可行的。
2.3 功能分析
-
登录功能 :系统提供登录功能,管理员输入用户名和密码,可以登录酒店管理系统
-
房间管理功能 :管理员可以对酒店的房间进行管理,可以添加、查看、修改和删除酒店的房间信息
-
住宿管理功能 :管理员可以对酒店的住宿信息进行管理,可以添加、查看、修改和删除酒店的住宿信息
-
财务管理功能 :管理员可以查看酒店的财务统计信息
-
旅客管理功能 :管理员可以对住宿酒店的旅客信息进行管理,可以添加、查看、修改和删除旅客的信息
2.4 技术分析
大部分用过程语言比如ASP,PHP开发出来的WEB应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不直接,因而很难体现出业务模型的样子或者模型的重要性。产品设计弹性力度很小,很难满足用户的变化性需求。而MVC模式要求对应分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好的体现。一旦模型发生改变也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
酒店管理系统采用SSM(Spring MVC+Spring+Mybatis)框架开发,是标准的MVC模式,将整个系统划分为View层,Controller层,Service层,DAO层四层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。如图2-1所示:
3 系统设计
3.1 系统概述
酒店管理系统功能划分为以下几大模块,分别是登录、房间管理、住宿管理、财务管理和旅客管理功能模块。
酒店管理系统采用JAVA的三层架构开发,发布版本的运行环境包括:
- 客户端
- 操作系统:Win7
-
浏览器:谷歌浏览器
-
服务器端
- 操作系统:windows server 2003
-
应用服务器:Tomcat
-
数据库服务器端
- 操作系统:windows server 2003
- 数据库系统:MYSQL5.1
3.2 系统功能
系统功能模块
3.3 数据库整体设计
计算机化的管理信息系统是一个以大量数据资源为基础并以此为中心而建立起来的应用系统。其目的是为一个组织中各个部门和各个管理层次提供必要的管理信息和决策数据,由于涉及到应用领域中一定的深度和广度,因而必然需要接触大量的不同类型的数据。对这些数据的合理组织和有效的存储时管理信息系统开发中一项至关重要的工作。
数据库(DataBase),是按照数据结构来组织、存储和管理数据的仓库,是用于查询大量数据的存储区域。使用数据库可以减少数据的冗余度,大大的节省数据的存储空间,实现数据资源充分共享等等功能。
本系统中一共有八张数据表,分别为管理员表(如表3-1所示),旅客表(如表3-2所示),房间表(如表3-3所示),商品表(如表3-4所示),预定登记表(如表3-5所示),住宿登记表(如表3-6所示),住宿登记明细表(如表3-7所示),消费明细表(如表3-8所示)。
管理员表(tb_user)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 管理员ID |
userName | varchar(20) | N | Y | 账号 |
password | varchar(20) | N | Y | 密码 |
旅客表(tb_account)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 旅客ID |
papersID | int(11) | N | Y | 证件ID |
educationDegreeID | int(11) | N | Y | 证件ID |
genderID | int(11) | N | Y | 性别ID |
passengerLevelID | int(11) | N | Y | 旅客级别ID |
nationID | int(11) | N | Y | 民族ID |
name | varchar(20) | N | Y | 姓名 |
papersNumber | varchar(30) | N | Y | 证件号码 |
birthDate | varchar(30) | N | Y | 出生日期 |
papersValidity | varchar(50) | N | Y | 证件有效期 |
profession | varchar(20) | N | Y | 职业 |
contactPhoneNumber | varchar(20) | N | Y | 联系电话 |
remarks | varchar(100) | N | Y | 备注 |
房间表(tb_room)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 房间ID |
guestRoomLevelID | int(11) | N | N | 客房等级ID |
roomStateID | int(11) | N | N | 房态ID |
roomNumber | varchar(10) | N | N | 房间号 |
roomAmount | varchar(10) | N | N | 床位数 |
standardPriceDay | decimal(8,2) | N | Y | 标准房价/天 |
standardPrice | decimal(8,2) | N | Y | 标准房价/小时 |
maxDuration | varchar(10) | N | Y | 时长限制(小时) |
firstDuration | varchar(10) | N | Y | 首段时长(小时) |
firstPrice | decimal(8,2) | N | Y | 首段价格 |
商品表(tb_menu)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 商品ID |
commodityTypeID | int(11) | N | Y | 商品类别ID |
uOMID | int(11) | N | Y | 计量单位ID |
commodityName | varchar(50) | N | Y | 商品名称 |
salePrice | decimal(8,2) | N | Y | 销售价格 |
预定登记表(tb_checkin)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 预定ID |
roomID | int(11) | N | Y | 房间ID |
predetermineTargetID | int(11) | N | Y | 预定对象ID |
passengerID | int(11) | N | Y | 旅客ID |
payWayID | int(11) | N | Y | 支付方式ID |
predetermineStateID | int(11) | N | Y | 预定状态ID |
arriveTime | timestamp | N | Y | 抵达时间 |
deposit | decimal(8,2) | N | Y | 押金 |
predetermineDay | varchar(10) | N | Y | 预定天数 |
remind | int(11) | N | N | 到时提示 |
住宿登记表(tb_authority)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 住宿登记ID |
predetermineID | int(11) | N | Y | 预定ID |
rentOutTypeID | int(11) | N | Y | 出租方式ID |
roomID | int(11) | N | Y | 房间ID |
payWayID | int(11) | N | Y | 结账方式ID |
billUnitID | int(11) | N | Y | 结账单位ID |
passengerTypeID | int(11) | N | Y | 旅客类别ID |
receiveTargetID | int(11) | N | Y | 接待对象ID |
deputyID | int(11) | N | Y | 副ID |
isBillID | int(11) | N | Y | 结账否 |
registerTime | timestamp | N | Y | 登记时间 |
stayNumber | varchar(20) | N | Y | 住店天数/小时 |
sumConst | decimal(8,2) | N | Y | 总费用 |
ChangingRoomNumber | varchar(10) | N | Y | 换房次数 |
changRoomMoney | decimal(8,2) | N | Y | 换房费 |
remarks | varchar(200) | N | Y | 备注 |
payTime | timestamp | N | Y | 结账时间 |
changRoomTime | timestamp | N | Y | 换房时间 |
remind | int(11) | N | N | 提醒结账 |
住宿登记明细表(tb_item_param)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 住宿登记明细id |
stayRegisterID | int(11) | N | Y | 住宿登记id |
passengerID | int(11) | N | Y | 旅客id |
消费明细表(tb_item_param_item)表结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 消费明细ID |
stayRegisterID | int(11) | N | Y | 住宿登记ID |
commodityID | int(11) | N | Y | 商品ID |
consumptionNumber | varchar(10) | N | Y | 消费数量 |
consumptionMoney | decimal(8,2) | N | Y | 消费金额 |
consumptionTime | timestamp | N | Y | 消费时间 |
4 系统实现
4.1 系统开发规划
酒店管理系统采用JAVA标准分层的基于组件模型设计。将处理过程拆分到不同的层级、不同服务、不同应用服务器中分别处理,使服务器资源得到更好的利用,解决网络传输时高并发的问题。
酒店管理系统采用经典的三层结构,面向对象的JAVA语言和MYSQL数据库存储数据。三层框架包括了界面层、逻辑层和数据层。
-
表现层 :是系统数据来源和UI部分,承担用户操作与逻辑层之间的交互。在本层中实现前台页面的信息显示。后台登录和基本信息的管理操作。用户通过界面操作和业务逻辑层传输数据
-
逻辑层 :是整个系统的核心,它与这个系统的业务紧密相关
-
数据层 :其功能主要是负责数据库的访问。简单的说就是实现对数据表的Select, Insert, Update, Delete的操作。数据库的设计是在这一套开发系统中十分重要的,好的数据库建立可以让其更快的完成项目。整个数据库的创建是酒店管理系统开发和创立的核心技术,概括的说,就是根据用户的需求创立起满足用户的需要的数据库。数据库的整体设计是在软件开发是其最主要的问题
4.2 开发语言简介
4.2.1 JSP语言
JSP本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
4.2.2 MYSQL数据库
酒店管理系统使用MYSQL平台,MYSQL相比其它数据库软件有独特的优越性,可视化的数据库创建平台,自动生成数据库关系图,视图的可视化编辑,这些特性都为程序员带来了很大便捷。MYSQL数据库和JAVA配合较为紧密,选用MYSQL数据库,无须再编写驱动或者下载驱动。ADO.NET提供了所有操作MYSQL数据库的方法。而MYSQL数据库是相对比较成熟和完善的,适合酒店管理系统的要求。
4.3 开发页面简介
4.3.1 用户登录页面
登录界面如图4-1所示,如果用户不存在则点击注册去进行注册,注册界面如图4-2所示:
在登录页面输入用户名、密码和验证码后,点击提交,跳转到登陆的controller层中,在controller中会对用户名和密码进行判断,以下为登陆的关键代码。
java
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Map<String,String> loginAct(Account account,String vcode,HttpServletRequest request){
Map<String,String> retMap = new HashMap<String, String>();
if(account == null){
retMap.put("type", "error");
retMap.put("msg", "请填写正确的用户信息!");
return retMap;
}
if(StringUtils.isEmpty(account.getName())){
retMap.put("type", "error");
retMap.put("msg", "用户名不能为空!");
return retMap;
}
if(StringUtils.isEmpty(account.getPassword())){
retMap.put("type", "error");
retMap.put("msg", "密码不能为空!");
return retMap;
}
if(StringUtils.isEmpty(vcode)){
retMap.put("type", "error");
retMap.put("msg", "验证码不能为空!");
return retMap;
}
Object attribute = request.getSession().getAttribute("accountLoginCpacha");
if(attribute == null){
retMap.put("type", "error");
retMap.put("msg", "验证码过期,请刷新!");
return retMap;
}
if(!vcode.equalsIgnoreCase(attribute.toString())){
retMap.put("type", "error");
retMap.put("msg", "验证码错误!");
return retMap;
}
Account findByName = accountService.findByName(account.getName());
if(findByName == null){
retMap.put("type", "error");
retMap.put("msg", "用户名不存在!");
return retMap;
}
if(!account.getPassword().equals(findByName.getPassword())){
retMap.put("type", "error");
retMap.put("msg", "密码错误!");
return retMap;
}
if(findByName.getStatus() == -1){
retMap.put("type", "error");
retMap.put("msg", "该用户已被禁用,请联系管理员!");
return retMap;
}
request.getSession().setAttribute("account", findByName);
request.getSession().setAttribute("accountLoginCpacha", null);
retMap.put("type", "success");
retMap.put("msg", "登录成功!");
return retMap;
}
在注册页面输入用户名和密码、确认密码、手机号码后,点击提交跳转到注册的controller层中,在controller中会对注册的内容进行判断,以下为注册的关键代码。
java
@RequestMapping(value="/reg",method=RequestMethod.POST)
@ResponseBody
public Map<String,String> regAct(Account account){
Map<String,String> retMap = new HashMap<String, String>();
if(account == null){
retMap.put("type", "error");
retMap.put("msg", "请填写正确的用户信息!");
return retMap;
}
if(StringUtils.isEmpty(account.getName())){
retMap.put("type", "error");
retMap.put("msg", "用户名不能为空!");
return retMap;
}
if(StringUtils.isEmpty(account.getPassword())){
retMap.put("type", "error");
retMap.put("msg", "密码不能为空!");
return retMap;
}
if(StringUtils.isEmpty(account.getMobile())){
retMap.put("type", "error");
retMap.put("msg", "手机号不能为空!");
return retMap;
}
if(isExist(account.getName())){
retMap.put("type", "error");
retMap.put("msg", "该用户名已经存在!");
return retMap;
}
if(accountService.add(account) <= 0){
retMap.put("type", "error");
retMap.put("msg", "注册失败,请联系管理员!");
return retMap;
}
retMap.put("type", "success");
retMap.put("msg", "注册成功!");
return retMap;
}
4.3.2 首页
本界面是酒店管理系统的首页设计,其功能主要具体如图4-3所示。
会员可以进行登录、注册、预定酒店房间、搜索酒店等等功能,以下为html关键代码。
```html
参考文献
- 用JSP技术开发基于WEB的房地产网络管理信息系统(大连理工大学·齐鲲鹏)
- 基于J2EE的酒店管理系统的设计与实现(电子科技大学·王雪鹏)
- 旅游管理系统的设计与实现(东北大学·王宇慧)
- 基于SSH框架的连锁酒店客房管理系统的研究与实现(吉林大学·李敏琳)
- 宾馆信息管理系统的分析设计与实现(电子科技大学·阎骏)
- 酒店资源管理预订系统的设计与实现(南京大学·朱世杰)
- 基于ASP.NET的酒店管理系统的设计与实现(电子科技大学·李艳)
- 北京世豪国际酒店管理系统设计与实现(北京工业大学·左瑶)
- 基于web酒店客房预定系统的设计与实现(电子科技大学·陈立卫)
- 云麓山庄酒店管理系统设计与实现(电子科技大学·郑可)
- 基于JSP的中小型酒店管理系统的设计与实现(江西财经大学·杨达宇)
- 基于WEB的中小型商务酒店信息管理系统设计与实现(北京工业大学·宋伟威)
- 基于ASP.NET MVC3酒店管理系统的设计与实现(电子科技大学·周伟)
- 酒店客房信息管理系统(山东大学·张敏)
- 酒店资源管理预订系统的设计与实现(南京大学·朱世杰)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码驿站 ,原文地址:https://m.bishedaima.com/yuanma/35231.html