基于JAVA SSM框架的酒店客房管理系统设计

欢迎扫一扫互相交流学习哦!

二维码

酒店客房管理系统

随着信息需求的增长,传统的信息交流方式早已不能满足企业对传递和处理大量信息的需要,因而亟需把网络技术渗透到日常生活中。在当代快速发展的社会里,无处不见酒店,酒店客房管理系统的开发势在必行。随着计算机的普及和计算机科学技术的飞速发展,人们开始越来越多地利用计算机解决实际问题。酒店面对大量的预定,入住以及人员管理和历史记录的查询等问题,采用原始方式处理既浪费时间、又浪费人力和物力,并且数据的准确性低,所以酒店管理系统的出现起到了很重要的作用。因此,总结前人的经验,开发交互性好,易于操作的酒店管理系统进行自动化处理变得十分重要。

此系统实现了用户对客房的预定、用户自身信息的查询、管理员对预定的处理、管理员对入住的接收,管理员对信息的查询,管理员对历史记录的查询,以及管理员对人员的管理等功能,实现了易安装性、易维护性和易操作性,并且系统运行稳定、安全。酒店管理系统的应用对酒店起到了重要的作用。此系统是对酒店前台的业务进行管理,对某些环节进行了优化,提高了工作效率,使酒店管理者能够及时了解收费状况等许多必要的信息,提高酒店的工作效率和竞争力。

本毕业设计的内容是设计并且实现一个基于web技术的酒店客房管理系统,该系统主要以J2EE作为开发基础,主要使用了Struts2+Spring+Hibernate等多种框架的结合使用,用MyEclipse作为开发工具,以MySQL作为数据库,以Macromedia公司的Dreamweaver作为界面美化工具,使用Java语言开发,页面采取JSP动态页面开发技术。该系统界面简单、操作方便,易于维护。

关键词 酒店客房管理系统;SSH框架;MySQL数据库;Java语言;JSP

Hotel Management System

Abstract

With the growth in demand for information,the traditional way of information exchange can not meet the enterprise need to transmit and process a lot of information,hence the need to put the network technology into daily life.In today's busy society, information has become more and more popular. With the popularity of computer and rapid development of computer science and technology, more and more people are using computers to solve practical problems. The application of hotel management plays a very important role. In the face of a large number of reservations and occupancy, as well as personnel management, and historical records query, human processing can absolutely waste time, along with human and material resources, where the accuracy of the data is low. Therefore, developing a friendly interface, easy operation of the hotel management system for automated processing becomes very important, which is the purpose and significance of this system development.

This system enables customers to book hotel rooms, ask for information, leave message for system. It also enables the administrator to treat reservations, receive the check-in, look for information and historic records, and manage staff, which also includes the functions like staff attendance. It realizes the goal of easy installation, easy maintenance and easy to operate, and the system is stable and safe.

The contents of this graduation project is to design and implement a web based technology sharing network,this system mainly uses J2EE as the basis of development,the main use of the combined use of Struts2+Spring+Hibernate and other frameworks,MyEclipse as a development tool,MySQL as the database,using Macromedia's Dreamweaver as the interface landscaping tools,the use of Java language development,page take the development technology of JSP dynamic pages.The system has a simple interface,easy operation,easy maintenance.

Key words Hotel Management System;SSH frame;MySQL Database;Java language;JSP

目 录

摘 要... i

Abstract ii

1  绪论... 1

1.1  课题研究的背景及意义... 1

1.2  课题研究现状... 2

2  系统的开发环境及技术简介... 3

2.1  系统开发环境... 3

2.1.1  MyEclipse. 3

2.1.2  数据库简介... 3

2.1.3  Tomcat 3

2.2  系统开发的思想和技术... 4

2.2.1  Java简介... 4

2.2.2  JSP技术与MVC模式以及系统的基本框架... 5

2.2.3  SSH框架... 5

2.3  本章小结... 8

3  系统概要设计... 9

3.1  总体功能模块... 10

3.2  系统管理员的功能模块... 10

3.3  用户功能模块... 11

3.4  系统业务描述... 11

3.5  程序流程图... 12

3.6  本章小结... 12

4  系统详细设计... 13

4.1  系统和数据库的配置... 13

4.2  概念模型设计... 13

4.3  数据库的逻辑模型... 13

4.4  数据库表结构... 15

4.5  平台数据表的设计... 16

4.6  本章小结... 19

5  系统功能实现... 20

5.1  系统的类图... 20

5.1.1  客房分类Fenlei类图... 20

5.1.2  开房信息Kaifang类图... 20

5.1.3  客房信息Kefang类图... 21

5.1.4  用户User类图... 21

5.1.5  预定Yuding类图... 21

5.2  程序的时序图... 22

5.2.1  房间分类模块时序图... 22

5.2.2  开房信息模块时序图... 23

5.2.3  客房信息模块时序图... 24

5.2.4  用户模块时序图... 24

5.2.5  预定模块时序图... 25

5.3  系统功能实现的主要框架... 26

5.3.1  SSH框架... 26

5.3.2  Hibernate配置文件... 26

5.3.3  Struts配置文件... 26

5.3.4  Spring配置文件... 27

5.4  系统功能实现的主要模块... 28

5.4.1  系统登录页面... 28

5.4.2  普通用户注册页面... 29

5.4.3  系统管理员登录页面... 30

5.4.4  普通用户登录页面... 30

5.4.5  客房信息管理页面... 30

5.4.6  用户管理页面... 32

5.4.7  客房分类管理页面... 32

5.4.8  开房管理页面... 32

5.4.9  普通用户客房预定页面... 33

5.5  本章小结... 33

6  系统测试... 34

6.1  软件测试的目的... 34

6.2  软件测试的任务... 35

6.3  测试环境... 35

6.4  测试环境的配置... 35

6.4.1  创建安装项目... 35

6.4.2  添加项目输出... 36

6.4.3  运行项目... 37

6.5  本章小结... 37

结 论... 38

参考文献... 39

致 谢... 40

外文原文... 41

中文翻译... 48

 

绪论

1.1  课题研究的背景及意义

如今酒店管理系统已经成为一个酒店不可缺少的部分,它的功能对于企业的用户和管理者来说都是至关重要的,因此,酒店管理系统应该能够为用户提供方便的服务,充足的信息和快捷的查询手段,以往人们一直使用传统的人工方式管理,这种管理方式存在着许多缺点,诸如效率低,保密性差等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学不断发展,其强大的功能已经被人们深刻认识,它已经进入了人类社会的各个领域并发挥着越来越重要的作用。

基于SSH的酒店管理系统实现了信息及人员的全过程追踪和动态管理,从而做到简化预定客房过程,优化入住客房速度,改变以往排队多、等候时间长、秩序混乱的局面。同时酒店管理系统的实施也强化了酒店内部管理,降低了员工的工作强度和时间,人为因素造成的漏现象可以解决,也加速了处理速度,减少用户流程。酒店管理系统为管理者提供了收费状况和历史记录等许多有用的信息,也由于许多因素的影响:如提供的信息是否充足,数据的处理是否快捷等,使得繁琐的管理在酒店运营中的地位越发重要,越来越多的人都在关心酒店管理的重要性问题。本系统作为一个管理信息平台,在一定程度上便是适应这样的发展的需求。

在信息高速发展的今天,使用快速有效的工具和设备是所有行业保持领先优势的必须手段,为了更好的对酒店业务进行管理和协调,所以使用酒店管理系统是对酒店和宾馆有很多益处的,为了使系统能够很好的适应业务变化系统具有了良好的业务扩展和业务定制能力,解决了用户需求经常变化软件系统长期难以定型的问题,我对此进行了一些相关调查并开发实现了一个适用于中小型酒店和宾馆的管理系统。

信息化的今天,酒店管理系统的应用,使高效率的酒店管理模式成为可能。通过本酒店客房管理系统,酒店的相关工作人员可以提高自身的工作效率,并且通过历史记录和收费纪录能够做好金钱的查询和协调工作;通过本酒店客房管理系统,酒店的决策者可以直接管理和运营相关的业务,有效地发现和挖掘前景,及时与自己的上级、下属、同行业单位进行的沟通与交流,同心协作,积极为酒店事业的发展与决策贡献力量。使酒店管理适应时代的发展要求,大大提高了在大量服务机构中的核心竟争力。

使用酒店管理系统的意义:

1.减少工作量,增加回头率。

很多使用电子锁的宾馆,如果没有使用酒店客房管理系统,全部手写记账,那么老板每天都需要花大量时间进行对账查账,每次前台交接班也需要花费大量时间进行对账交账,如果使用了酒店客房管理系统,那么所有账目一目了然,每天总账,交接班账目,收支账目,甚至每月的详细账目和总账都清清楚楚。大大节约了时间,解放了老板,提高了效率。

如果有酒店客房管理系统,但是没有和门锁软件进行连接,那么每次客人入住和离店都需要使用两个软件同时进行操作,增加了客人等待时间,降低了服务质量,不利于在客人心中留下好印象,也就不能增加客人回头率。两个软件进行操作,误操作概率大大增加,一不小心就在门锁软件上制一个房间的房卡,在管理软件上收银入账到另一房间上。

2.增加财务安全,减少管理漏洞。

由于酒店客房管理系统和门锁软件用接口进行了连接,在实际使用中,不使用门锁软件,只使用酒店客房管理系统进行入住登记,收银,制卡,客房商品入账,前台商品入账,电话费自动入账,赔偿入账,退房,结账,客房和前台商品的进销存管理,会员卡管理,协议单位管理,预订房管理,远程账目管理等等。在酒店客房管理系统中,实行的是先进行收银入账,再进行房卡制作的工作流程,并且如果不进行收银入账,就不能进行房卡制作,所有在软件上的账目和操作记录都不能人工删除,这样的管理流程,做到了避免前台人员私自截留房费的可能,大大增加了老板的财务安全,减少了财务管理漏洞。在使用了酒店客房管理系统后,门锁软件的进入密码由老板保存,前台人员不再使用门锁软件。

1.2  课题研究现状

国外的酒店管理系统最早是于70年代初发展起来的,到了80年代,国外的酒店管理系统,如EECO(Electronic Engineering CO)、HIS(Hotel Information System)、CLS、Lodgistix等,整个模式已基本定型,技术较成熟,功能也较齐全。现在,国外酒店正向个性化方向发展,酒店按其经营方式可分为商务型酒店、长住型酒店、度假型酒店等等;按其经营形式可分为独立经营酒店、集团经营酒店等。而且产生了一大批国际级的连锁酒店,如希尔顿(Hilton Hotels Corp)、谢拉顿(Sheraton Corp)、假日(Holiday Corp)、凯悦(Hyatt Hotel Corp)等集团公司的连锁酒店。

国内的酒店计算机管理系统最早是在80年代初开始的,从事该方面工作的有清华大学自动化系的金国芬教授、西安交大和浙江省计算机技术研究所。到了80年代中后期,随着国外酒店计算机系统和先进管理技术的大规模引进,进一步促进了我国酒店管理技术的发展。国内酒店管理系统正是在充分吸收国外管理系统的精华,结合国内实际的情况下逐步发展成熟,到90年代初期形成了几个较成熟的软件系统,同时产生了许多专职从事酒店计算机管理系统的公司。其中比较有影响的有杭州西欧Foxhis饭店管理系统、北京中软好泰CSHIS管理系统、北京华仪饭店管理系统和广州万迅千里马饭店管理系统。

到了21世纪,随着计算机在饭店中的普及应用,以及计算机技术的不断发展,酒店计算机系统的发展到了一个新的时期,新的系统平台、新的软件功能、新的系统特点及发展方向不断涌现。

 

 

系统的开发环境及技术简介

2.1  系统开发环境

2.1.1  MyEclipse

在开发本平台中所用到的开发工具就是知名的Java项目开发工具MyEclipse。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的一种扩展,利用MyEclipse,我们可以进行数据库和J2EE项目的开发、发布,以及在应用程序服务器的整合中极大地提高系统的工作效率。MyEclipse是一个功能非常丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。

在结构上,MyEclipse的特征可以被分为7类:J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。

对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。

2.1.2  数据库简介

数据库使用的是MySQL开源数据库。

MySQL的特性:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 。支持AIX、FreeBSD、HP-UX、Mac OS、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 。为多种编程语言提供API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多线程充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。

MySQL的应用:与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体成本。

2.1.3  Tomcat

Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

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

当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

2.2  系统开发的思想和技术

2.2.1  Java简介

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称,是一种简单的、面向对象的、分布式的、解释型的、健壮安全的、结构中立的、可移植的、性能优异、多线程的动态语言,很多软件就是用这个开发出来的。Java分为三个体系:JavaSE标准版,JavaEE企业版,JavaME微型版。

Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响,基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。在此基础上形成了Java平台和.NET平台两大派系,推动了整个IT业的发展。对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。总之,目前以看到了Java对信息时代的重要性,未来还会不断发展,Java在应用方面将会有更广阔的前景。

Java语言的特点:

语言简单:Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,并提供了自动的废料收集,使得程序员不必为内存管理而担忧;

面向对象:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制;

分布式语言:它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段;

语言是可移植的:Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的;

语言是多线程的:在Java语言中,线程是一种特殊的对象Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码;

异常处理机制:为了使Java程式更稳定、更安全,Java引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。

Java编程是面向对象的,使用它编程,可以帮助我们了解需求,定制功能更为强大的软件更好地为客户服务。并且拥有语言动态,语言可移植语言可拓展、通用性强和易于扩充等优势。

Java主要针对企业级用户,适合一些企业级的开发,可以开发优秀的企业级平台的的程序、高效灵活的文件操作程序、高效灵活的数据库操作程序。总之,Web应用、移动设备、嵌入式设备、Linux客户端管理工具等应用方面,Java有不可比拟的功能。

2.2.2  JSP技术与MVC模式以及系统的基本框架

本系统采用JSP技术,基于MVC模式开发,使用SSH框架(Struts2、Spring、Hibernate)来加快系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用Struts2和Hibernate这两个框架来实现模型层和控制器这两层,JSP实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,JSP页面请求先到Action,再到DAO,再回到Action,回到JSP页面,Action主要处理来自页面的请求,DAO主要是和数据库的交互,Struts2主要用在Action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在DAO,包括对数据库的增、删、改、查的操作,Spring控制程序的流程。

2.2.3  SSH框架

SSH框架是J2EE应用中Struts2+Spring+Hibernate三大免费开源框架的结合使用, 它可以看成工具,也是中间件。它是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。它们里面有很多优秀的设计理念及模式应用。比如,Struts属于MVC框架,关键是要了解MVC的概念及大致原理;而Hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而Spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多实用的东西,比如对JDBC的封装、自己的MVC、对动态语言的简捷访问等。如图2.1所示。

 

图2.1 SSH框架

它由以下3个框架构成:

1.Struts2框架

Struts2是Apache组织的一个开放源码项目。Struts2是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2.2所示。

 

Web服务器

Struts.config xml

ActionServlet

控制器

JSP

视图

Servlet/JSP容器

Action

Action

JavaBean

EJB

模型

 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图2.2 Struts框架工作流程

2.Spring框架

Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IOC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。

Spring框架由以下7个部分组成,如图2.3所示。

 

图2.3 Spring框架构成

 

3.Hibernate框架

Hibernate是一个开放源码的ORM持久层框架。作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作,如图2.4所示。

 

图2.4 Hibernate框架

       SSH框架的特点:典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC模式里面的Controller,负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。DAO层,负责与持久化对象的交互。该层封装了数据的增、删、查、改的操作。PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。

       SSH的工作流程:初始化COM库,引入ADO库定义文件,用Connection对象连接数据库;利用建立好的连接,通过Connection,Command对象执行SQL命令或利用Recordset对象取得结果记录集进行查询处理,使用完毕后关闭连接释放对象。ADO编程模型被设计成你只需集中完成两项简单的任务,即可完成对数据的绝大部分的操作:初始化COM库,引入ADO库定义文件;用Connection对象连接数据库;利用建立好的连接,通过Connection、Command对象执行命令;利用Recordset对象取得结果记录集进行查询、处理;使用完毕后关闭连接释放对象。

2.3  本章小结

本章开始介绍了系统开发所涉及到的开发工具,框架和数据库,并详细介绍了相关信息,并根据这些深入研究,为程序实现奠定了基础;对开发这套管理系统的技术相关框架及主要开发工具进行了概要的介绍,通过需求分析后,考虑到客户的各种具体要求,制定了系统的基本功能,确定了系统的用户,及不同用户的使用权限。方便管理员对相关环境的搭建及维护。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

系统概要设计

概要设计的主要任务是把系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。

酒店客房管理系统的开发采用的是B/S的体系结构,B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓三层结构。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。

以目前的技术看,它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在Java这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点的单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。

成本降低,选择更多。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使的最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。

 

 

 

 

3.1  总体功能模块

本系统分系统管理员和用户2个用户角色。

总功能图如图3.1所示。

          

图3.1 系统功能需求分析

3.2  系统管理员的功能模块

系统管理员的主要功能有用户管理、客房分类管理、客房信息管理、开房管理、退房管理、开房记录查询、预订记录查询。系统管理员的功能图如图3.2所示。

 

图3.2 系统管理员的功能图

 

 

 

 

3.3  用户功能模块

用户主要功能有注册登录功能、客房预订、预订记录查询。

用户的功能图如图3.3所示。

 

图3.3 用户的功能图

3.4  系统业务描述

本系统分系统管理员和普通用户2个用户角色。系统管理员的主要功能有用户管理、客房分类管理、客房信息管理、开房管理、退房管理、开房记录查询、预订记录查询;用户主要功能有注册登录功能、客房预订、预订记录查询。

用例图如图3.4所示。

 

图3.4 系统用例图

 

 

 

 

 

 

3.5  程序流程图

用户注册流程图如图3.5所示。

 

图3.5 用户注册流程图

 

用户登录流程图如图3.6所示。

 

图3.6 用户登录流程图

3.6  本章小结

考虑到客户的各种具体要求,制定了系统的基本功能,确定了系统的用户,及不同用户的使用权限。为以后的系统开发奠定了坚实的基础和理论依据。

 

 

 

 

系统详细设计

4.1  系统和数据库的配置

系统按通用的B/S(浏览器、服务器)模式进行设计。

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

4.2  概念模型设计

概念模型设计的典型方法是用E-R图方法,即用实体-联系模型表示。E-R方法是用E-R图来描述显示世界,E-R图包含三个基本成分:实体、联系、属性。它直观易懂,能够比较准确地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。

本系统E-R图如图4.1所示。

 

图4.1 系统E-R图

4.3  数据库的逻辑模型

房间分类表(主键、添加时间、房间状态、房间价格、房间类型)如图4.2所示。

 

主键

添加时间

房间价格

房间类型

房间状态

房间分类

图4.2 房间分类逻辑图

 

开房信息表(主键、备注、身份证号、结账状态、客户姓名、入住时间、入住天数、退房时间、消费金额、押金、关联客房的ID)如图4.3所示。

 

主键

备注

押金

关联客房的ID

开房信息

图4.3 开房信息逻辑图

客房信息表(主键、房间信息状态、房间号、房间状态、房间描述、关联分类的ID)如图4.4所示。

 

主键

房间信息状态

房间描述

关联分类的ID

客房信息

图4.4 客房信息逻辑图

 

 

用户表(主键、添加时间、联系方式、密码、1表示管理员、真实姓名、用户状态、用户名、性别)如图4.5所示。

 

主键

添加时间

用户名

性别

用户

图4.5 用户逻辑图

 

预定表(主键、备注、添加时间、联系方式、真实姓名、性别、预定客户身份证号码、预定状态、预定入住时间、关联kefang的ID、关联user的ID)如图4.6所示。

 

主键

备注

关联kefang的ID

关联user的ID

预定

图4.6 预定逻辑图

4.4  数据库表结构

       房间分类表用来保存系统所有客房类型的基本信息。

房间分类表如表4.1所示:

表4.1 房间分类表

名称

类型

默认值

备注

id

int(11)

no

auto_increment

主键

createtime

datetime

yes

添加时间

deletestatus

int(11)

no

0

房间状态

jiage

double

yes

房间价格

leixing

varchar(255)

yes

房间类型

 

       开房信息表用来保存系统所有已入住客房的客户的基本信息及该客户的入住时间、入住天数退房时间和消费金额,还有押金。

       开房信息表如表4.2所示:

表4.2 开房信息表

名称

类型

默认值

备注

id

int(11)

no

auto_increment

主键

beizhu

varchar(255)

yes

备注

idcard

varchar(255)

yes

身份证号

jiezhangstatus

varchar(255)

yes

结账状态

kehuname

varchar(255)

yes

客户姓名

ruzhutime

datetime

yes

入住时间

tianshu

int(11)

yes

入住天数

tuifangtime

datetime

yes

退房时间

xiaofei

double

yes

消费金额

yajin

double

yes

押金

kefangid

int(11)

yes

关联客房的ID

 

客房信息表用来保存系统所有空房和已入住的客房的基本信息。

       客房信息表如表4.3所示:

表4.3 客房信息表

名称

类型

默认值

备注

id

int(11)

no

auto_increment

主键

deletestatus

int(11)

no

0

房间信息状态

fangjianhao

varchar(255)

yes

房间号

fangjianstatus

varchar(255)

yes

房间状态

miaoshu

varchar(255)

yes

房间描述

fenleiid

int(11)

yes

关联分类的ID

 

       用户表用来保存系统管理员添加的,或者普通用户注册的普通用户的基本信息,以及系统管理员添加的管理员的基本信息。

       用户表如表4.4所示:

表4.4 用户表

名称

类型

默认值

备注

id

int(11)

no

auto_increment

主键

createtime

datetime

yes

添加时间

lianxifangshi

varchar(255)

yes

联系方式

password

varchar(255)

yes

密码

role

int(11)

no

0

1表示管理员

truename

varchar(255)

yes

真实姓名

userlock

int(11)

no

0

用户状态

username

varchar(255)

yes

用户名

xingbie

varchar(255)

yes

性别

 

       预定表如表4.5所示:

表4.5 预定表

名称

类型

默认值

备注

id

int(11)

no

auto_increment

主键

beizhu

varchar(255)

yes

备注

createtime

datetime

yes

添加时间

lianxifangshi

varchar(255)

yes

联系方式

truename

varchar(255)

yes

真实姓名

xingbie

varchar(255)

yes

性别

yudingidcard

varchar(255)

yes

预定客户身份证号码

yudingstatus

int(11)

no

0

预定状态

yudingtime

varchar(255)

yes

预定入住时间

kefangid

int(11)

yes

关联kefang的ID

userid

int(11)

yes

关联user的ID

 

4.5  平台数据表的设计

根据平台的需求分析和功能模块的划分,所涉及的实体有房间分类、开房信息、客房信息、用户、预定。因此系统的定义数据库主要包含5张表:房间分类表t_fenlei,开房信息表t_kaifang,客房信息表t_kefang,用户表t_user,预定表t_yuding。

房间分类表t_fenlei如图4.7所示。

 

图4.7 房间分类表

建表的SQL语句为:

CREATE TABLE ‘t_fenlei’ (

‘id’ int(11) NOT NULL auto_increment COMMENT ‘主键’,

  ‘createtime’ datetime default NULL COMMENT ‘添加时间’,

  ‘deletestatus’ int(11) NOT NULL default ‘0’ COMMENT ‘房间状态 0表示正常状态 1表示删除状态’,

  ‘jiage’ double default NULL COMMENT ‘房间价格’,

  ‘leixing’ varchar(255) default NULL COMMENT ‘房间类型’,

  PRIMARY KEY  (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

开房信息表t_kaifang如图4.8所示。

 

图4.8 开房信息表

建表语句为:

CREATE TABLE ‘t_kaifang’ (

  ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主键’,

  ‘beizhu’ varchar(255) default NULL COMMENT ‘备注’,

  ‘idcard’ varchar(255) default NULL COMMENT ‘身份证号’,

  ‘jiezhangstatus’ varchar(255) default NULL COMMENT ‘结账状态 已结账 未结账’,

  ‘kehuname’ varchar(255) default NULL COMMENT ‘客户姓名’,

  ‘ruzhutime’ datetime default NULL COMMENT ‘入住时间’,

  ‘tianshu’ int(11) NOT NULL default ‘0’ COMMENT ‘入住天数’,

  ‘tuifangtime’ datetime default NULL COMMENT ‘退房时间’,

  ‘xiaofei’ double default NULL COMMENT ‘消费金额’,

  ‘yajin’ double default NULL COMMENT ‘押金’,

  ‘kefangid’ int(11) default NULL COMMENT ‘关联客房的id,外键’,

  PRIMARY KEY (‘id’),

  KEY ‘FKE682DF1CAFDBF4E2’ (‘kefangid’),

  CONSTRAINT ‘FKE682DF1CAFDBF4E2’ FOREIGN KEY (‘kefangid’) REFERENCES ‘t_kefang’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

 

 

 

 

客房信息表t_kefang如图4.9所示。

 

图4.9 客房信息表

建表语句为:

CREATE TABLE ‘t_kefang’ (

  ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主键’,

  ‘deletestatus’ int(11) NOT NULL default ‘0’ COMMENT ‘房间信息状态 0表示未删除 1表示删除’,

  ‘fangjianhao’ varchar(255) default NULL COMMENT ‘房间号’,

  ‘fangjianstatus’ varchar(255) default NULL COMMENT ‘房间状态 空房 开房 预订’,

  ‘miaoshu’ varchar(255) default NULL COMMENT ‘房间描述’,

  ‘fenleiid’ int(11) default NULL COMMENT ‘关联分类的id,外键’,

  PRIMARY KEY  (‘id’),

  KEY ‘FK3932E659AE2F5C48’ (‘fenleiid’),

  CONSTRAINT ‘FK3932E659AE2F5C48’ FOREIGN KEY (‘fenleiid’) REFERENCES ‘t_fenlei’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

用户表t_user如图4.10所示。

 

图4.10 用户表

建表语句为:

CREATE TABLE ‘t_user’ (

  ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主键’,

  ‘createtime’ datetime default NULL COMMENT ‘添加时间’,

  ‘lianxifangshi’ varchar(255) default NULL COMMENT ‘联系方式’,

  ‘password’ varchar(255) default NULL COMMENT ‘密码’,

  ‘role’ int(11) NOT NULL default ‘0’ COMMENT ‘1表示管理员’,

  ‘truename’ varchar(255) default NULL COMMENT ‘真实姓名’,

  ‘userlock’ int(11) NOT NULL default ‘0’ COMMENT ‘用户状态 0表示正常 1表示删除’,

  ‘username’ varchar(255) default NULL COMMENT ‘用户名’,

  ‘xingbie’ varchar(255) default NULL COMMENT ‘性别 男 女’,

  PRIMARY KEY (‘id’)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf-8;

预定表t_yuding如图4.11所示。

 

图4.11 预定表

建表语句为:

CREATE TABLE ‘t_yuding’ (

  ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主键’,

  ‘beizhu’ varchar(255) default NULL COMMENT ‘备注’,

  ‘createtime’ datetime default NULL COMMENT ‘添加时间’,

  ‘lianxifangshi’ varchar(255) default NULL COMMENT ‘联系方式’,

  ‘truename’ varchar(255) default NULL COMMENT ‘真实姓名’,

  ‘xingbie’ varchar(255) default NULL COMMENT ‘性别’,

  ‘yudingidcard’ varchar(255) default NULL COMMENT ‘预定客户身份证号码’,

  ‘yudingstatus’ int(11) NOT NULL default ‘0’ COMMENT ‘预定状态 0表示预定 1表示取消预定’,

  ‘yudingtime’ varchar(255) default NULL COMMENT ‘预定入住时间’,

  ‘kefangid’ int(11) default NULL COMMENT ‘关联kefang的id,外键’,

  ‘userid’ int(11) default NULL COMMENT ‘关联user的id,外键’,

  PRIMARY KEY (‘id’),

  KEY ‘FK51F76C65AFDBF4E2’ (‘kefangid’),

  KEY ‘FK51F76C657614FDC’ (‘userid’),

  CONSTRAINT ‘FK51F76C657614FDC’ FOREIGN KEY (‘userid’) REFERENCES ‘t_user’ (‘id’),

  CONSTRAINT ‘FK51F76C65AFDBF4E2’ FOREIGN KEY (‘kefangid’) REFERENCES ‘t_kefang’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

4.6  本章小结

本章详细介绍了本系统使用的体系结构,使系统的体系架构清晰明了。详细划分了用户操作框架,细分了系统的各个功能模块,并且对每个功能模块的功能细分到底层,用来与后台数据库进行连接,为下面的系统实现打下了坚实基础。

系统功能实现

5.1  系统的类图

类图(Class Diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性信息。

类图由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。

类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。

类图最基本的元素是类或者接口。

同其他的图一样,类图也可以包含注解和限制。

类图中也可以包含包和子系统,这两者用来将元素的分组。有时候也可以将类的实例放到类图中。

5.1.1  客房分类Fenlei类图

客房分类类图如图5.1所示。

      

图5.1 Fenlei类图

5.1.2  开房信息Kaifang类图

开房信息类图如图5.2所示。

 

图5.2 Kaifang类图

 

 

 

5.1.3  客房信息Kefang类图

客房信息类图如图5.3所示。

 

图5.3 Kefang类图

5.1.4  用户User类图

用户类图如图5.4所示。

 

图5.4 User类图

5.1.5  预定Yuding类图

预定类图如图5.5所示。

 

图5.5 Yuding类图

 

 

 

 

 

5.2  程序的时序图

时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。

时序图描述对象是如何交互的,并且将重点放在消息序列上。也就是说,描述消息是如何在对象间发送和接收的。时序图有两个坐标轴:纵坐标轴显示时间,横坐标轴显示对象。每一个对象的表示方法是:矩形框中写有对象或类名,且名字下面有下划线;同时有一条纵向的虚线表示对象在序列中的执行情况(即发送和接收的消息对象的活动),这条虚线称为对象的生命线。对象间的通信用对象的生命线之间的水平的消息线来表示,消息线的箭头说明消息的类型,如同步,异步或简单。浏览时序图的方法是,从上到下查看对象间交换的消息,分析那些随着时间的流逝而发生的消息交换。

时序图中的消息可以是信号,操作调用或类似于C++中的RPC(Remote Procedure Call,远程过程调用)或Java中的RMI(Remote Method Invocation,远程方法调用)。当对象接收到一个消息时,该对象中的一项活动就会启动,我们把这一过程称做激活(Activation)。激活会显示控制焦点,表明对象在某一个时间点开始执行。一个被激活的对象或者是执行它自身的代码,或者是等待另一个对象的返回(该被激活的对象已经向另一个对象发送了消息)。在图形上,激活被绘制为对象生命线上的一个瘦高矩形。

消息可以用消息名及参数来标识。消息还可带有条件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。消息也可以有顺序号,但是在时序图中,消息的顺序号很少使用,因为时序图已经将消息的顺序显式地表示出来了。

5.2.1  房间分类模块时序图

房间分类模块时序图如图5.6所示:

 

图5.6 房间分类模块时序图

    从房间分类模块时序图中可以看出,系统管理员通过JSP页面发送请求,JSP页面获得响应,调用manageAction方法,再调用fenleiDao,通过连接后台数据库处理数据,再回到DAO,回到Action,JSP页面获得响应,并提示相关信息。如系统管理员请求添加客房分类信息,则响应Action调用插入方法,通过DAO插入数据库中相关数据,数据库存储数据后返回DAO,再返回Action,页面向系统管理员提示添加成功的信息;如系统管理员请求更新客房分类信息,则响应Action调用更新方法,通过DAO更新数据库记录,数据库更新数据后返回DAO,再返回Action,页面向系统管理员提示更新成功的信息;如系统管理员请求查看客房分类信息,则响应Action调用查询方法,通过DAO查询数据库中的相关记录,之后返回DAO,在返回Action,页面跳转至系统管理员要查看的相关信息;如系统管理员请求删除客房分类信息,则响应Action调用删除方法,通过DAO删除数据库中相关信息,之后返回DAO,返回Action,页面向系统管理员提示删除成功的信息。

5.2.2  开房信息模块时序图

开房信息模块时序图如图5.7所示:

 

图5.7 开房信息模块时序图

 

    从开房信息模块时序图中可以看出,系统管理员通过JSP页面发送请求,JSP页面获得响应,调用manageAction方法,再调用kaifangDao,通过连接后台数据库处理数据,再回到DAO,回到Action,JSP页面获得响应,并提示相关信息。如系统管理员请求添加开房信息,则响应Action调用插入方法,通过DAO插入数据库中相关数据,数据库存储数据后返回DAO,再返回Action,页面向系统管理员提示添加成功的信息;如系统管理员请求更新开房信息,则响应Action调用更新方法,通过DAO更新数据库记录,数据库更新数据后返回DAO,再返回Action,页面向系统管理员提示更新成功的信息;如系统管理员请求查看开房信息,则响应Action调用查询方法,通过DAO查询数据库中的相关记录,之后返回DAO,在返回Action,页面跳转至系统管理员要查看的相关信息;如系统管理员请求删除开房信息,则响应Action调用删除方法,通过DAO删除数据库中相关信息,之后返回DAO,返回Action,页面向系统管理员提示删除成功的信息。

5.2.3  客房信息模块时序图

客房信息模块时序图如图5.8所示:

 

图5.8 客房信息模块时序图

 

    从客房信息模块时序图中可以看出,系统管理员通过JSP页面发送请求,JSP页面获得响应,调用manageAction方法,再调用kefangDao,通过连接后台数据库处理数据,再回到DAO,回到Action,JSP页面获得响应,并提示相关信息。如系统管理员请求添加客房信息,则响应Action调用插入方法,通过DAO插入数据库中相关数据,数据库存储数据后返回DAO,再返回Action,页面向系统管理员提示添加成功的信息;如系统管理员请求更新客房信息,则响应Action调用更新方法,通过DAO更新数据库记录,数据库更新数据后返回DAO,再返回Action,页面向系统管理员提示更新成功的信息;如系统管理员请求查看客房信息,则响应Action调用查询方法,通过DAO查询数据库中的相关记录,之后返回DAO,在返回Action,页面跳转至系统管理员要查看的相关信息;如系统管理员请求删除客房信息,则响应Action调用删除方法,通过DAO删除数据库中相关信息,之后返回DAO,返回Action,页面向系统管理员提示删除成功的信息。

5.2.4  用户模块时序图

    系统管理员通过JSP页面发送请求,JSP页面获得响应,调用manageAction方法,再调用userDao,通过连接后台数据库处理数据,再回到DAO,回到Action,JSP页面获得响应,并提示相关信息。如系统管理员请求添加用户信息,则响应Action调用插入方法,通过DAO插入数据库中相关数据,数据库存储数据后返回DAO,再返回Action,页面向系统管理员提示添加成功的信息;如系统管理员请求更新用户信息,则响应Action调用更新方法,通过DAO更新数据库记录,数据库更新数据后返回DAO,再返回Action,页面向系统管理员提示更新成功的信息;如系统管理员请求查看用户的具体信息,则响应Action调用查询方法,通过DAO查询数据库中的相关记录,之后返回DAO,在返回Action,页面跳转至系统管理员要查看的用户相关信息;如系统管理员请求删除用户信息,则响应Action调用删除方法,通过DAO删除数据库中相关信息,之后返回DAO,返回Action,页面向系统管理员提示删除成功的信息。

用户模块时序图如图5.9所示。

 

图5.9 用户模块时序图

5.2.5  预定模块时序图

预定模块时序图如图5.10所示:

 

图5.10 预定模块时序图

 

    从预定模块时序图中可以看出,系统管理员通过JSP页面发送请求,JSP页面获得响应,调用manageAction方法,再调用yudingDao,通过连接后台数据库处理数据,再回到DAO,回到Action,JSP页面获得响应,并提示相关信息。如系统管理员请求添加预定信息,则响应Action调用插入方法,通过DAO插入数据库中相关数据,数据库存储数据后返回DAO,再返回Action,页面向系统管理员提示添加成功的信息;如系统管理员请求更新预定信息,则响应Action调用更新方法,通过DAO更新数据库记录,数据库更新数据后返回DAO,再返回Action,页面向系统管理员提示更新成功的信息;如系统管理员请求查看预定信息,则响应Action调用查询方法,通过DAO查询数据库中的相关记录,之后返回DAO,在返回Action,页面跳转至系统管理员要查看的相关信息;如系统管理员请求删除预定信息,则响应Action调用删除方法,通过DAO删除数据库中相关信息,之后返回DAO,返回Action,页面向系统管理员提示删除成功的信息。

5.3  系统功能实现的主要框架

5.3.1  SSH框架

SSH框架就是Struts2,Spring,Hibernate的简称,运用3个框架的集成协作使用,可以有效的提高代码编写的效率,从而有效的降低程序开发的周期。

5.3.2  Hibernate配置文件

org.hibernate.connection.ProxoolConnectionProvider

在Hibernate的配置文件中:

<property name="proxool.xml">proxool.xml</property>

首先加载了连接池的一个配置,就是加载了数据库的连接信息,

<property name="show_sql">true</property>

<property name="format_sql">true</property>

表示控制台打印SQL语句,并格式化SQL语句

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

表示当前数据库的语言是MySQL

       <mapping class="jiudian.model.User"/>

       <mapping class="jiudian.model.Fenlei"/>

       <mapping class="jiudian.model.Kefang"/>

都表示当前数据库建立起来的表和类之间的映射关系,比如<mapping class="model.User"/>表示User类和t_user表之间的建立起来的对应关系,其他也都类似。

5.3.3  Struts配置文件

        <action name="index" method="index" class="indexAction" >

            <result  name="success">index.jsp</result>

        </action>

              <action name="method" class="manageAction">

                     <result type="dispatcher">${url}</result>

                     <result name="redirect" type="redirect">${url}</result>

              </action>

              <action name="indexmethod" class="indexAction">

                     <result type="dispatcher">${url}</result>

                     <result name="redirect" type="redirect">${url}</result>

              </action>

这是struts的配置文件,该文件的作用主要是起到来自JSP的请求的跳转分配的作用.该struts配置文件是总的配置文件。

5.3.4  Spring配置文件

       <bean id="userDao" class="jiudian.dao.impl.UserDaoImpl" >

              <property name="sessionFactory"><ref bean="sessionFactory" /></property>

       </bean>

       <bean id="fenleiDao" class="jiudian.dao.impl.FenleiDaoImpl" >

              <property name="sessionFactory"><ref bean="sessionFactory" /></property>

       </bean>

       <bean id="kefangDao" class="jiudian.dao.impl.KefangDaoImpl" >

              <property name="sessionFactory"><ref bean="sessionFactory" /></property>

       </bean>

              <bean id="kaifangDao" class="jiudian.dao.impl.KaifangDaoImpl" >

              <property name="sessionFactory"><ref bean="sessionFactory" /></property>

       </bean>

       <bean id="yudingDao" class="jiudian.dao.impl.YudingDaoImpl" >

              <property name="sessionFactory"><ref bean="sessionFactory" /></property>

       </bean>

本段代码是把DAO实例化的代码,通过spring的IOC模式

       <bean id="manageAction" class="jiudian.action.ManageAction" scope="prototype">

              <property name="userDao"><ref bean="userDao" /></property>

              <property name="fenleiDao"><ref bean="fenleiDao" /></property>

              <property name="kefangDao"><ref bean="kefangDao" /></property>

              <property name="kaifangDao"><ref bean="kaifangDao" /></property>

              <property name="yudingDao"><ref bean="yudingDao" /></property>

       </bean>

本段代码是把ManageAction实例化的代码,原理也是spring的IOC模式。

Spring在本项目中主要用到了IOC的功能,就是把对象实例化。

5.4  系统功能实现的主要模块

5.4.1  系统登录页面

系统登录页面如图5.11所示。

 

                            图5.11 系统登陆页面图

登录代码:

//登录请求

       HttpServletRequest request = ServletActionContext.getRequest();

       String username = request.getParameter("username");

       String password = request.getParameter("password");

       String role = request.getParameter("role");

       User user = userDao.selectBean(" where username = '" + username

                     + "' and password= '" + password + "' and role= "+role+" and userlock=0 ");

       if (user != null) {

              HttpSession session = request.getSession();

              session.setAttribute("user", user);

              this.setUrl("index.jsp");

              return "redirect";

       } else {

              HttpServletResponse response = ServletActionContext.getResponse();

              response.setCharacterEncoding("utf-8");

              response.setContentType("text/html; charset=utf-8");

              response

                            .getWriter()

                            .print("<script language=javascript>alert('用户名或者密码错误,或者是用户不存在');window.location.href='login.jsp';</script>");

       }

       return null;

本段代码是程序的登陆代码,首先从获取从页面输入的用户名和密码以及用户角色,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。

5.4.2  普通用户注册页面

普通用户注册页面如图5.12所示。

 

                            图5.12 普通用户注册页面图

代码如下:

//用户注册操作

User bean = userDao.selectBean(" where username='"+username+"' and userlock=0 ");

if(bean==null){

       bean = new User();

       bean.setUsername(username);

       bean.setCreatetime(new Date());

       bean.setLianxifangshi(lianxifangshi);

       bean.setPassword(password);

       bean.setRole(0);

       bean.setTruename(truename);

       bean.setXingbie(xingbie);

       userDao.insertBean(bean);

       response

              .getWriter()

              .print("<script language=javascript>alert(‘恭喜,用户注册成功!返回登录界面!’);window.location.href='login.jsp';</script>");

}else{

       response

              .getWriter()

              .print("<script language=javascript>alert('操作失败,该用户名已经存在,请再次注册');window.location.href='login.jsp';</script>");

本段代码是程序的注册代码,首先从页面中获取注册的信息,同时新建一个User对象,把从页面获取的信息都写在User对象里面。同时在插入到数据库之前先调用userDao.selectBean(" where username='"+username+"' and userlock=0 ");方法,验证下该用户名在数据库中是否存在,如果不存在,则调用userDao.insertBean(bean);方法,把该条记录写入数据库;如果该条记录存在,则返回到注册页面,同时提醒用户该用户名已经存在,请重新注册。

5.4.3  系统管理员登录页面

系统管理员登录页面如图5.13所示:

 

图5.13 系统管理员登录页面图

该页面是系统管理员角色登录后的页面效果。系统管理员的主要功能有用户管理、客房分类管理、客房信息管理、开房管理、退房管理、开房记录查询、预订记录查询。

5.4.4  普通用户登录页面

普通用户登录页面如图5.14所示:

 

图5.14 普通用户登录页面图

该页面是普通用户登录后的效果,用户主要功能有注册登录功能、客房预订、预订记录查询。

5.4.5  客房信息管理页面

客房信息管理页面如图5.15所示。

 

图5.15 客房信息管理页面图

代码如下:

//客房信息管理列表

       request.setAttribute("leixinglist", fenleiDao.selectBeanList(0, 9999, " where deletestatus=0 "));

       if (fangjianhao != null && !"".equals(fangjianhao)) {

              sb.append(" fangjianhao like '%" + fangjianhao + "%'");

              sb.append(" and ");

              request.setAttribute("fangjianhao", fangjianhao);

       }

       if (leixing != null && !"".equals(leixing)) {

              sb.append("fenlei.leixing like '%" + leixing + "%'");

              sb.append(" and ");

              request.setAttribute("leixing", leixing);

       }

       if (request.getParameter("pagenum") != null) {

              currentpage = Integer.parseInt(request.getParameter("pagenum"));

       }

       int total = kefangDao.selectBeanCount(where.replaceAll(" order by id desc ", ""));

       request.setAttribute("list", kefangDao.selectBeanList((currentpage - 1)

       request.setAttribute("pagerinfo", Pager.getPagerNormal(total, pagesize,

              currentpage, "method!kefanglist", "共有" + total + "条记录"));

       request.setAttribute("url", "method!kefanglist");

       request.setAttribute("url2", "method!kefang");

       request.setAttribute("title", "客房信息管理");

       this.setUrl("kefang/kefanglist.jsp");

实现客房信息管理,首先通过String fangjianhao = request.getParameter("fangjianhao");和String leixing = request.getParameter("leixing");这2句代码从页面获取查询的选项,然后通过if (fangjianhao != nul&& !"".equals(fangjianhao))和if (leixing != null && !"".equals(leixing))这2句条件语句分别判断下这个值是否为空,当不为空时则通过StringBuffer来叠加组装查询的SQL语句,最后当SQL语句组装好了之后,通过kefangDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,再通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("kefang/kefanglist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该页面定义了对客房信息的增加,修改,删除等操作。

 

 

 

 

 

 

 

5.4.6  用户管理页面

用户管理页面如图5.16所示。

 

图5.16 用户管理页面图

用户管理页面是系统管理员角色登录系统后,点击用户管理看到的界面。在用户管理模块下,系统管理员可以实现添加新用户、按照用户名查询用户的具体信息,以及对用户的查看、修改和删除操作。

5.4.7  客房分类管理页面

客房分类管理页面如图5.17所示。

 

图5.17 客房分类管理页面图

客房分类管理界面是系统管理员角色登录系统后,点击客房分类管理看到的界面。在客房分类管理模块,系统管理员可以实现添加新客房分类、根据房间类型快速查询房间类型下所有房间的具体信息,也可以对具体的房间进行查看、修改和删除的操作。

5.4.8  开房管理页面

开房管理页面图是系统管理员角色登录系统后,点击开房管理看到的界面。在开房管理模块,系统管理员可以通过输入房间编号,或输入房间状态(空房或已入住),也可以根据房间类型快速查询客房的具体信息,也可以对客房进行是否入住的查询,若房间是空房,则可以查看客房的具体信息,可以进行开房操作;若房间已入住,则可以查看客房是何时被入住的信息。

 

 

开房管理页面如图5.18所示。

 

图5.18 开房管理页面图

5.4.9  普通用户客房预定页面

普通用户客房预定页面如图5.19所示。

 

图5.19 普通用户客房预定页面图

普通用户客房预定页面是普通用户角色登录系统后,点击客房预定看到的界面。在普通用户客房预定模块,普通用户可以通过输入房间编号,或者根据房间类型快速查询客房的信息,也可以对房间状态是“空房”的客房进行查看和预定操作。

5.5  本章小结

本章对整个管理系统进行全面的开发和编码,根据之前的准备对各个模块进行了编码,实现了各模块的功能,并建立了数据库的数据表,对数据库进行连接。

 

 

 

 

 

 

 

 

系统测试

软件测试是软件质量管理中最直接实际的行动。软件测试是有组织性、步骤性和计划性的。软件测试的种类可以根据测试形态、测试技术及测试模式来进行划分。

就测试模式而言,测试方法可分为两种:白盒测试和黑盒测试。这两种方法的测试方向是不同的,白盒测试以测试的深度为主,而黑盒测试是以测试的广度为主。

白盒测试:又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,严格来说白盒测试有两大方面:数据流程和控制流程。数据流程就是测试资料进出系统的程序所经过的流程,控制流程就是测试程序在执行过程中每个阶段的流程。

控制流程面有以下四点:

1.语句覆盖:每一个程序句述都被执行到;

2.分支覆盖:每一个程序的进出点都至少被执行过一次;

3.条件覆盖:分支覆盖再加上所有判断情况都至少被执行过一次;

4.条件组合覆盖:不同的组合的判断情况都至少被执行过一次。

黑盒测试:又称为功能测试或数据驱动测试,测试人员并不需要对软件的结构有深层的了解,测试重点在于软件的功能。为了控制黑盒测试的执行,测试人员必须按照测试用例逐一进行,所以测试用例设计的好坏会直接影响到测试结果。

所谓的测试用例就是将软件测试的行为活动,做一个科学化的组织归纳。而设计软件测试用例的目的,是为了能将软件测试的行为转换为可管理的模式。基于时间因素的考虑,软件测试行为必须能够加以量化,才能进一步让管理阶层掌握所需要的测试时程,而测试用例就是将测试行为具体量化的方法之一。

简单来说,测试用例就是设计一个情况,软件程序在这种情况下,必须能够正常运行,并且达到程序所设计的执行结果。如果程序在这种情况下不能正常运行且重复发生,那就表示软件程序有缺陷存在。

6.1  软件测试的目的

软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。

6.2  软件测试的任务

1.寻找Bug;

2.避免软件开发过程中的缺陷;

3.衡量软件的品质;

4.关注用户的需求。

总的目标是:确保软件的质量。

6.3  测试环境

Apache提供的Web服务器Tomcat 6.0使得用户可以在Windows 2000以上操作系统下发布自己设计的动态网页。因此对论坛的调试工作主要是利用Tomcat 6.0的强大功能在本机下完成的。为了在本机下浏览Web页面,首先在创建该系统的站点上(该系统使用的是Web的默认站点)将IP地址设定为127.0.0.1,它的缺省域名值为localhost。然后向IE浏览器输入本地动态网页的URL,Web服务器在收到浏览器传送的URL之后找到网页文件,并在服务器端执行该文件后将此文件以HTML文件的形式返回该浏览器。

6.4  测试环境的配置

6.4.1  创建安装项目

要对一个应用程序进行打包部署,首先需要把Tomcat服务器集成到MyEclipse开发工具:

点击window→preferences,弹出对话框,如图6.1所示。

 

                            图6.1 部署Tomcat图

 

在文本框里输入Tomcat,选择Tomcat选项,选择Tomcat 6.x,并选择Tomcat文件的路径,点击Enable,使这个设置为有效的。如图6.2所示。

 

                            图6.2 添加Tomcat服务器

最后点击确认完成Tomcat服务器的添加。

6.4.2  添加项目输出

选择部署按钮,弹出如下对话框,如图6.3所示。

 

                            图6.3 添加部署项目图

 

 

在Project里选择需要部署的项目之后点击add按钮,弹出如下对话框,如图6.4所示。

 

                            图6.4 完成Tomcat部署

Server选择Tomcat 6.x,最后点击Finish完成部署。

6.4.3  运行项目

首先点击Server窗口,如图6.5所示。

 

                            图6.5 启动Tomcat服务图

右键点击Tomcat 6.x,点击Run Server,则开始运行Tomcat服务器,当控制台不再有新的信息输出时说明部署成功。

6.5  本章小结

本章主要对管理系统进行各个模块的测试,对酒店客房管理系统的设计与实现的测试主要使用黑盒测试法和白盒测试法。第一阶段主要使用白盒测试法,测试的主要内容有:是否能正常登录;是否能正常操作;是否能正常查看各种信息、修改信息、查询和删除信息;第二阶段主要使用黑盒测试法,测试的主要内容是:是否实现了酒店客房管理系统的各项功能等。

本次毕业设计的系统开发结束了,系统已经基本成型,功能也都已实现,此系统实现了对酒店管理系统的用户管理模块,管理员管理模块,可以为一些中小酒店和宾馆使用。

系统开发的过程是采用瀑布型的开发模型,这种开发方式的好处是在软件需求上的沟通确认。因为我已经先确定了软件的各个功能,所以使用这个模型有利于系统的更快更好的实现。

当然系统中也存在很多不足之处,可以在以后版本中进行补充和改进。在这里我做了一些系统的改进思考:

1.灵活性能分析

一方面在各个模块中可以增加自动统计功能,记录各个模块的访问次数,以了解经常使用的功能模块,从而在系统中设置相应的快捷键,方便工作人员操作,增加系统的可用性,另一方面也增加了统计分析的灵活性。

做法如下:可在数据库中再增加一个数据表,用来保存访问每个系统页面的数量,可定期进行数据统计并保存在数据库中。考虑进一步完善操作管理模块以增加程序的灵活性可扩展性和可维护性。

2.功能设计

定义操作用户可进行操作定义和操作项目设置一个操作,可有多个操作项目操作执行,系统自动根据操作项目序号依次执行操作项目,然后将结果保存到操作字段。这个功能的特点是将业务操作简化为一系列操作,系统管理员只需简单定义即可,建立一个新的业务操作逻辑避免将错误业务操作写入程序,增加了灵活性并简化了维护和扩展。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文献

  1. 李平. 基于JSP的动态网页开发技术[J]. 微计算机信息, 2009,(21)
  2. 钱娟. JAVA网络编程的探讨[J]. 煤炭技术, 2012,(11)
  3. 董红杰. 基于JSP的酒店管理系统的设计与实现[D]. 云南大学, 2009
  4. 张敏. 酒店客房信息管理系统[D]. 山东大学, 2010
  5. Che-Chern Lin,Shen-Chien Chen. An easy-to-implement fuzzy expert package with applications using existing Java classes[J]. Expert Systems with Application, 2012,39(1)
  6. Basanta-Val P,Garcia-Valls M,Estevez-Ayres I. A Dual Programming Model for Distributed Real-Time Java[J]. IEEE transactions on industrial informatics, 2011,7(4)
  7. Chih-Chieh Yang,Chung-Kai Chen,Yu-Hao Chang,Kai-Hsin Chung,Jenq-Kuen Lee. Software architecture design for streaming Java RMI[J]. Science of Computer Programming, 2008,70(2/3)
  8. 文斌. 软件工程与软件文档写作[M]. 清华大学出版社, 2005
  9. 王爱平. 软件测试[M]. 清华大学出版社, 2008

[10] 张红强. Oracle数据库实例教程[M]. 天津大学出版社, 2009

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本次设计历时三个月。在本次毕业设计中,能够基本顺利的完成任务,是与闫志中老师和王亚娟老师的耐心指导分不开的。无论是王老师在毕业设计过程中,还是闫老师在论文完成中都给予了我极大的帮助。同时,闫老师和王老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他们勤奋严谨的教学态度也给我留下了极为深刻的印象。我从两位老师身上学到了很多东西。在理论上还是在实践中,我能力都得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此,特向闫志中老师和王亚娟老师表示由衷的感谢。

通过本次毕业设计我锻炼了自己的自学、研究能力,也从中学到不少在企业在课堂上学不到的东西.通过实践我也深刻的体会到软件开发的艰辛及问题解决后的喜悦心情,培养我的独立思考问题的能力,同时也增强了我的理论联系实际的能力,这为自己以后的工作奠定了良好的基础。

通过这次毕业设计的整个开发过程,我对系统开发过程从需求分析到具体功能实现,再到最终测试和维护的理解有了很大的进步,让我对系统开发有了更深层次的认识。现在我的动手能力和独立解决问题的能力也得到了很大的锻炼和提高,这是这次毕业设计最好的收获。

最后,在整个系统开发过程中,我身边的同学和朋友给了我很多的建议,让我很快的确定了系统的业务逻辑。在此我衷心地向他们表示感谢。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

外文原文

Hotel Reservation System Based on the JavaServer Faces Technology

This paper describes implementation of a web-based hotel reservation system which enables users tobook hotel rooms by means of a web browser. The systemis based on JavaServer Faces technology in thepresentation layer, Spring Framework in the service layerand iBatis library for the data access layer.

I. INTRODUCTION

The Hotel Reservation System is a specific type of softwarethat supports, often by means of a web browser, wholeinfrastructure of the hotel for which the system has beendeployed. Its key features are listed below:To search and to book hotel rooms.Tonotify of every event related to a user by sending the email on a given address during the registration process.

To support definition process of each component of the hotel. The components of the hotel are: rooms,promotions, packages, discounts and se rvices.To complete the reservation process by notifying the system about the fact that the guest came to the hotel and received keys to the booked room.

II. JAVASERVER FACES

The user graphical interface is a crucial part of every computer programme with regard to its responsibility for interaction with the users. This part of application should be flexible,which means susceptible to any needed changes and without any doubts, user – friendly. Regrettably, process of developing such user interface in the main requires usually a profusion of developer's work and time, making the whole development process involved and onerous.The most apting technology to this field is JavaServer Faces (JSF). This holistic, component-based solution for longstanding problems facing software developers has a specific goal: to make web development faster and easier by masking a lot of complexities hidden behind this kind of programming.JSF technology is a server-side user interface framework for Java technology-based web applications. The main components of JSF technology are as follows:

Two JavaServer Pages custom tags library for expressing UI components within a JSP page and for wiring components to server-side objects.The user interface created with JSF technology (represented by myUI on the Fig. 1) runs on the server and renders back to the client (in this case the browser).Because web-based applications, must often appease multiple clients (such as desktop browsers, cell phones, and PDAs),JSF has a powerful architecture for displaying components in different ways. As for the browsers, for which JSF is mostly used, the default rendering technology is HTML 4.0, though the others like WML or SVG are also possible.One of the greatest advantages of JSF technology is that it offers a clean separation between behavior and presentation layers.

III. SPRING FRAMEWORK

Spring is a lightweight, inversion of control container, created to address the complexity of enterprise application development.Spring makes possible to use plain JavaBeans to achieve things that were previously only possible with EJBs [10,11].Any Java application can benefit from Spring in terms of simplicity, test-ability, and loose coupling. The Spring Framework contains a lot of features, which are well-organized in seven modules.

When taken as a whole, these modules give everything that is needed to develop enterprise applications, although there is no must to build the application fully on the Spring framework. One can pick and choose only those modules that suit best to the application and ignore the rest. This strategy was chosen for the Hotel Reservation System Since one of the core value propositions of the framework is that of enabling choice by not forcing one to apply any particular architecture, technology or methodology, Spring also provides convenient mechanisms for integration with number of third -party frameworks (also with JSF and iBatis).

IV. APACHE IBATIS DATAMAPPER

Apache iBatis JDBC – based Data Mapper provides simple and flexible way to transport data between relational database and Java, .Net or Ruby application. Contrary to popular Hibernate library, iBatis does not directly tie classes to tables or fields to columns, but instead, it couples objects with results of stored procedures or SQL statements using simple XML descriptor letting the developer to reach only for required data. The iBatis framework can map nearly any database to any object model and is very tolerant of legacy designs, or even bad designs.Simplicity is the main advantage of the iBatis over other frameworks.

The Hotel Reservation System was primarily built upon JSF technology for the user interface along with auxiliary libraries –Spring and iBatis. The application architecture is presented in Fig. 3.The composition of the system is modular. Each layer is separated with and appropriate interface layer. Such solution makes the architecture not only more error -resistant but also more flexible for changes. The presentation layer consists of the graphical user interface written in the JSF technology andunderlying backing beans objects. It communicates with the Service layer through the service interfaces.Service layer is the central business part of the system where, on the basis of the user input data, proper decisions are made. It also translates input data into explicit form understood for the Data access layer, with which communication takes place by means of Data access interface layer.The Data access layer cooperates with Data Mapper layer and is responsible for data exchange with database.The Data Mapper layer talks via JDBC to database to ask required data. This is a layer where iBatis Data Mapper plays the main role.

V. JSF - SPRING INTEGRATION

In a nutshell, JSF – Spring integration makes Spring managed beans visible as variables to JSF, just as if the Spring beans are configured as JSF managed beans.Before diving into the integration specifics of JavaServer Faces,the general integration step for any web framework must be set forth.All that need to be done, is to declare ContextLoaderListener in the standard JEE servlet web.xml deployment descriptor. This listener initializes the Spring's WebApplicationContext that contains all of the business beans in the application. (Fig. 4).The second step in the integration between Spring and JSF is specific just for JSF. The key class used in this process isDelegatingVariableResolver. To configure this variable the faces-context.xml file must be edited. After opening <faces -config> tag <application> tag must be added and within it the <variable-resolver> pointing to the Spring's DelegatingVariable Resolver must be put. The example faces -config.xml file is presented in. The DelegatingVariableResolver delegates value lookups to the default resolver of the underlying JSF implementation, and then going to the Spring's business context WebApplicationContext. This allows to easily inject dependencies into one's JSF-managed beans.

Example of faces-config.xml file from Hotel RVI. JSF AND GETMETHOD.The JSF only recommended method for sending input data from an online form to an application server is the POST method,though sometimes there is a strong need for use the GET method instead. In the Hotel Reservati on System the GET method is used during the registration process for bringing about user account activation.The common way to implement the GET method is to create a special filter which can manipulate the header or contents (or both) of a request or response.To put GET method into operation, in case of JavaServer Faces,the following algorithm must be fulfilled in the body of thefilter:

1. Get parameters from the request.

2. Create appropriate backing bean object accordingly to the view that will be used further.

3. Store the backing bean object in the current session.

4. Set changed JSF context as current.

5. Create view and store it in the JSF context.

6. Execute backing beans methods.

The Hotel Reservation System was also based on the Spring library, hence some changes to the raw algorithm were necessary.The foremost method for any filter is doFilter() where the proper filtration happens .

public void doFilter(ServletRequest request,

ServletResponse response,

FilterChain chain)throws IOException,

ServletException {

FacesContext facesContext =

getFacesContext(request, response);

if (facesContext != null){

request.getRequestDispatcher(

facesContext.getViewRoot().getViewId()).

forward(request, response);

}else{

chain.doFilter(request, response);

}

}

The doFilter method from GET filter implementation As it may be seen on Fig. 6, an additional function implementing the presented algorithm was used to keep the source code clear and easy-to-read.Create appropriate backing bean object.Almost all backing beans from Hotel Reservation System have at least one property of Spring managed -bean origin. Because of that, it is necessary to set this property after backing bean object creation.

WebApplicationContext wac =WebApplicationContextUtils.

getRequiredWebApplicationContext

(servletContext);

RegisterService registerService =

(RegisterService)

wac.getBean("registerService");

ConfirmBean confirmBean = new ConfirmBean();

confirmBean.

setRegisterService(registerService);

Creating backing bean object and setting spring –origin property.Getting Spring managed -bean object requires operating on Spring's WebApplicationContext object that is initialised during the server start-up.Set changed JSFes context as current.When storing backing bean object in the session the whole Faces context becomes changed, therefore it must be set as current in order all modifications take place .

FacesContextFactory contextFactory =(FacesContextFactory)

FactoryFinder.getFactory(

FactoryFinder.FACES_CONTEXT_FACTORY);

LifecycleFactory lifecycleFactory =(LifecycleFactory)FactoryFinder.

getFactory(FactoryFinder.

LIFECYCLE_FACTORY);

Lifecycle lifecycle =lifecycleFactory.

getLifecycle(LifecycleFactory.

DEFAULT_LIFECYCLE);

facesContext = contextFactory.

getFacesContext (servletContext, req,res, lifecycle);

ProtectedFacesContext.

setFacesContextAsCurrentInstance

(facesContext);

Setting JSF context as current Before the actual setting context into current, it is indispensable to grab Lifecycle object. Lifecycle manages the processing of the entire lifecycle of a particular JSF request. It is responsible for executing all of the phases that have been defined by the JSF specification, in the specified order, unless otherwise directed by activities that occurred during the execution of each phase. An instance of Lifecycle is created by calling the getLifecycle() method of LifecycleFactory, for a specified lifecycle identifier. Because this instance is shared across multiple simultaneous requests, it must be implemented in a thread -safe manner. Using the current Lifecycle object along with ServletContext,HttpServletReqest and HttpServletResponse objects the FacesContext can be updated and becomes up to date.

Create view and store it in the JSF context.After making Faces context actual, the new view is supposed to be created and added to this context, nevertheless it is n ot possible to do it with usage of 'new' operator, instead it has to be done in an indirect manner.

UIViewRoot view = facesContext.

getApplication().

getViewHandler().

createView(facesContext,

"/confirm/register.jsp" );

facesContext.setViewRoot(view);

Creating new view and stroing it in Faces context The createView() method of ViewHandler object constructs and return a new UIViewRoot instance initialized with information from the argument FacesContext and viewId . The viewed parameter is always String variable representing (relative to /WEB-INF/ directory) path where the definition file is located.As shown in Fig. 9 the definition of the view is placed in ordinary JSP file and is located in subdirectory of a WEB-INF directory.Executing backing beans methods The last step is the actual execution of methods of the underlying, proper to created view backing bean object. This example of the filter for the GET method was based upon one used in the Hotel Reservation System, which works as a registration confirmation tool, so in the end, the method of responsibility for the hotel management confirmation would be and should be      invoked:confirmBean.confirmRegistration(userId);

VII. CONCLUSIONS

The Hotel Reservation System is developed application designed accordingly to the modern programming trends with usage of technologies like JavaServer Faces, Spring Framework and iBatis Data Mapper. Its modular architecture makes the application more error-resistant and flexible for any changes therefore easy to add new functionality. The common problem of sending input data through the GET method has also been solved.System is easy to install and use and the three –module composition puts work-division pattern into operation.This research was supported by the Technical University of Lodz Grant K-25/1/2007/Dz.St.

 

 

 

 

 

 

 

 

 

 

 

中文翻译

基于JavaServer Faces技术的酒店预订系统

本文介绍了基于网络的酒店预订系统如何利用JavaServer Faces技术和Spring框架访问系统通过Web浏览器为用户预定酒店客房。

一.引言

酒店预订系统是一个支持特定类型功能的软件,往往通过Web浏览器作为承载手段。其主要特点为寻找并发送一个在登记过程中给定的地址的电子邮件来预订酒店相应的房间。

为了支持各酒店的组件定义的过程。酒店的组成部分是:房间,促销,包装,折扣,完成的通知等有关的事实,客人来到酒店,并收到钥匙,以及房间预订系统预订的过程。

二.JavaServer Faces

图形用户界面是每一个计算机程序的关键部分,其承载与用户的交互的责任。这应该是灵活的应用程序的一部分,这意味着容易因用户需求产生更改,但是无疑的可以增加用户友的好性。令人遗憾的是,发展中的主要过程需要好的用户界面,通常造成的是开发人员的工作和时间泛滥,并且使整个开发过程涉及JavaServer Faces(JSF)这一领域的技术。这种整体的,基于构件的,软件开发人员所面临的长期问题的解决有一个具体的目标:使网站发展速度和复杂性掩盖了很多种类的技术。JSF技术更容易隐藏的是一个服务器的端用户对基于Java技术的Web应用程序界面框架。 JSF的技术的主要组成部分如下:

以UI组件为代表的并且管理他们,处理事件,执行服务器交互和数据转换,定义页面导航,支持国际和普及,并为所有这些功能提供扩可展性的技术支持。

两个JavaServer Pages定制标记库在JSP页面表示UI组件和布线组件的服务器端的用户界面与JSF技术在服务器上运行,并返回客户端(在这种情况下浏览器)由于基于Web的应用程序。如桌面浏览器,手机和PDA(多个客户端),JSF的已经以不同的方式展示了强大的组件体系结构。至于浏览器,因为它主要用于JSF,默认的渲染技术是HTML 4.0,尽管像其他的WML或SVG也有可能。JSF技术的最大优势之一是,它提供了一个干净的分离行为层和表示层和表示层的架构。

三.Spring框架

Spring是一个轻量级,控制反转容器,它的创建解决了企业应用发展.Spring的复杂性使得可以使用普通的JavaBeans实现的东西,以前只可能与EJB的相关联。任何Java应用程序能够受益于Spring,简单来说,测试能力和松散的耦合。

当作为一个整体,这些模块提供的一切需要发展的企业来进行应用,虽然不一定要有充分的构建Spring框架的应用程序。人们可以从中挑选适合的模块,只有那些最好的应用,而忽略其他方面。这一战略是为酒店预订系统选择了自构框架的核心价值主张之一,并且是社会的选择方向,没有强迫任何一个适用于特定的架构,技术或方法,Spring还提供了与第三个数字一体化的便利机制 - 框架(也与JSF和iBatis)。

四.iBATIS DataMapper的APACHE

iBatis的JDBC在apache - 数据库和Java基于数据映射器提供了简单和灵活的运输方式之间的关系,.Net或Ruby应用程序的数据。与流行的Hibernate库,iBatis的并没有直接配合,以表或列或字段,而是,它的存储过程或使用简单的XML描述符开始的开发,以达到对所需数据的应用。产生只有SQL语句的结果对象。 iBatis的框架几乎任何数据库可以映射到任何对象模型,是非常传统的设计,甚至坏designs.Simplicity宽容,是与其他框架相比iBatis的主要优点。

酒店预订系统,主要是建立基于JSF技术的同时辅助库,Spring与iBATIS的用户界面。应用程序体系结构,该系统的组成模块。每一层和适当的分隔与界面层。这种解决方案不仅能降低更多的错误发生可能性,也能产生更灵活的变化。表示层组成的图形用户在JSF支持bean对象技术编写的界面。它传达的是在那里,对用户输入数据的基础上,适当的决定是系统的核心业务的一部分,通过服务层。这也意味着为数据访问层明确了解的形式,而沟通需要通过数据访问接口是指数据访问层与数据输入数据映射层进行合作,并与数据库上进行数据交换的数据映射层负责通过JDBC数据库谈判要求所需的数据。这是一个在iBatis的数据映射层起着主要作用。

五.JSF的Spring集成

概括地说,JSF的spring的整合使Spring管理类在JSF变量可见,就像spring为JSF管理beans到JavaServer Faces,任何Web框架综合集成一体化的具体步骤,必须配置forth.All需要做的事,是标准的J2EE servlet的ContextLoaderListener的web.xml部署文件。这个监听器初始化Spring的WebApplicationContext的,它包含所有在应用程序的业务类。在spring和JSF之间的整合只是第二个步骤是具体为JSF。课堂上使用的关键在这个过程中。要配置这个变量在faces - context.xml文件必须被编辑。开幕后<faces -config>标签<应用程式必须加上标签,并在它的<variable-resolver>指向Spring的DelegatingVariable分解必须付诸表决。这个例子的faces - config.xml文件。代表们的值查找到相关的JSF实现的默认解析器,然后到Spring的业务范围内的WebApplicationContext。这使得很容易注入一的JSF管理的bean依赖关系。

示例的faces-config.xml文件从酒店冗余接点JSF只建议应用的一个利用表格获取输入数据到应用服务器的方法是POST方法,虽然有时也有一种强烈的需要使用GET方法,但却不常用。在关于酒店系统使用GET方法是在有关用户帐户带来共同的方式来实施登记过程中使用GET方法是创建一个特殊的过滤器,可以操纵头或内容(或两者)的请求或付诸实施的GET方法在JavaServer Faces的,下面的算法的情况下,必须在过滤器下应用:

1.从请求参数。

2.建立适当的支持bean的相应的对象认为将继续使用。

3.存储在本届会议上支持bean的对象。

4.设置更改为当前JSF上下文。

5.创建视图和存储它在JSF上下文。

6.支持bean的方法执行。

六.具体配置文件

酒店预订系统也基于Spring库,因此一些原始算法变化后成为了在适当过滤情况下的最适当方法。在doFilter方法的GET由于从上图可以看到过滤器的执行情况。额外的函数执行该算法被用于保持源代码的清晰和易于创造适当类从酒店预订系统的所有支持的类都应该至少有一个spring的财产托管bean。由于这个原因,有必要支持的bean对象后,设置创建此属性。

支持创建对象和设置spring托管bean的对象需要在Spring的WebApplicationContext的对象,它是在启动up.Set改为current.支持存储在会话Bean对象JSFes整个服务器初始化经营范围面临环境变得改变,因此它必须设置,以便与目前发生的所有修改。

JSF的设置作为当前的实际环境中之前将目前的情况下,它是不可或缺的攫取生命周期的对象。生命周期管理的特定JSF请求的整个生命周期处理。它负责执行的已经由JSF规范中定义的阶段,在指定的顺序,所有负责任的,除非另有活动,在每个阶段的执行导演发生。生命周期的一个实例是创建调用getLifecycle()的LifecycleFactory方法,为一个指定的生命周期标识符。因为这种情况是在多个并发请求共享的,它必须是在一个线程安全的方式实现。利用当前的生命周期随着ServletContext的对象,HttpServletReqest和HttpServletResponse对象的FacesContext中可以更新,成为最新的。

创建意见,并在JSF决策方面面临的实际context.After储存,新的看法应该是创建并添加到这个方面,但它是被可以做到“新”的运营商使用它,它反而要以间接方式进行。

创建新的观点和广泛的在工作面范围内的CreateView的()的方法,它构造的ViewHandler对象并返回一个新的UI ViewRoot实例资料和论据FacesContext中的viewId初始化。该效果参数始终是String变量代表(相对的/ WEB INF /目录)路径定义文件如图所示located。视图的定义是放置在普通的JSP文件,并在一个WEB INF文件目录测试支持bean方法的最后一步是位于子目录中的底层,以创造适当的支持bean的方法的实际执行对象的看法。这对于GET方法过滤的例子是基于在酒店预订系统,它作为一个工程的注册确认工具之一,所以最后,该方法负责确认应被调用(userId的)。

七.结论

酒店预订系统,开发相应的设计与JavaServer Faces的一样,Spring框架和iBatis数据映射技术的使用现代编程应用的趋势。它的模块化结构使应用程序更多的错误性和灵活的任何变化,因此容易地添加新的功能。派遣通过GET方法还solved.System输入数据常见的问题是易于安装和使用,这三个模块组成放入operation.这个研究工作分工格局是由罗兹大学授予的K - 25/1/2007/Dz.St技术支持的。

猜你喜欢

转载自blog.csdn.net/weixin_55459367/article/details/113919516
今日推荐