1、大连理工大学网络教育学院毕业论文(设计)模板 网络教育学院本 科 生 毕 业 论 文(设 计)题 目:基于J2EE的酒店预订系统设计与开发学习中心: 天津财贸奥鹏学习中心12层 次: 专科起点本科 专 业: 网络工程 年 级: 2011年 秋季 学 号: 111236405861 学 生: 杨晓波 指导教师: 张福新 完成日期: 2013年8月7日 II基于J2EE的酒店预订系统设计与实现内容摘要论文针对酒店管理系统客房在位置上的分散性,逻辑上的集中性,以及客户的松散耦合等特殊性,服务多样性等;该系统采用面向对象软件建模方法,进行系统需求分析;提出了系统的总体设计方案,并采用自顶向下逐步求精的
2、软件设计方法,融入面向对象的分析手段和研究方法。在酒店管理系统的建立过程中,主要参照万维大酒店的服务流程,结合当前酒店工作人员的计算机操作能力,完成了系统的需求、设计和编码方案。本文首先结合需求调查对该系统的开发背景、开发目标、数据库设计等进行了简要阐述;其次对系统开发过程中所涉及到的架构知识、技术规范进行了说明,如Java EE标准、JSP技术、Spring框架、Hibernate框架以及AJAX技术等;最后对本系统中的三个核心模块客房设置模块、入住登记模块、结账模块的开发过程进行了详细分析和说明,并附带有部分源代码和演示效果图。在系统设计上,采用基于Java EE体系结构和B/S模式的We
3、b应用体系;采用Java作为开发工具,它具有简单性、平台无关性、分布式、可移植性、多线程等特性;采用高性能的免费数据库服务器MySQL作为后台数据库服务器。关键词:酒店管理系统;B/S 结构;Java目 录内容摘要I1 概述31.1 研究背景31.2 研究意义31.3 研究内容42 系统相关技术介绍52.1 B/S 结构52.2 Java EE 架构52.3 MVC 模式52.4 Ajax 技术62.5 Spring 技术62.6 Hibernate 技术63 系统需求分析83.1 总体业务分析83.2 用例分析93.3 功能分析164 系统的设计184.1 系统总体设计184.2 系统设计1
4、84.2.1 实体域模型设计194.2.2 DAO 模型设计194.2.3 过程域模型设计204.2.4 控制模型设计214.2.5 视图模型设计234.3 数据库分析与设计234.3.1 数据库分析234.3.2 数据库概念设计234.3.3 数据库逻辑结构设计285、系统的实现325.1 登陆模块的实现325.2 客户预定模块345.3 查询模块405.4 入住模块435.6 退房模块446 结论与展望49参考文献501 概述随着我国社会的不断发展,一些新兴的产业和经营管理类行业不断地发展壮大,对一些管理类产业的考验也越来越大。对于目前广泛存在的餐饮和酒店管理来说,传统的信息管理模式主要是
5、通过纸介质进行的,一些中小型酒店或宾馆信息的处理方面也主要以人工方式为主。本章描述系统开发的背景,意义和研究内容。1.1 研究背景随着计算机技术的发展,计算机管理系统已经深入到各个行业,其中宾馆酒店也正在寻求与之业务相适应的计算机管理的途径,进而实现管理的集中性、反应的快速性,使其经济效率得以提高、运行和管理成本降低。但是目前酒店管理软件一般都是为大型宾馆酒店而开发的,成本高、系统复杂,不适用于中小型酒店和新型的多功能的酒店,因而开发一套广泛适用于中小型宾馆酒店的管理系统就显得格外重要。综合计算机与互联网的开发技术来开发宾馆酒店管理系统,不仅可以使管理效率提高,而且还可以使其经济效率得以提高、
6、运行和管理成本降低、实现资源的共享。宾馆酒店管理系统正是针对上述需求开发的。该系统是一套全方位、可按模块进行高度集成的宾馆酒店管理系统,其功能全面,性能稳定,界面美观简洁,易于操作,解决了宾馆酒店的员工对于电脑操作普遍生疏的问题,同时也提高对宾馆酒店管理的效率。1.2 研究意义系统开发目的是通过使用当下主流的软件架构、UI框架、设计理念开发一套 B/S模式的、涵盖酒店全业务内容的、各个模块可以良好进行组织分离的、实用的、界面友好的酒店管理系统。开发 B/S酒店管理系统,符合计算机应用发展的客观形势。按照当前的计算机应用发展趋势,计算机管理应用系统正在从早期的 C/S 模式大规模步入 B/S模式
7、,并正在局部进入小客户端、大服务器的发展方向,因此,B/S 中小型宾馆酒店管理系统的开发实施是符合这样的一个客观现实,同时通过这一开发工作,也能为将来的多种客户端、多种数据交换的开发工作打下基础。开发B/S酒店管理系统,是酒店宾馆的实际需求。酒店宾馆一直在使用早期开发的 C/S 的系统,客户普遍有更为节省维护费用、升级现有的操作系统、信息共享更大化的实际意愿需求。开发 B/S酒店管理系统,会将最先进的酒店管理理念柔和到系统中,帮助酒店宾馆的管理方式更符合现代的酒店管理模式,提高客户的竞争力。开发 B/S酒店管理系统,能够提高酒店宾馆的效率,降低人力成本。1.3 国内外现状国外计算机技术起步较早
8、,上世纪中叶就使用计算机软件进行业务处理,1954年美国使就开始使用计算机软件进行工资单的处理9。我国计算机软件管理起步较晚,但是自改革开放之后我国的计算机管理应用有了较大的发展。随着改革开放的深入,国民经济收入提高,人们消费观念转变。特别是旅游业的快速发展,带动我国旅游相关产业升级转型。酒店客房作为旅游者休息起居的主要场所,为人们出行带来便利。目前相关的酒店客房服务,能为客户提供准确、及时的客房信息,是酒店客房服务的一个重要体现6。 市场上酒店客房相关服务产品有了极大的丰富。酒店客房管理系统的设计初衷,就是为客户管理信息提供完善、可靠、准确的信息,为酒店客房管理者提供更加直观化的操作平台。本
9、系统采用Struts2和Hibernate技术。用户在系统中进行客房预订,客房结算,会员信息管理,客房信息管理,以及相关日志记录查询等工作。1.4 研究内容本论文主要研究 B/S 模式下基于 JSP的酒店管理系统的设计与实现。论文集中分析了B/S模式酒店管理信息系统构建的技术基础、可行性,重点讨论了酒店管理信息系统具体模块的设计。论文在对酒店的业务与管理需求进行系统分析基础上,运用UML对系统进行建模,分别创建了具体功能模块的用例图和交互视图。在系统实现方面采用 RUP(统一过程)的流程进行开发。在论文撰写过程中从系统需求出发,设计与实现并重。设计部分突出了数据库表的设计和子系统模块的设计过程
10、;实现部分,比较详细的描述了 Hibernate、Spring 和 AJAX 等框架技术在酒店管理系统中的应用,并附有相关模块代码,方便对照研究。1.5主要内容结构及组织框架请在此处添加文字的章节和组织框架介绍。482 系统相关技术介绍本章对软件开发环境进行介绍外,对J2EE框架与结构不仅实现了编程语言开发、环境代码编译、过程组件的配置、应用程序的运行、调用的对象交互等各个层次上的功能,而且还为 Web 服务和普通的应用程序以及功能接口提供了一个兼容托管、安全、高效的运行环境。2.1 B/S 结构Browser/Server 结构是 Web 兴起后的一种网络结构模式,Web 浏览器是客户端最主
11、要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,浏览器通过 Web Server 同数据库进行数据交互。B/S 结构最大的优点就是可以在任何地方进行操作而不用安装专门的软件,只要有一台可以上网的电脑就能够使用,实现客户端零维护。系统的扩展也非常容易。B/S 结构的使用越来越多,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担,并增加了交互性,能进行局部实时刷新。2.2 Java EE 架构Sun 公司推出的 JavaEE 是一系列技术和标准的集合,JavaEE 试图通过构建一个新的架构来满
12、足互联网对性能、安全性、易用性、可用性、可扩充性、分布式的需要。JavaEE 提供了如下的技术来满足上述要求:Servlet/JSP 用来满足对网络请求进行处理的功能;JTA/JTS 用来提供事务服务和分布式事务管理功能;JMS/JDBC/WebSerivice/Mail/RMI/EJB 提供了交互支持,不同系统之间可以通过多种方式交互;JAAS 提供了对 Java 组建的安全保护功能;JPA 提供了对象关系映射,相对于其他映射工具来说,JPA 提供了最小的特性;JavaEEApplication Server 提供了集群、负载均衡、支持功能。JavaEE 还提供了其他的技术来满足企业应用,在
13、此就不一一列举了,下面仅介绍本系统用到的部分技术。2.3 MVC 模式MVC 的英文全称是 Model-View-Controller,即“模式-视图-控制器”。该模式的含义是不管是视图的改变还是模型的改变,或者控制器的改变,都会引起另外两个的改变,按照模型层、视图层、控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了设计开发过程。模型是指业务逻辑的处理和数据的存储。模型接受视图请求的数据,并返回最终的处理结果。视图层主要是用来展现用户所需要的数据,它是用户和系统进行交互的界面,一般可以采用 HTML 页面、XML、Applet 和 JSP 等技术。控制层就是一个中转站,它从用户那里接
14、受请求,将模型与视图匹配在一起,共同完成用户的请求。通过上面的解释,可以得出 MVC 的处理过程:首先用户通过视图层发出请求,接着控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器将处理后的数据传递给视图层,并通过视图层展现给用户。2.4 Ajax 技术Ajax 并不是一个新技术,它其实是整合了 XMLHttpRequest、JavaScript、DOM、CSS、XML 等众多技术的一个综合体。Ajax 主要是增强了用户体验。随着 Ajax的逐渐流行,很多的 Ajax 框架便应运而生了,比如 Ext、Prototype、DOJO、D
15、WR、GWT、Buffalo 等。方便了开发,本系统主要使用 Ext 进行 Ajax 开发。Ext 积累了众多的组件,有表格、表单、动态树、菜单、工具条、对话框等。2.5 Spring 技术Spring 提供了一个集成的框架,通过它可以解决一些常见的 JavaEE 问题。Spring 的核心基础是依赖反转控制器,他鼓励好的编程习惯,比如针对接口而不是类进行编程;它还提供了一个独特的数据访问抽象,可以很方便的和 Hibernate、JPA等进行整合;另外使用 Spring 可以选择使用编程式事务或者声明式事务处理,而且 Spring 还提供了一个强大的 MVC 框架。Spring 的核心是控制反
16、转,又称为依赖注入,其思想就是通常所说的“实现必须依赖抽象”,或者叫面向接口编程。除了控制反转,Spring 还提供了分发器的功能,以实现 MVC 中的控制层功能。2.6 Hibernate 技术Hibernate 是一个开放源代码的对象关系映射框架。Hibernate 目的就是在应用程序和数据库之间建立一种映射关系,通过这种映射关系的建立使得开发人员完全用 OO 的思想去设计业务逻辑,而数据的存储依然使用关系型数据库。Hibernate中持久化的状态有 3 中表现形式,分别是瞬时状态,持久化状态和托管状态。现在Hibernate在持久化类和数据库之间建立映射关系除了通过XML文件还可以支持A
17、nnotations.3 系统需求分析通过对系统的分析,制定出了如上本系统主要结构功能的设计,依靠此设计,制定除了本系统的实施方案,之后按照各个功能点完成详细设计,将每一个模块对应的参数定义详细的命名规范,设计好数据库,完成整个系统的开发。然后设计进行整个系统的性能测试,研究其是否具有较强的系统抗压能力。3.1 总体业务分析酒店管理系统是管理信息系统在酒店业务处理方面的应用。从总体上讲,客户要求该系统应具有操作人员识别模块,并且具备一般系统所具有的客房预订功能,客房状态更改功能,入住客人资料登记功能,客房信息设置功能,账单查询功能等。除这些基本功能外,客户要求该系统具备一定的统计能力,如对酒店
18、每月的营业额进行统计。另外,客户要求该系统升级维护方便,使用简单,容易上手操作,界面简单明了,所反映的信息直观等。掌握了客户对该系统的总体功能要求后,通过与客户的沟通,了解到系统更详细的需求用例。1、该酒店的客房有不同的档次,需要系统能够对客房进行分类管理,如增加某类客房的房间,删除某类型客房的房间,查找该类型客房的具体房间信息,更改房间类型。2、该酒店管理系统应具有操作人员识别模块,以区别每项业务是由哪位工作人员操作。即该系统应设置登录模块。3、为了方便对客房价格的设置,需要系统提供对不同类型的客房进行预定价格、预定折扣、计时最低价格等的设置功能。4、需要提供一个客房设置模块,用来设置酒店的
19、所有客房信息。在设置客房信息时,应该提供对不同房间实际价格、实际折扣的设置。5、特别重要的是能够了解到所有房间的当前状态以及是否可用,这样能够方便酒店对所有客房的当前状态进行及时管理,如对于已经退房的房间可以通知保洁员清洁房间,对于未入住的房间可以安排客人入住使用,对于已经入住的房间及时跟踪客人是否续住等。6、需要提供入住登记功能,并能够根据客户的入住时间、离店时间、客户资料、入住房间等信息进行查询。7、需要客房预定功能,能够处理客户的各种预定,如电话预定、总台面约、上预定或领导安排等等预定方式。8、需要提供一个入住客人信息管理功能,从而实现对酒店的客人信息的统一管理,如根据身份证号进行客户查
20、询,根据入住日期进行查询,更改客人的联系方式等。9、系统还要提供业务统计报表功能,能够对酒店一年中每月的住宿房间数进行统计,然后绘图显示。3.2 用例分析根据前期掌握的用户需求分析信息,在酒店管理系统中设置两种权限角色,分别是普通操作员和管理员。这两种角色所对应的用例图如下所示。图 3-1 普通操作员用例图对图 3-1 普通操作员用例图的分析可以看出。普通操作员只能使用前台系统,能够处理入住登记、退房结账、预定管理、客户管理、业务统计等操作。图 3-2 管理员用例图管理员是系统的管理者,拥有最高权限。管理员除了可以使用前台系统外,还可以使用系统的后台。通过后台可以对酒店的客房类型、客房、操作员
21、进行设置,管理员用例图如图3-2 所示。根据上述用例图,下面通过挑选该系统典型模块进行分析说明。1、登录模块系统会判断用户的用户名和密码是否正确。当判断用户是普通操作员时,用户仅能在前台界面操作,流程图如图3-3 操作员登陆业务流程图所示;当用户是管理员时,用户不仅能操作前台系统,还可以操作后台系统,流程图如图3-4 管理员登陆业务流程图所示。图3-3 操作员登陆业务流程图图3-4 管理员登陆业务流程图2、入住登记系统首先判断用户登陆的合法性,通过校验后的操作员或管理员系统前台首页,未通过登陆认证的人员返回登陆首页继续认证。进入前台首页的管理员或操作员点击进入登记信息模块,接下来填写入住客人的
22、个人信息如身份证号,姓名,电话等个人信息,并在所有客房中选择可以使用的客房进行登记。系统会对提交的客人信息如身份证号进行数据校验,并对选择的房间状态进行校验,如果选择的房间不是空闲房间或者身份证号不符,客户登记失败,并返回登记信息继续登记。如果校验通过,房间状态更改为正在使用,信息写入数据库,系统反馈登记成功。整个业务流程如图3-5 入住登记业务流程图所示。图3-5 入住登记业务流程图3、预定管理首先判断用户的合法性,通过校验后操作员或管理员可以进行预定业务的操作,业务流程如图3-6 所示。图3-6 预定业务流程图(1)预订管理用例图图3-7描述了前台预订人员在进行散客预订时可进行的操作,执行
23、者为前台工作人员,可实现的功能是“散客预订”和“散客预订查询”,其中用例“预订修改”、“预订取消”、“预订删除”、“预订恢复”都是用例“预订查询”的必需组成部分被使用。图3-7散客预订用例图(2)接待管理用例图图3-8描述了执行者“前台工作人员”在进行散客接待时所进行的相关操作及系统具备的功能。用例“散客入住”的必备功能应包括用例“客人信息”、“历史查询”、“黑名单查询”,扩展用例则包括用例“散客预订入住”、“协议公司客人入住”、“历史客人入住”、“会员入住”和“内部用房登记”。图3-8散客接待用例图4、客户信息管理首先进行身份认证,通过认证的操作员或管理员进入系统前台首页进行客人信息管理模块
24、进行业务操作。该模块提供了显示客户信息,根据查询条件查询客户信息,添加新的客户信息,修改已存在客户信息,删除已存在客户信息的功能。在删除或修改客户信息时,系统会首先进行数据校验,如校验客户身份证号是否正确,校验客户军官证号是否正确等。如果未通过校验则返回客人信息主界面,通过校验则将数据写入数据库,系统显示数据更新成功。整个客户信息管理业务的流程如图 3-9 客户信息管理业务流程图所示。图3-7 客户信息管理业务流程图5、业务统计首先判断用户的合法性,通过校验后操作员或管理员进入前台首页,点击进入业务统计模块,系统主界面显示该酒店全年酒店入住情况并通过柱状图显示。操作员可以通过刷新界面获得该图形
25、的更新。如果需要打印该统计图表,系统也提供了打印图表功能。整个业务流程如图3-10 酒店业务统计流程图所示。图3-10 酒店业务统计流程图6、客房类型设置系统首先对登录人员进行认证,只有管理员才能进入系统维护页面。而操作员虽然能进入前台首页,但无法进入后台页面,系统维护属于后台页面范围。接下来,管理员可以对客房类型进行管理,包括添加客房类型,删除选中的客房类型,更改客房类型,重新加载数据,保存数据的操作。客房类型设置可以改变的内容包括房间类别名称,床位数,预定价格,预定折扣,计时最低价,每小时计时价。这些内容更改后,属于该类别的所有房间的信息都会更改。当管理员点击保存数据后,数据被保存进数据库
26、。图3-11 客房类型设置业务流程图3.3 功能分析酒店管理系统分为后台和前台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置 3 个子模块。模块的具体功能如下:客房类型设置模块:该模块用来设置酒店房间的类型,包括新增客房类型,删除客房类型,编辑已有客房类型,编辑已有客房类型包括修改房间床位数,修改预定价格,修改预定折扣,修改计时最低价的功能。客房设置模块:该模块用来设置酒店房间信息,包括新增客房,删除客房,编辑房间号,编辑客房所在区域或楼层,编辑房间类型等功能。操作员设置模块:该模块用来管理酒店操作员信息,新增操作员,编辑已有操作员信息,删除操作员信息
27、等功能。系统前台供酒店所有工作人员使用,包括入住登记模块、结账模块、预定模块、客户管理模块以及业务统计模块。模块的具体功能如下:入住登记模块:该模块用来登记客户的入住信息,入住信息包括登记信息,客人信息和费用信息三部分。结账模块:该模块用来处理客户的退房信息,知道客人入住的房间号码就可以进行退房结账。预定模块:该模块用来处理客户的预定信息,除了可以新增预定,还可以对现有预定信息进行管理。客户管理模块:该模块用来管理客户的登记信息,包括新增客户信息,编辑已有客户信息,删除客户信息等功能。业务统计模块:该模块用来统计一定时间段内酒店客房的出租率,并且以图形报表形式显示。整个系统的功能模块如图3-1
28、2 系统功能模块图所示。图3-12 系统功能模块图4 系统的设计需求调研完成后,要与用户进行需求确认。接下来系统的设计工作就可以启动。系统的设计一般包括以下步骤:架构设计,系统设计,数据库设计。本章首先对该系统的架构设计、系统设计、数据库设计进行阐述,最后以该系统的两个核心模块为例,对系统的设计和编码工作进行详细分析说明。4.1 系统总体设计系统管理在本系统中,管理系统模块主要实现对酒店预定添加,修改,修改的管理;客房与用户信息的查询管理;入住管理;退房的管理。该模块中存在4个子模块,他们为平行结构,关系如下列图。客户预定模块查询信息模块入住模块退房模块 显所有客户信息退房登记入住预定入住查询
29、房间显示房间状态取消登记预定登记修改登记图 4-1 系统模块图4.2 系统设计企业级 Web 应用开发,一般都采用 MVC 架构,而 Spring 是一个很好的实现了 MVC 的框架,Hibernate 是当前最流行的持久层框架。因此,本系统采用 Spring与 Hibernate 相结合的方式作为系统的总体开发框架。另外,系统视图层主要采用JSP 技术,Ajax 技术作为视图层的补充。后台数据库使用 MySQL 数据库。系统设计阶段包括:实体域模型设计,DAO 模型设计,过程域模型设计,控制模型设计,视图模型设计。4.2.1 实体域模型设计根据需求调研可以分析出,该系统主要有以下实体域:客户
30、实体,包括客人编号,客人姓名,客人类型,客人证件类型,客人证件号码,国籍,住址,邮编,手机号码,性别,电子邮件地址等信息。客房实体,包括客房编号,客房所属区域,客房所属楼层,客房分机号码,客房状态,客房类型,实际折扣等信息。操作员实体,包括操作员类型,姓名,操作员用户名,操作员密码,操作员权限,手机号码,地址,邮编,创建时间等信息。客房类型实体,包括客房类型编号,客房类型名称,床位数,预定价格,预定折扣,计时每小时价格等信息。散客入住登记实体,包括入住登记信息编号,入住登记订单,入住房间,实际价格,已付押金,入住时间,离开时间,登记状态等信息。团体入住登记实体,包括入住登记信息编号,入住登记信
31、息列表,团队名称,人数,客人类型,客人证件类别,客人证件号码,登记状态,入住时间,预计离开时间,实际离开时间,已付押金,总费用,加床费,事由等信息。结账类型实体,包括客人编号,结账类型,应收金额,已付押金,续收金额,创建时间,操作员用户名,结账说明等信息。该系统共有 11 个实体,除了上述 7 个主要实体外,还包括基础信息实体,客户记录实体,预定信息实体和预定订单实体。4.2.2 DAO 模型设计有了实体域模型,还必须有 DAO 模型来操作这些实体。DAO 是数据访问接口的缩写。数据访问顾名思义就是与数据库打交道,数据访问层位于业务逻辑层与数据库资源中间。在 JavaEE 规范中认为,为了建立
32、一个健壮的应用系统,应该将所有对数据源的访问操作抽象封装在一个公共 API 中。在具体编码过程中,实际就是建立一个定义了程序中会用到的方法的接口,并且编写单独的类来实现这个接口,当需要与数据源进行交互时则使用它。针对每一个实体域模型,都有一个 DAO 模型与它对应。在本系统中,分别有11 个 DAO 接口类和实现类与实体域模型对应,这些接口类分别定义了操作相应实体类的方法。另外,还有一个公共接口类 GenericDAO,这个接口定义了一般的增删改查操作。DAO 接口类位于工程的 com.hotelmaster.dao 包中。DAO 的实现类定义在 com.hotelmaster.daoimpl
33、 包中。如图 4-4DAO 接口类与 DAO 实现类包图所示。4.2.3 过程域模型设计实体域模型和 DAO 模型是为了描述实体对象,以及对实体的增删改查操作。对于具体的业务逻辑或流程,采用过程域模型来设计。在本系统中通过创建一个公用业务逻辑层,来封装所有的业务逻辑操作。公用业务逻辑层同样包含两个组成部分,一个是业务逻辑层接口,用来声明所有的业务逻辑方法;一个是业务逻辑层实现类,用来实现所有的业务逻辑方法。业务逻辑的接口类位于工程的 com.hotelmaster.service 包中。业务逻辑的实现类位于工程的 com.hotelmaster.serviceimp 包中。如图 4-5 业务逻
34、辑接口类与业务逻辑实现类包图所示。图4-6 DAO 接口类与 DAO 实现类包图4.2.4 控制模型设计完成了系统的过程域模型设计后,还需要为系统添加业务控制器。系统通过该控制器来调用业务逻辑层的业务逻辑操作。本系统共创建了 9 个业务控制器,分别完成相应的控制功能。系统的业务控制器位于工程的 com.hotelmaster.action 包中。如图4-7 控制层包图所示。创建完业务控制器后,还需要在 Spring 的配置文件中配置相关业务的业务控制器,为其注入逻辑组件。将对后台管理模块和前台管理模块的控制模型结合代码进行详细说明。图4-7 业务逻辑接口类与业务逻辑实现类包图图4-8 控制层包
35、图4.2.5 视图模型设计视图层是与用户直接交互的一层。本系统使用 JSP 技术为每一个功能模块添加视图层。在该 JSP 页面中通过引入各个 JS 文件,实现各种功能。4.3 数据库分析与设计4.3.1 数据库分析通过前一节的分析,已经列出了本系统的实体,有客房类型实体、客房实体、客户实体、客户记录实体、操作员实体、入住登记实体、入住登记订单等共 11 个实体。本节为这些实体创建相应的数据库表。所有数据库表如图4-4系统数据库表图所示。图4-9系统数据库表图4.3.2 数据库概念设计根据本系统所要管理的信息,共设计规划出 11 个实体,分别对应图4-4中 11个数据库表。由于涉及到的数据库表比
36、较多,挑出其中 7 个具有代表性的数据库表进行分析。这 7 个表之所以具有代表性是因为它们涉及客房设置模块、入住登记模块,而这两个业务模块基本涵盖了酒店管理系统的功能。以下小节分别针对这 7 个表进行数据库概念设计。1.客户信息实体图4-10 客户信息 E-R 图对酒店管理系统而言,客户资料是非常重要的资源。通过创建客户信息实体,可以保存所有客户资料,方便查找和记录。客户信息实体 E-R 模型图如图4-6 所示。2. 客房类型信息实体图4-11 客房类型 E-R 图一个酒店的客房类型会有许多种,例如标准间、商务套间、豪华套房等。这就需要创建一个客房类型信息实体,用来记录酒店所有房间类型的信息。
37、客房类型信息 E-R 模型图如图4-8 所示。3.客房信息实体一个酒店会有多个客房,每个客房都有房间号、所属区域或楼层、房间类型、分机电话等独特信息。客房信息实体用来保存这些房间所属信息。客房信息 E-R图如图4-12所示。图4-12客房信息 E-R 图4. 操作员信息实体酒店管理系统可以被多种身份的人员使用,如前台收银员、前台服务员、酒店经理、系统管理员等。这就要创建一个操作员信息实体,用来记录所有操作人员信息。操作员信息 E-R 图如图4-13所示。图4-13操作员信息 E-R 图5. 入住登记信息实体客户入住酒店时,除了记录其个人信息外,还需要记录客户的入户时间、账单号、入住房间号、离开
38、时间等其他信息,以便结算时使用。这些信息都记录在入住登记信息实体中。入住登记信息 E-R 模型图如图4-14 所示。图4-14入住登记信息 E-R 图6. 团体入住登记信息实体图4-15团体入住登记信息 E-R 图前面的入住登记信息实体是能保存单个客户的入住登记信息。如果要处理团体客户入住的情况,就需要创建一个团体入住登记信息实体。通过该实体保存多个入住登记信息。团体入住登记信息 E-R 模型图如图4-13。7. 结账信息实体当客户需要对客房进行结账或者续费时,就用到了结账信息实体中存储的结账信息。结账信息 E-R 图如图4-16所示。图4-16 结账信息 E-R 图4.3.3 数据库逻辑结构
39、设计根据各实体模型图创建数据库的逻辑结构,数据库各表结构如下。1、客户信息表表4-1 客户信息表字段名数据类型是否主键描述GTIDVarchar是客人编号GTNAMEVarchar否姓名GTTYPEVarchar否类型GTCARDCTALOGVarchar否证件类别GTARDIDVarchar否证件号GTCOUNTRYVarchar否国籍GTADDRESSVarchar否地址GTZIPVarchar否邮编GTCOMPANYVarchar否公司GTMOBILEVarchar否电话GTGENDERVarchar否性别GTEMAILVarchar否邮件地址GTCREATETIMEDatatime否创
40、建时间2、客房类型信息表表4-2 客房类型信息表字段名数据类型是否主键描述RCIDVarchar是客房类型编号RCNAMEVarchar否客房类型名称RCBEDNUMERINT否床位数RCPREPRICEFloat否预定价格RCPREDISCONUTFloat否预定折扣RCHOURBASEPRICEFloat否计时最低价RCPERHOURPRICEFloat否计时每小时价3、客房信息表表4-3 客房信息表字段名数据类型是否主键描述RMIDVarchar是客房编号RMAREAVarchar否所属区域RMFLOORVarchar否楼层RMPRCTPRICEFloat否价格RMTELPHONEVar
41、char否电话RMSTATEInt否客房状态RMAVAILABLEInt否是够可用RMCATALOGVarchar否类型RMPICTUREVarchar否图片RMPRCTISCOUNTInt否折扣4、操作员信息表表4-4 操作员信息表字段名数据类型是否主键描述OPUSERNAMEVarchar是操作员用户名OPPASSWORDVarchar否操作员密码OPPRIVILEGEINT否操作员权限OPASSRESSVarchar否地址OPNAMEVarchar否姓名OPTELEPHONEVarchar否电话5、入住登记信息表表4-5 入住登记信息表字段名数据类型是否主键描述CIMIDVarchar是
42、入住登记信息编号CHECKINORDER_CIOIDVarchar否所属登记订单编号ROMM_RMIDfloat否入住房间编号CIMPRCTPRICEfloat否价格CIMDISOUNTfloat否折扣CIMINDATETIMEDatetime否进店时间CIMINDATETIMEDatetime否离店时间CIMSTATEVarchar否状态6、结账信息表表4-6 结账信息表字段名数据类型是否主键描述BMIDVarchar是结账编号BMCHECKINORDERIDVarchar否订单编号BMGUESTIDVarchar否客人编号BMTYPEVarchar否结账类型BMTOTALRATEVarch
43、ar否应收金额BMPAIDMONEYVarchar否已付订金BMRECEIVMONEYVarchar否续收金额BMCREATETIMEVarchar否创建时间BMOPERATORVarchar否操作员BMPAYMENTMODELVarchar否支付类型BMREMARKVarchar否结账说明5、系统的实现系统设计的核心是围绕数据库对信息进行加工处理,实施存取更新等各个方面的操作,同时访问数据库的 SQL 语句最最大限度上影响到了网站的性能,因此设计合理的数据库表,及数据库访问函数显得相当重要;与此同时网页中的代码,也在很大程度上影响着网站的性能,并决定了网站给客户的直观印象。在本节我将主要描述
44、用户登陆功能的实现。5.1 登陆模块的实现在本次系统中,用户登陆模块与普通应用系统的用户登陆是基本相同的。因此当一个用户登陆管理系统之后,管理员的操作流程如以下图所示。登陆界面输入用户名和密码 查询成功 否是登陆管理界面图5-1登陆操作流程用户认证是进入系统前的必要措施,登陆模块对系统的普通操作员和系统管理员进行了分类认证。登陆模块实现效果如图5-2 登陆界面所示。图5-2 登陆界面登陆模块主要思想为:当输入用户名和密码提交后到logincheck控制模块进行处理,当输入正确时转到jiemian.jsp;否则回到login.jsp页面重新输入,同时提醒登陆错误。Logincheck代码如下:request.setCharacterEncoding(utf-8);String username=request.getParameter(username);String password=request.getParameter(password);DataSource ds = null;String message=null;Context context;try context = new InitialContext();ds = (DataSource) context.lookup(java:/comp/