基于SSM框架和MySQL的酒店管理系统的设计与实现

攻城狮0829

发布日期: 2020-09-28 10:19:16 浏览量: 195
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

近年来,我国经济迅猛发展,人们的生活水平日益提高,老百姓能够更好地前往全国各地消费与旅游,这也促使酒店业蓬勃发展。然而酒店如何抓住这一机遇,关键的因素是提高自身的管理能力。自十九世纪40年代计算机的诞生,随着计算机硬件与软件技术的快速发展与成熟,加上现有计算机网络技术的支持与管理,酒店管理人员清楚地看到了利用计算机软件管理酒店的便利性与高效性,借助计算机的辅助管理不仅可以提高酒店的管理水平、提升酒店的经营效率,而且还可以降低酒店管理成本,给酒店的业务发展带来新的活力。

本文基于SSM框架的酒店管理系统在分析设计时遵循软件工程的思想,文中详细阐述了系统需求分析、系统设计、数据库设计、系统实现以及系统测试五方面。系统运用Spring和Mybatis两大框架技术的整合进行系统的开发,采用了B/S体系结构和免费、小巧、易用的MySql作为数据库服务器,服务器则选择了开源的Tomcat。系统实现了酒店管理所需的基本功能,包括管理员登录、房间管理、住宿管理、财务管理和旅客管理等功能。

系统界面友好,简单易用,易于维护且具有良好的可扩展性,大大简化了传统的酒店管理业务流程,提高了酒店客房管理的效率,优化了酒店管理,为酒店带来了更大的经营效益。

关键词:酒店管理系统;SSM框架;MySql;B/S

ABSTRACT

In recent years, China’s economy has developed rapidly, people’s living standards have been increasing, and the people have been able to better travel and travel throughout the country, which has also prompted the hotel industry to flourish. However, the key factor in how hotels seize this opportunity is to improve their management capabilities. Since the birth of computers in the 1940s, with the rapid development and maturity of computer hardware and software technology, coupled with the support and management of existing computer network technologies, hotel managers have clearly seen the convenience of using computer software to manage hotels. With high efficiency, computer-assisted management can not only improve the management level of the hotel, improve the operation efficiency of the hotel, but also reduce the hotel management cost and bring new vitality to the hotel’s business development.

The hotel management system based on SSM framework follows the idea of software engineering in analysis and design. The paper elaborates five aspects of system requirements analysis, system design, database design, system implementation and system testing. The system uses the integration of Spring and Mybatis framework technology to develop the system. It uses the B/S architecture and free, small and easy-to-use MySql as the database server. The server chooses the open source Tomcat. The system implements the basic functions required for hotel management, including administrator login, room management, accommodation management, financial management and passenger management.

The system is user-friendly, easy to use, easy to maintain and has good scalability. It greatly simplifies the traditional hotel management business process, improves the efficiency of hotel room management, optimizes hotel management, and brings greater management to the hotel. benefit.

Keywords: hotel management system; SSM framework; MySql; B/S

第一章 绪论

1.1 课题背景、目的及意义

1.1.1 课题背景

近年来随着生活水平的提高,人们会利用假期到全国各地旅游与消费,这促进了酒店业进入了一个快速发展的轨道[1]。随着旅游业的发展,在每个城市中,当地的酒店业就像是一个城市的名片,也是一个小型社会,酒店服务的好坏关系到城市的形象与发展。尤其随着中国成功地加入世界贸易组织后,国内酒店业的发展必须与国际酒店进行接轨,这也是酒店管理人员必须面对与考虑的问题,要实现与国际酒店的接轨,则必须要加强酒店内部管理问题,提高酒店的服务水平,提高酒店的工作效率,增强市场竞争力,为了更好实现酒店客房的管理与经营,酒店客房管理信息系统的信息化、合理化已成为酒店经营者的一种必然的选择[2]。

面对当代酒店快速度发展的好时代,对于酒店经营者既是机遇也是挑战,酒店如何在经济发展的大潮中抓住机遇,赢得竞争,取得长胜不败之地[3]。在竞争日趋剧烈的竞争年代,如果保持常态,是必失败,对于酒店经营者是重生或涅槃是一个刻不容缓需要考虑且解决的问题。而在信息时代快速爆炸与传播的时代,酒店可谓是迎来了春天,可以利用信息化手段提高酒店的自身发展与竞争[4]。酒店经营者可以利用酒店客房信息管理系统,对酒店客房管理实现信息化、简洁化、科学化与便捷化;实现对酒店客房管理的正确性、实时性与合理性。利用酒店客房管理系统,可以避免酒店客房订单遗漏、宾客冒充会员、员工私吞房费或私自售卖商品等给酒店造成的损失。同时利用信息化客房管理软件,可以让客房管理者时实把握入住信息,并对入住宾客信息进行分析,找到更佳的经营信息与决策,因此,在这种背景与切实需求下,酒店客房管理信息系统设计与开发也就运用而生[5]。

设计与开发的酒店客房管理系统应该结合酒店的需求,管理系统能够满足大部分酒店的功能与需求,不仅适合于高端星级酒店客房管理,而且也适合于中小型酒店客房管理。管理系统应突出:界面简洁、容易操作、功能齐全、权限控制严格、便捷高效;在运行过程中应做到:稳定、安全、强大等性能[7]。本次设计与开发的酒店客房管理系统针对中小型酒店客房管理,并结合实例酒店进行需求分析与设计实现的。

1.1.2 课题目的和意义

本课题的目的是使用Jsp+SSM+MySql技术开发一个酒店管理系统,为中小型酒店提供一个便捷高效的在线网络酒店管理系统。

酒店客房管理是整个酒店管理的一个非常重要的环节,随着计算机技术与互联网技术的不断发展与成熟,信息化管理客房成为酒店管理的一种非常重要的手段。同时也是提高酒店客房管理工作效率与经济效益的一种先进的管理模式。信息化管理酒店具有优越性与高效性,因此分析与开发酒店客房管理系统便得到酒店经营者的青睐和重视。在酒店客房管理系统中,客房工作人员可以进行旅客信息登记、入住登记、客房盘点、旅客管理、员工管理、费用查询与统计、客房入住情况查询等,通过酒店客房管理系统,使酒店客房管理流程更趋于规范化、信息化和科学化。

酒店管理系统可以依据系统特点在服务器中进行部署,使得通过互联网查看服务器上的管理系统,可以方便地实时查询酒店客房入住情况、客房信息、当前房间状态等。而且酒店经营者或管理者可以对客房收入费用进行统计与分析,分析当前酒店客房经营情况,便于统筹规划、调整措施等。因此,采用计算机系统管理酒店客房,可以改进传统酒店客房中人工管理的不足,如纸质登记不便管理、人工计算易出错、人工登记易遗漏等;也可以大大降低管理酒店客房的工作人员的工作量,降低员工成本;提高酒店管理水平与效率,增加酒店经营效益和提高酒店竞争力。

1.2 国内外研究现状

1.2.1 国内的研究现状

在国内,酒店客房管理系统软件起步较国外要晚些,我国最早在上世纪八十年代酒店最先投入使用计算机管理软件,随着不断引用国外先进地酒店客房管理技术与管理理念,国内的酒店信息化管理软件也得到了快速发展,例如北京中软好泰CSHIS管理系统、广州万迅千里马饭店管理系统等在国内都很具有影响力,从而也促进了专门从事酒店信息化管理软件开发的公司的产生[11]。

尤其到了2012年,随着我国旅游业的蓬勃发展,国家旅游总局对酒店制定了新的评定标准,统一规定凡是达到三星级酒店标准的饭店必须使用酒店管理系统软件,这些要求进一进促进了计算机技术在酒店管理中的作用。此时酒店管理系统软件如雨后春笋般的在酒店管理开花结果,对于经济较发达地区即使是三星级以下酒店也开始使用了计算机管理软件。此时全国各城市的三星级酒店70%以上都使用了信息化管理系统。我国专门从事酒店管理软件开发的管理系统自上世纪九十年代至本世纪初取得了迅猛的发展,自主研究开发的酒店管理系统现已在全国各地的万家以上的五星级酒店投入使用,但因我国对酒店管理软件研究起步较晚,相对国外管理技术和管理理念上还存在一些差距,所以很大程度上我国的高端星级酒店仍采用国外的先进的管理系统软件,但随我国成功加入国家世界贸易组织,酒店经营也与国际酒店慢慢接轨,这种差距正在慢慢缩少,以后国内的高端的星级酒店采用国内开发的酒店客房管理软件的比例也将大幅度的提高[12]。下面较详细介绍国内用较多且较著名的酒店管房管理系统软件。

千里马酒店管理系统

该系统的最初版本由广东劳业电脑公司于1993年发布,该版本为DOS版。第二版于五年之后发布,同年香港万达电脑公司收购了广东劳业电脑公司。

北京华仪系统工程有限公司的酒店管理系统

该公司成立于1987年,是我国首家专门致力于研制酒店管理信息系统的软件公司。早在1979年,该公司便为北京前门酒店开发了一个基于BASIC语言的单机版酒店管理信息系统[12],该系统具备酒店日常业务的一般管理功能,还具备查询功能。截至目前,北京华仪已推出了三个版本。第一版为DOS版,基于BASIC语言,运行于Novell平台之上。第二版为CHIMA系统,同样运行于Novell平台,采用ACCESS数据库,客户端使用操纵系统Windows。第三版为HY2000系统,采用SQL Server数据库,基于VB、VC语言,客户端使用操作系统Windowds NT系列。

北京泰能计算机系统公司的酒店管理系统

北京泰能成立于1993年,公司全称为北京泰能计算机系统公司。该公司是国内最早使用Windows操作系统开发酒店管理信息系统的公司。最初版本于1994年推出,使用了Paradox数据库管理系统。当前版本,使用了具有强大图片处理能力的Delphi开发平台与C/S体系架构,数据库采用了非常流行的SQL Server大型关系数据库。

1.2.2 国外的研究现状

在国外,酒店客房管理系统早在上世纪七十年代就开始发展起来,而且发展速度也较迅速。不到十年的功夫,即上世纪八十年代初就已经有较多著名的酒店在应用客房管理系统,例如 HIS、EECO、Fidelio 这些酒店管理系统,在功能方面比较全面,在技术上比较成熟,且运行的模式比较规范与稳定。具体来讲,在国外,酒店客房管理系统最早是在欧美国家的酒店最先使用。其主要表现在酒店的前台用计算机操作各项业务,例如,宾客入住预订、客房登记、宾客信息管理、入住查询、结账等业务操作都是通过计算机系统操作;在后台,主要表现在数据库的维护和审核操作等,酒店基本上实现了计算机信息化管理[10]。下面较详细介绍国外用较多且较著名的酒店管房管理系统软件。

EECO 酒店客房管理系统

EECO是Electronic Engineering CO.的简称,它是由美国加州电子工公司 EECO旗下的子公司易可电脑公司研究开发设计的。其于上世纪六十年代末发起来的,被公认为全球做得最好的一款饭店客房管理系统软件。该系统因由易可(ECI)公发研究开发的,也简称为 ECI 系统。早在上世纪七十年代,美国的喜来登饭店(SHERATON HOTEL)最早用 EECO 酒店客房管理系统。自从有了酒店客房管理系统软件后,在随后的三十多年里,酒店客房管理软件得到了黄金般的发展与应用。截止至 2012 年,全球就有两千多家酒店在使酒店客房管理软件。但目前,EECO 酒店客房管理系统已被市场淘汰,主要原因是该系统采用的是集中式和标准多用户系统,当然该系统也不断更新,目前它的第三代产品仍然有少部分酒店在使用。

Fidelio酒店客房管理系统

该酒店客房管理系统的全称为 Fidelio SoftwareGmbH,它最早于1987年 10月在德国慕尼黑发展起来。它的使用也相当广泛,其主要应用于全球高端的星级酒店,例如超五星级的酒店、豪华会所、休闲别墅等,在全球,迄今已有8000 多家酒店在使用 Fidelio酒店客房管理系统软件。在我国已有200多家酒店在用该管房管理系统软件,且绝大部分是高端的星级酒店。Fidelio酒店客房管理系统发展地相当迅速,自1987年10月起,经过短短四年的时间,就发展成为欧洲领先的酒店客房管理软件的产品;在随后的六年快速发展后,便成为了全球应用最大的酒店管理系统软件。后来美国的“Micro公司”把Fidelio进行了合并,且合并后得到了更大、更迅速的发展。在香港,有一款Fidelio 软件的另一版本的酒店管理系统于1991年应用而生,它就是Fidelio Software Limited,随后在 1995 年度 idelio 公司专门针对我国酒店市场,在香港成立了delio Software(China)Limited,自1996年北京注册成立了办事处后,在我国多个城市都注册成立了办事处。

HIS饭店系统

HIS 是英文 Hotel Information Systems 的简称,它于1977年在美国三藩市的资讯系统有限公司研究发展起来的。该饭店系统在全球也得到了广泛的应用,在最繁盛时期全球有 4000 多家酒店使用该系统软件,在我国的一些高端酒店也使用了该款饭店管理软件,例如北京中国大饭店、上海锦江、浙江世贸中心大饭店等。就香港而言,应用更为广泛,在最多的时候有香港的约75%的酒店在使用HIS饭店系统软件。该酒店管理软件自发展以来也不断地更新换代,它经历了 Paragon OnLine System、Innovation System、Lodging Touch System等升级换代,目前,随着我国酒店管理系统的快速发展与成熟,HIS饭店系统现在使用的酒店也就越来越少了。

第二章 相关技术介绍

本章主要对酒店管理系统所涉及的相关技术进行了介绍。

2.1 Javascript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。

Javascript语言与Java语言在语法上比较相似,但随着对Javascript的深入了解后你会发现,它们说到底是两种语言。

2.2 Ajax

Ajax全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax技术可以提供高度交互的Web应用,给予用户更丰富的页面浏览体验,Ajax功能的实现主要依靠XMLHttpRequest对象及其属性和方法、发送请求和处理响应。

2.3 MySQL

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。自从Oracle公司收购了MySQL后不久,就发行了MySQL的企业版(不再免费)。

2.4 SSM框架

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

2.4.1 Sping

Spring是一个开源框架,是于2003年兴起的一个轻量级的Java开发框架由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。但是,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2.4.2 SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。pring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

2.4.3 Mybatis

MyBatis是一个基于Java的持久层框架,mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

2.5 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中分离出来。

2.6 B/S模式

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,以不同的接入方式访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。

B/S模式最大的优点就是可以在任何地方进行操作而不需客户端安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护,系统的扩展非常容易。它具有分布性特点,可以随时随地进行业务处理。业务扩展简单方便,通过增加网页即可增加服务器功能。在维护方面,只需要改变网页,即可实现所有用户的同步更新,共享性较强。它实现了跨平台的系统集成服务,提供了异种机、异种网、异种应用服务的联机、联网、统一服务的开放性基础。而C/S模式开发是具有针对性的,对客户端有一定的要求,因此缺少通用性,移植性,业务变更不灵活,在维护、系统升级方面都有很大的麻烦而且兼容性较差,对于不同的开发工具,相互之间很难兼容,具有较大的局限性,新技术不便于使用。另外,它的开发成本较高,需要具有一定专业水准的技术人员才能完成。图2-1所示是B/S模式应用系统网络结构图:

2.7 EasyUI

jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。

2.8 系统开发平台及运行环境

2.8.1 系统开发平台

MyEclipse

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。

对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。

总之,MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。

Tomcat服务器

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat的环境主要有以下几方面技术优势:

  • Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包

  • 在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压

  • Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理html页面

  • Tomcat也可以与其它一些软件集成起来实现更多的功能

2.8.2 运行环境

  • 操作系统:Windows 7以上版本

  • 服务器软件:Tomcat7.0以上版本

  • 浏览器:IE、Fire Fox、Google Chrome

第三章 系统需求分析

需求分析就是详细分析要解决的问题,弄明白问题的要求,包括需要输入哪些数据,将要得到何种结果,最后期望输出什么等。总之,“需求分析”在软件工程当中就是确定要计算机“做什么”[7]。通过本章将了解到酒店管理系统的功能需求分析、非功能需求分析和可行性分析。

3.1 功能需求分析

本文所开发的是针对酒店的管理系统,本文所指的酒店仅指宾馆类型的酒店,即只提供住宿服务,不提供餐饮服务。该系统专注于提供高效的酒店管理,为酒店工作人员提供高效,标准的酒店管理流程,为酒店管理人员提供直观的酒店、客户信息展示。

本系统使用的目标人群主要针对酒店管理人员,酒店管理人员可以登录本系统,然后对酒店的客房进行管理、对酒店的住宿信息进行管理、对酒店的财务信息进行管理和对入住酒店的旅客进行管理。

综上,酒店管理系统既要实现对于客房、财务信息的管理,又要实现对于住宿和旅客信息的管理,还要兼顾到各个功能模块之间的协调合作,共同完成酒店管理系统的业务需求。下面采用UML用例模型对系统功能需求进行分析。

构建UML用例模型的第一步是确定模型中的使用者有哪些,确定使用者的原则有:谁是系统的维护者、谁是系统的参与者等。一般维护者处于系统内部,对系统有绝对的控制权;而参与者一般都位于系统的外部,处于系统的控制之外。

经过对酒店管理系统的分析,可以确定本系统用例模型只有一种,系统管理员。下面通过系统管理员用例来分析整个系统的功能需求。

系统管理员是酒店管理系统的使用者,系统主要提供一下几大功能供系统管理管理酒店:

  • 登录功能:系统提供登录功能,管理员输入用户名和密码,可以登录酒店管理系统

  • 房间管理功能:管理员可以对酒店的房间进行管理,可以添加、查看、修改和删除酒店的房间信息

  • 住宿管理功能:管理员可以对酒店的住宿信息进行管理,可以添加、查看、修改和删除酒店的住宿信息

  • 财务管理功能:管理员可以查看酒店的财务统计信息

  • 旅客管理功能:管理员可以对住宿酒店的旅客信息进行管理,可以添加、查看、修改和删除旅客的信息

图3-1为系统管理员用例图:

3.2 非功能需求分析

3.2.1 系统的实用性

系统的实用性是指系统设计开发的功能要尽量简单、实用,用户在使用系统过程中能够感受到系统的快捷、方便,不存在很多累赘和多余的操作或者功能。

3.2.2 系统的稳定性

系统稳定性差则预示着系统在用户使用时,可能会出现数据操作错误,页面响应时间过长或者干脆无法响应等,因此系统的稳定性是用户对系统评价的重要指标之一。系统应采用稳定的操作系统、数据库、中间件等,以保证系统的稳定性。

3.2.3 系统的开放性

系统的开放性是指系统具有良好的可兼容性,可以在Windows的大部分版本的操作系统中正常的运行,另外,也支持不同浏览器版本,能够在微软的IE浏览器、谷歌浏览器等常用的浏览器上正常运行。系统的易升级和管理也是系统开放性的表现。

3.2.4 系统的安全性

因为这是一个信息管理系统,必然储存庞大的客户和酒店信息,万一泄露出去,不仅是经济损失的问题,更是顾客的安全问题,一个防御性高的安全机制放在重中之重。酒店信息管理系统包括了酒店的财务数据、会员的具体信息、客户的房间信息与消费开支等等十分重要的数据,是绝对不能泄露的。而且,公安部门也有相关规定,对酒店的入住信息必须实名制,有严格的信息登记、身份认证和核查检验。不管是公安机关和硬性要求还是酒店本身的利益牵扯,一个强大的防御机制是必要的。以下几点也相当重要:第一在安全的环境下进行数据录入和数据处理工作;第二数据库必须要有至少双重备份;第三不同的用户角色的权限必须明确,特别是不能出现越权操作,系统日志对每一个操作都必须有详尽的记录;第四操作人员的密码不能随便存储,必须进行高级加密存储。

3.3 可行性分析

3.3.1 经济可行性

本课题要求实现一个酒店管理系统,系统本身并不复杂,实现起来相对比较容易。由于Java在Web开发上的优势,本系统的开发周期并不需要太长,这样对成本的要求并不是太高。

本系统基于B/S模式:在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

传统的酒店客房管理大部分是由人工手工操作,这需要大量的人力、精力和物力。而采用计算机辅助的客房管理系统进行管理,则在人力、精力和物力等方面可以大大降低,开发计算机酒店客房管理系统只需一些设备费用与开发费用。而随着现代企业管理信息化的不断发展,大部分员工都有计算机,因此系统开发的硬件投入成本不大,主要费用是软件开发与维护费用。如果酒店客房管理系统投入使用,则可以从物力、人力、精力方面得全面的降低成本开销。除此之外,信息管理系统还有两个重要的作用:第一,利用酒店客房管理系统,可以对客房的信息进行时时存储、更新,提高客房信息的准确性、时效性,避免因信息更新不及时而导致经济上的损失;第二,通过系统,可以进行在线时时统计经营情况,如客源信息、消费账目等,有利于客房管理者及时了解与统计酒店客房的经营信息,并为下一步决策提供依据。

通过信息管理系统可以有效提高数据存储的准确性和更新数据的实时性,减少了由于数据不准确造成的业务损失。信息管理系统提供了科学的统计工具,使客房管理的负责人或酒店管理者能实时掌握客房入住的数据,做到优化酒店资源配置和及时调速整客房经营策略,真正做到酒店客房的信息化、科学化管理。

因此,以计算机技术开发的酒店客房管理系统对酒店客房进行管理,可以极大的降低酒店的经营成本,而对于中小型酒店,一般都可承担系统开发的费用。

3.3.2 技术可行性

本系统基于Jsp+SSM+Tomcat+MySQL,并采用B/S模式,由于JSP、SSM功能强大,而Tomcat和MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、SSM、Tomcat和MySQL是开发轻平台的最佳组合从而说明本系统在技术方面可行。

硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。

第四章 系统设计

系统设计阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统“如何做”。在本章节中,主要是在系统分析的基础上对系统架构、系统功能模块、系统工作流程和系统数据库进行了设计。

4.1 系统架构

酒店管理系统采用SSM(Spring MVC+Spring+Mybatis)框架开发,是标准的MVC模式,将整个系统划分为View层,Controller层,Service层,DAO层四层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。整个系统架构运行流程如图4-1所示:

  • View层:与Controller层结合比较紧密,需要二者结合起来协同工发,主要负责前台Jsp页面的表示

  • Controller层:控制器,导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表

  • Service层:存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,它有接口还有接口的实现方法,在接口的实现方法中需要导入Dao层,Dao层是直接跟数据库打交道的,它也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法

  • Dao层:对数据库进行数据持久化操作,它的方法语句是直接针对数据库操作的,而service层是针对我们controller,也就是针对我们使用者。service的impl是把mapper和service进行整合的文件

4.2 系统功能模块设计

根据系统分析,将酒店管理系统功能划分为以下几大模块,分别是登录、房间管理、住宿管理、财务管理和旅客管理功能模块。系统功能模块结构如图4-2所示:

  • 登录:由于系统是给酒店管理人员使用的,所有登录功能仅限于管理员,管理员输入用户名和密码,即可登录进入系统

  • 房间管理:管理员进行房间管理,可以操作客房设置和商品设置两大功能。针对客房设置,可以添加客房信息(需要填写房间号、房间状态、床位数和房价等信息)、查看客房信息、修改客房信息和删除客房信息;针对商品设置,可以添加商品信息(需要填写商品名称、商品类别、计量单位和销售价格等信息)、查看商品信息、修改商品信息和删除商品信息

  • 住宿管理:管理员进行住宿管理,可以操作客房预定和住宿登记两大功能。针对客房预定,可以添加客房预定信息(需要填写预定对象、预定天数、押金、支付方式、抵达时间和预定房间等信息)、查看客房预定信息、修改客房预定信息和删除客房预定信息;针对住宿登记,可以添加住宿登记信息(根据预定信息需要填写住宿对象信息和安排房间等信息)、查看住宿登记信息、修改住宿登记信息和删除住宿登记信息

  • 财务管理:管理员进行财务管理,可以查询财务统计信息,以列表的形式显示每条财务记录,显示包括房间号、接待旅客对象类型、旅客姓名、登记时间、结账时间和总费用等信息

  • 旅客管理:管理员进行旅客管理,可以操作个人旅客管理和团队旅客管理两大功能。针对个人旅客管理,可以添加个人旅客信息(需要填写姓名、性别、民族、旅客级别证件类型、证件号码和联系电话等信息)、查看个人旅客信息、修改个人旅客信息和删除个人旅客信息;针对团队旅客管理,可以添加团队旅客信息(需要填写对象类型、团队名称、团队编号、负责人和联系电话等信息)、查看团队旅客信息、修改团队旅客信息和删除团队旅客信息

4.3 系统工作流程设计

由于该系统是针对酒店管理人员使用的,所以系统工作流程主要是管理员工工作流程,如图4-3所示:

管理员工作流程:管理员进入酒店管理系统,首先进行登录操作,输入用户名和密码,验证通过后登录系统主页。管理员可以进行房间管理(包括客房设置和商品设置)、住宿管理(包括客房预定和住宿登记)、财务管理(主要是财务统计)和旅客管理(包括个人旅客和团队旅客)。

4.4 数据库设计

数据库的设计关系到整个应用系统的运行效率,数据库设计得好,不仅有利于日常数据的维护更新,而且可以提高系统的运行效率,缩短数据查询响应周期,增加网站的流量[9]。合理的数据库设计可以使围绕它支持的Web页面的Java代码简单化,易于实现,并且可以提高数据存储的效率,保证数据的完整一致。酒店管理系统采用MySQL作为后台数据库开发工具。

4.4.1 数据库概念设计

概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。

信息世界中包含的基本概念有实体和联系。

实体 (entity)

客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。

联系 (relationship)

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)。

概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。根据数据流程分析,绘制酒店管理系统的全局E-R模型如图4-2所示。

根据系统分析的主要实体有:管理员、旅客、房间、商品、预定登记、住宿登记、住宿登记明细和消费明细。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):

管理员实体

旅客实体

房间实体

商品实体

预定登记实体

住宿登记实体

住宿登记明细实体

消费明细实体

4.4.2 数据库逻辑设计

数据库逻辑设计主要是把数据库概念设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。

本系统数据库名称为db_vote_system,数据库中包括:1)管理员表(users)2)旅客表(passenger)3)房间表(room)4)商品表(commodity)5)预定登记表(predetermine)6)住宿登记表(stayregister)7)住宿登记明细表(stayregisterdetails)8)消费明细表(consumptiondetails)。各表数据结构如下:

管理员表(users),存储管理员信息

字段名称 数据类型 主键 是否空 说明
id int(11) Y N 管理员ID
userName varchar(20) N Y 账号
password varchar(20) N Y 密码

旅客表(passenger),存储旅客信息

字段名称 数据类型 主键 是否空 说明
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 备注

房间表(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 首段价格

商品表(commodity),存储商品信息

字段名称 数据类型 主键 是否空 说明
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 销售价格

预定登记表(predetermine),存储预定登记信息

字段名称 数据类型 主键 是否空 说明
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 到时提示

住宿登记表(stayregister),存储住宿登记信息

字段名称 数据类型 主键 是否空 说明
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 提醒结账

住宿登记明细表(stayregisterdetails),存储住宿登记明细信息

字段名称 数据类型 主键 是否空 说明
id int(11) Y N 住宿登记明细id
stayRegisterID int(11) N Y 住宿登记id
passengerID int(11) N Y 旅客id

消费明细表(predetermine),存储消费明细信息

字段名称 数据类型 主键 是否空 说明
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 消费时间

第五章 酒店管理系统实现

本章节介绍了酒店管理系统的实现,首先对关键代码进行了分析,然后通过运行系统后截图的方式,介绍了管理员登录、房间管理、住宿管理、财务管理和旅客管理等功能的实现效果。

5.1 关键代码分析

本系统使用springMVC,sping-mvc.xml是配置springMVC的,而springMVC是整个系统最重要的一部分。它主要是用来配置action的,也就是请求处理之类的。

sping-mvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:mvc="http://www.springframework.org/schema/mvc"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.1.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
  13. <!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
  14. <context:component-scan base-package="com.gx.web">
  15. <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  16. </context:component-scan>
  17. <!-- 日期转换 必须放在<mvc:annotation-driven />前面 -->
  18. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
  19. <mvc:annotation-driven >
  20. <mvc:message-converters>
  21. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  22. <property name="supportedMediaTypes">
  23. <list>
  24. <value>application/json;charset=UTF-8</value>
  25. <value>application/x-www-form-urlencoded;charset=UTF-8</value>
  26. </list>
  27. </property>
  28. </bean>
  29. </mvc:message-converters>
  30. </mvc:annotation-driven
  31. <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
  32. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
  33. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
  34. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
  35. <property name="prefix" value="/WEB-INF/jsp"></property>
  36. <property name="suffix" value=".jsp"></property>
  37. </bean>
  38. </beans>

数据库操作配置文件:spring-mybatis.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xmlns:aop="http://www.springframework.org/schema/aop"
  8. xmlns:tx="http://www.springframework.org/schema/tx"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
  12. http://www.springframework.org/schema/aop
  13. http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
  14. http://www.springframework.org/schema/context
  15. http://www.springframework.org/schema/context/spring-context-3.1.xsd
  16. http://www.springframework.org/schema/beans
  17. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
  18. <!-- properties配置文件 -->
  19. <bean id="dbProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  20. <!-- 是否忽略不可解析的 -->
  21. <property name="ignoreUnresolvablePlaceholders" value="true" />
  22. <property name="locations">
  23. <list>
  24. <value>classpath:jdbc.properties</value>
  25. </list>
  26. </property>
  27. </bean>
  28. <!-- ========================================配置数据源========================================= -->
  29. <!-- 配置数据源,使用的是alibaba的Druid(德鲁伊)数据源 -->
  30. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  31. <property name="url" value="${url}" />
  32. <property name="username" value="${username}" />
  33. <property name="password" value="${password}" />
  34. <!-- 初始化连接大小 -->
  35. <property name="initialSize" value="0" />
  36. <!-- 连接池最大使用连接数量 -->
  37. <property name="maxActive" value="20" />
  38. <!-- 连接池最大空闲 -->
  39. <property name="maxIdle" value="20" />
  40. <!-- 连接池最小空闲 -->
  41. <property name="minIdle" value="0" />
  42. <!-- 获取连接最大等待时间 -->
  43. <property name="maxWait" value="60000" />
  44. <property name="validationQuery" value="${validationQuery}" />
  45. <property name="testOnBorrow" value="false" />
  46. <property name="testOnReturn" value="false" />
  47. <property name="testWhileIdle" value="true" />
  48. <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  49. <property name="timeBetweenEvictionRunsMillis" value="60000" />
  50. <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  51. <property name="minEvictableIdleTimeMillis" value="25200000" />
  52. <!-- 打开removeAbandoned功能 -->
  53. <property name="removeAbandoned" value="true" />
  54. <!-- 1800秒,也就是30分钟 -->
  55. <property name="removeAbandonedTimeout" value="1800" />
  56. <!-- 关闭abanded连接时输出错误日志 -->
  57. <property name="logAbandoned" value="true" />
  58. <!-- 监控数据库 -->
  59. <!-- <property name="filters" value="stat" /> -->
  60. <property name="filters" value="mergeStat" />
  61. </bean>
  62. <!-- ========================================针对myBatis的配置项============================== -->
  63. <!-- 配置sqlSessionFactory -->
  64. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  65. <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
  66. <property name="dataSource" ref="dataSource" />
  67. <!-- 自动扫描Mybatis的Mapper.xml文件 -->
  68. <property name="mapperLocations" value="classpath:com/gx/mapping/*.xml" />
  69. </bean>
  70. <!-- 配置扫描器 -->
  71. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  72. <!-- 扫描com.gx.dao这个包以及它的子包下的所有映射接口类 -->
  73. <property name="basePackage" value="com.gx.dao" />
  74. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  75. </bean>
  76. <!-- 配置事务管理器 -->
  77. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  78. <property name="dataSource" ref="dataSource" />
  79. </bean>
  80. <!-- 拦截器方式配置事物 -->
  81. <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
  82. <tx:attributes>
  83. <tx:method name="add*" propagation="REQUIRED" />
  84. <tx:method name="append*" propagation="REQUIRED" />
  85. <tx:method name="insert*" propagation="REQUIRED" />
  86. <tx:method name="save*" propagation="REQUIRED" />
  87. <tx:method name="update*" propagation="REQUIRED" />
  88. <tx:method name="modify*" propagation="REQUIRED" />
  89. <tx:method name="edit*" propagation="REQUIRED" />
  90. <tx:method name="delete*" propagation="REQUIRED" />
  91. <tx:method name="remove*" propagation="REQUIRED" />
  92. <tx:method name="repair" propagation="REQUIRED" />
  93. <tx:method name="delAndRepair" propagation="REQUIRED" />
  94. <tx:method name="get*" propagation="SUPPORTS" />
  95. <tx:method name="find*" propagation="SUPPORTS" />
  96. <tx:method name="load*" propagation="SUPPORTS" />
  97. <tx:method name="search*" propagation="SUPPORTS" />
  98. <tx:method name="datagrid*" propagation="SUPPORTS" />
  99. <tx:method name="*" propagation="SUPPORTS" />
  100. </tx:attributes>
  101. </tx:advice>
  102. <aop:config>
  103. <aop:pointcut id="transactionPointcut" expression="execution(* com.gx.service..*Impl.*(..))" />
  104. <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
  105. </aop:config>
  106. <!-- 配置druid监控spring jdbc -->
  107. <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"></bean>
  108. <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
  109. <property name="patterns">
  110. <list>
  111. <value>com.gx.service.*</value>
  112. </list>
  113. </property>
  114. </bean>
  115. <aop:config>
  116. <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
  117. </aop:config>
  118. </beans>

系统首页前端jsp代码:main.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  4. <c:set value="${pageContext.request.contextPath}" scope="page" var="ctx"></c:set>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html lang="en">
  7. <head>
  8. <title>欢迎使用酒店管理系统</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <meta name="description" content="概述及统计" />
  11. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  12. <!--basic styles-->
  13. <link href="${ctx}/assets/css/bootstrap.min.css" rel="stylesheet" />
  14. <link href="${ctx}/assets/css/bootstrap-responsive.min.css" rel="stylesheet" />
  15. <link rel="stylesheet" href="${ctx}/assets/css/font-awesome.min.css" />
  16. <!--[if IE 7]>
  17. <link rel="stylesheet" href="${ctx}/assets/css/font-awesome-ie7.min.css" />
  18. <![endif]-->
  19. <!--page specific plugin styles-->
  20. <!--fonts-->
  21. <!--ace styles-->
  22. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  23. </head>
  24. <body>
  25. <div class="navbar">
  26. <div class="navbar-inner">
  27. <div class="container-fluid">
  28. <a href="#" class="brand">
  29. <small>
  30. <i class="icon-leaf"></i>
  31. 欢迎使用酒店管理系统
  32. </small>
  33. </a><!--/.brand-->
  34. </div><!--/.container-fluid-->
  35. </div><!--/.navbar-inner-->
  36. </div>
  37. <div class="main-container container-fluid">
  38. <a class="menu-toggler" id="menu-toggler" href="#">
  39. <span class="menu-text"></span>
  40. </a>
  41. <ul class="nav nav-list">
  42. <li>
  43. <a id="dateViewId" onclick="" class="dropdown-toggle">
  44. <i class="icon-dashboard"></i>
  45. <span class="menu-text">数据视图 </span>
  46. <b class="arrow icon-angle-down"></b>
  47. </a>
  48. <ul class="submenu">
  49. <li>
  50. <a id="yingYeJinEId" onclick="dateView()">
  51. <i class="icon-double-angle-right"></i>
  52. <span>营业金额</span>
  53. </a>
  54. </li>
  55. </ul>
  56. </li>
  57. <li>
  58. <a id="roomManageId" onclick="roomManage()" class="dropdown-toggle">
  59. <i class="icon-home"></i>
  60. <span class="menu-text">房间管理 </span>
  61. <b class="arrow icon-angle-down"></b>
  62. </a>
  63. <ul class="submenu">
  64. <li>
  65. <a id="roomSetId" onclick="roomSet()">
  66. <i class="icon-double-angle-right"></i>
  67. <span>客房设置</span>
  68. </a>
  69. </li>
  70. <li>
  71. <a id="commoditySetId" onclick="commoditySet()">
  72. <i class="icon-double-angle-right"></i>
  73. <span>商品设置</span>
  74. </a>
  75. </li>
  76. </ul>
  77. </li>
  78. <li>
  79. <a id="stayManageId" onclick="stayManage()" class="dropdown-toggle">
  80. <i class="icon-move"></i>
  81. <span class="menu-text">住宿管理 </span>
  82. <b class="arrow icon-angle-down"></b>
  83. </a>
  84. <ul class="submenu">
  85. <li>
  86. <a id="reservationsId" onclick="reservations()">
  87. <i class="icon-double-angle-right"></i>
  88. <span>客房预订</span>
  89. </a>
  90. </li>
  91. <li>
  92. <a id="personageId" onclick="personage()">
  93. <i class="icon-double-angle-right"></i>
  94. <span>住宿登记</span>
  95. </a>
  96. </li>
  97. <!-- <li>
  98. <a id="groupId" onclick="group()">
  99. <i class="icon-double-angle-right"></i>
  100. <span>团队住宿登记 </span>
  101. </a>
  102. </li> -->
  103. </ul>
  104. </li>
  105. <li>
  106. <a id="financeManageId" onclick="financeManage()" class="dropdown-toggle">
  107. <i class="icon-heart"></i>
  108. <span class="menu-text">财务管理 </span>
  109. <b class="arrow icon-angle-down"></b>
  110. </a>
  111. <ul class="submenu">
  112. <li>
  113. <a id="financeStatisticsId" onclick="financeStatistics()">
  114. <i class="icon-double-angle-right"></i>
  115. <span>财务统计 </span>
  116. </a>
  117. </li>
  118. </ul>
  119. </li>
  120. <li>
  121. <a id="passengerManageId" onclick="passengerManage()" class="dropdown-toggle">
  122. <i class="icon-user"></i>
  123. <span class="menu-text">旅客管理 </span
  124. <b class="arrow icon-angle-down"></b>
  125. </a>
  126. <ul class="submenu">
  127. <li>
  128. <a id="passengerInformationId" onclick="passengerInformation()" href="#">
  129. <i class="icon-double-angle-right"></i>
  130. <span>旅客信息 </span>
  131. </a>
  132. </li>
  133. <li>
  134. <a id="receiveTargetId" onclick="receiveTarget()" href="#">
  135. <i class="icon-double-angle-right"></i>
  136. <span>接待对象 </span>
  137. </a>
  138. </li>
  139. </ul>
  140. </li>
  141. </body>
  142. </html>

5.2 管理员登录

管理员进入登录页面,输入用户名和密码,点击登录按钮就能登录系统。

5.3 房间管理

管理员进行客房设置,可以搜索、增加、修改和删除客房信息,以下显示客房设置的主页面。

管理员进行商品设置,可以搜索、增加、修改和删除商品信息,以下为商品设置的主页面。

5.4 住宿管理

管理员进行住宿管理,可以搜索、增加、修改和删除住宿信息,以下为管理住宿信息的主页。

管理员新增客房预定信息,需要选择预定对象,然后选择客房。

管理员进行住宿登记,根据客房预定信息,选择并确认住宿信息。

管理员进行旅客信息登记,需要填写旅客的相关信息,包括姓名、性别、民族、职业和联系电话等信息。

管理员进行旅客信息登记的时候,可以根据之前登记过的旅客信息,直接选择旅客进行登记。

管理员进行旅客信息登记,填写相关信息后,点击保存即可。

完成旅客住宿信息登记后,管理员进行安排房间操作,以下为安排房间的主页。管理员需要填写登记时间、旅客类别、天数、支付方式等信息。

5.5 财务管理

管理员进行财务管理,以下为财务管理主页面,以列表方式显示每笔住宿业务,显示接待对象、登记时间、结账时间和总费用等信息。

5.6 旅客管理

管理员进行旅客管理,以下为个人旅客管理主页面,以列表形式显示个人旅客信息,显示包括姓名、性别、民族、证件类型、证件号码和联系电话等信息。

管理员进行旅客管理,以下为团队旅客管理主页面,以列表形式显示团队旅客信息,显示包括团队名称、团队编号、负责人、登记日期和联系电话等信息。

第六章 系统测试

6.1 测试的目的与目标

在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。

测试后的软件各模块基本功能可以顺利进行,尽可能的提高软件的健壮性。

6.2 测试方法

  • 从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试

  • 从是否执行程序的角度:静态测试和动态测试

  • 从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试

单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块(这里所说的程序模块在Java中一个模块就是一个方法),进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

集成测试 (组装测试、联合测试),通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:

  • 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失

  • 一个模块的功能是否会对另一个模块的功能产生不利的影响

  • 各个子功能组合起来,能否达到预期要求的父功能

  • 全局数据结构是否有问题

  • 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度

确认测试(Validation Testing),确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础

系统测试(System Testing),是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方

验收测试(Acceptance Testing),在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。

6.3 测试用例

由于功能模块较多,测试内容篇幅较长,所以在本论文中只介绍登入系统的测试用例,表6.1是本系统会员登入的测试表,从测试的结果来看与期望结果完全相同。

6.4 测试结论

把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术, 能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。

测试和排错常常被说成是一个阶段,实际上它们根本不是同一件事。简单地说,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,为设法打败它而进行的一整套确定的系统化的试验。

Edsger Dijkstra有一个非常有名的说法:测试能够说明程序中有错误,但却不能说明其中没有错误。他的希望是,程序可以通过某种构造过程正确地做出来,这样就不再会有错误了,因此测试也就不必要了。这确实是个美好生活的目标,但是,对今天的实际程序而言,这仍然还只是一个理想。所以应该集中精力讨论如何测试,如何才能够更快地发现程序错误,如何才可以使得工作更有成效、效率更高。

结论与展望

设计开发基于 Jsp+SSM+MySql的酒店管理系统是集业务管理与软件技术为一身的工作,只有在理解业务的基础上,才能对业务操作流程进行提炼优化,并通过软件设计与开发技术实现。本文设计的酒店管理系统界面友好、功能丰富、操作简单,能适应大部分环境下的酒店管理所需要的工作。本系统在设计采用了 J2EE 框架,设计上实现了高内聚、低耦合的要求,在设计上做到了可扩张和维护。本文在论文撰写、系统开发时对现有酒店管理系统做了深入的调研,并行性了需求分析和系统设计,最终实现了一个实用的酒店管理系统。

通过开发《酒店管理系统》,我较为全面的掌握了JAVA的基本知识和编程技巧,并在开发过程中我的JAVA开发能力得到了进一步的提高。如:更进一步的深入了解MVC设计模式,软件三层框架;SQL语言的使用。

在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每段代码心底都有数,有条不紊。当然也有些还需待继续深入地方如:控件的应用等。

参考文献

[1] 张孝祥,Java 就业培训教程(附盘),清华大学,(2007-07)

[2] 石志国,薛为民,董洁.JSP应用教程.北京:清华大学出版社.北京交通大学出版社,2004

[3] 李曙光.JSP开发实例完全剖析.北京:中国电力出版社,2006

[4] 杨易.JSP高级程序设计.人民邮电出版社,2006

[5] Vivek Chopra.JSP高级程序设计,机械工业出版社,2001

[6] 申吉红,廖学峰,余健.JSP课程设计案例精编.北京:清华大学出版社,2007

[7] 卢潇.软件工程.北京:清华大学出版社;北京交通大学出版社,2005

[8] 萨师煊,王姗.数据库系统概论.北京:高等教育出版社,2000

[9] 马运涛.Eclipse精要与高级开发技术.北京:电子工业出版社,2003

[10] PaulJPerrone etal,张志伟,谭郁松,张明杰.J2EE构建企业系统[M] .北京:清华大学出版社,2001

[11] Chuck Cavaness.Programming Jakarta Struts,2002

[12] Bruce Shive.Research Direction in Object-Oriented Programming,2002

[13] Miao H.K.McDermid J.A.andTony Ian,Proving the existence of the initial state in Z specification,Chinese Journal of Advanced Software Research,2003

[14] Apache Software.The Struts User’s Guide.http://Jakarta.Apache.org/struts.

上传的附件 cloud_download 基于SSM框架的酒店管理系统的设计与实现.zip ( 25.91mb, 3次下载 )
error_outline 下载需要15点积分

发送私信

47
文章数
12
评论数
最近文章
eject