关键词:酒店客房管理系统;JSP;SQL Server2005;B/S模式
随着人员流动规模的不断扩大,酒店数量的急剧增加,有关客房管理的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有酒店客房订购管理系统来提高客房管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。
传统手工的客房信息管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了客房信息管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。
酒店客房系统系统对酒店加强客房信息管理有着极其重要的作用,就一所客房数量较大的酒店来说,它的设计内容非常复杂而且繁多,比如拥有客房信息管理、客房类别信息管理、预定信息管理等功能,而且设计的模块也很多,比如用户信息管理模块、客房类型管理模块、客房信息管理模块、客房经营管理模块、客户信息查询模块、经营状况统计模块等等。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已被人们深刻认识到,它已进入人类社会的各个领域并发挥着越来越重要的作用。并且深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。
今天,计算机已经成为我们学习和工作的得力助手;计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率;
第四,计算机可以使敏感信息更加安全,等等。
我作为一个计算机应用的大专生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我三年的所学编制出一个实用的程序来帮助学进行更有效的酒店客房预定系统。
归纳起来,好处大约有以下几点:
1.可以在计算机上管理酒店客房;
2.只需一名录入员即可操作本系统,节省大量人力;
3.可以迅速查到所需信息。
现在我国还有许多的酒店客房的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,采用传统的纸介质的管理模式,还主要依赖于人力手工的操作,并归档编号保存,事后如需查阅,则要人工从浩瀚的资料中查找,既费时费力又容易出错。作为保存资料的介质—纸张,又有容易被火烧毁,易被虫蛀,易发霉变质等等缺点。在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。这就急需有一套全新的高效的管理系统,由计算机来代替手工完成酒店客房预定的管理。
本论文主要有六章内容:
第一章主要对开发基于JSP的酒店客房管理系统的背景及其意义进行了讲解,使读者了解开发的目的及重要性。
第二章介绍开发基于JSP的酒店客房管理系统用到的相关技术。包括:JSP的优点、工作原理、运行环境;C/S与B/S模式的比较,使用B/S模式的优势;SQL Server 数据库数据体系结构,SQL语言的组成,对数据库的具体操作等。
第三章说明了开发基于JSP的酒店客房管理系统的需求,系统的运行环境以及各个功能模块的实现等。
第四章主要讲的是系统各模块的实现,主要有:首页的实现,前台的实现,后台的实现等。
第五章是对系统进行测试。主要对功能,可用性,安全性进行了基本的测试。这么做主要是为了确保本系统的稳定性和安全性。
JSP是由sunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(.htm,.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。
JSP全名为java server page,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
Microsoft SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。Microsoft SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 Microsoft SQL Server 2005 数据引擎是该企业数据管理解决方案的核心。此外 Microsoft SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。 与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 Microsoft SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,Microsoft SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。 Microsoft SQL Server 2005能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到SQL Server 2005实例。SQL Server2005为这些环境提供了全面的保护,具有防止问题发生的安全措施,例如,可以防止多个用户试图同时更新相同的数据。SQL Server 2005还在多个用户之间有效地分配可用资源,比如内存、网络带宽和磁盘I/O。超大型Internet站点可将其数据分开存放在多台服务器上,从而使处理负荷分散到多台计算机上,使站点能为成千上万的并发用户提供服务。
需求分析阶段是酒店客房管理系统开发最重要的阶段。开发者首先要了解和澄清用户的需求,然后严格地定义该系统的需求规格说明书。这里我们将需求分析分为两个过程,一是理解需求,二是分析需求,下面分别讲解。
1.理解需求
理解需求是在问题及其最终解决方案之间架设桥梁的第一步。开发者只有和客户充分理解了需求之后才能开始设计系统,否则,对需求定义的任何改进,在设计上都必须大量的返工。下面是经过双方调研后得到的需求规格说明。
(1) 该系统的用户有三种类型:一是管理员,二是服务员,三是客户,三者应具有不同的权限。
(2) 系统需对用户登录进行管理。使用各功能模块时,系统会验证用户身份的有效性,否则要求用户重新登录。另外,允许用户对自己的密码进行修改。
(3) 系统应提供客房的分类管理功能,可分类制订客房面积、价格、是否配备空调等客房类型,对不同标准的客房进行有效管理。系统可实现对客房信息的查询,添加、删除以及修改。
(4) 系统显示客房入住状态。
(5) 系统的客户端在Windows平台下运行,服务器端可在Windows平台下运行。
2.需求分析
(1) 需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出系统的功能模块,即定义用例。这个步骤是对理解需求的升华,直接关系到该系统的质量。
(2) 经过开发者同客户的需求分析后,确定酒店客房管理系统的功能模块(用例)包括:
● 用户信息管理
● 客房类型管理
● 客房信息管理
● 客户信息查询
● 经营状况统计
酒店客房管理系统采用Web方式,由前台和后台管理两个部分组成。前台作为与用户直接交互的可视化界面,由于使用方便,能将系统的各个功能提供给用户,以帮助用户进行客房管理。
为了确保客户和酒店的信息具有更好的安全性,前台管理和后台管理是分离的。前台的各管理模块需要经过权限授权才可以使用,我们为此设计了三个角色:一是酒店管理员,二是前台服务员,三是客户。其中:
1.酒店管理员享有最高权限,可以使用酒店客房管理系统所提供的所有功能,包括员工信息管理、客房类型管理、客房信息管理、客房经营管理、客户信息查询、酒店简介、酒店新闻、个人密码修改等功能。
2.前台服务员的主要职能是负责订房和退房,以及查询入住的客户信息。所有该角色只可以使用部分功能,包括客房经营管理、客户信息查询、个人密码修改以及注销功能。
3. 客户能够注册信息、预订客房、查看信息。
本系统主要由数据库系统作为支持,后台管理的维护工作主要由系统管理员进行,包括完成对各个数据表单的维护、数据库的备份及恢复等工作,本实例我们选用的数据库系统为Microsoft SQL Server 2005。
网站开发环境:MyEclipse 8.5集成开发环境。
网站开发语言:JSP+JAVA。
网站后台数据库:Microsoft SQL Server 2005。
开发环境运行平台:Windows XP/Windows 7.
3.3.1 设计目标
本系统是根据酒店日常管理的需求进行开发设计的,主要实现以下目标。
1.实现管理人员和前台服务员的登录不同界面以及拥有不同权限的功能。
2.实现客户信息,客房类型,客房信息,用户信息,业务记录的查询的功能。
3.实现客房信息,用户信息和客房类型的增加的功能。
4.实现客房信息,用户信息,客房类型,客房信息的修改的功能。
5.实现客房信息,用户信息的删除的功能。

图3-1酒店客房管理系统框架流程
3.3.2 客房管理系统前台的设计

图3-2 客户登陆管理
3.3.3 操作员管理系统的设计
操作员管理流程图,如图3-3所示,该流程系统后台部分,客房信息页面主要是负责所有客房信息的查询;客户页面主要是负责所有客户信息的添加和查询;客户-客房管理页面主要是负责客房的预订、入住、退房;账单查询页面主要用于前台服务员对于账单的查询。

图3-3操作员登陆管理
3.3.4 酒店管理员管理系统的设计
管理员管理系统流程图,如图3-4所示,该流程系统后台部分,是由酒店管理员负责管理的,分为用户信息,客房类型,客房信息,业务记录,个人信息管理、酒店信息几个模块,其中个人信息模块前后台都是有在3.3.3中已给出说明。用户信息模块主要的操作有:增,删,改,查。客房类型模块的主要操作有:增,改,查。客房信息模块的主要操作有:删,改,查。而业务记录模块主要用于管理员对于业务的查询。

图3-4酒店管理员管理系统
本系统数据库采用Microsoft SQL Server 2005数据库,系统数据库中包含9张数据表。下面分别给出主要数据表的结构。
从读者角度出发,为使读者对本系统后台的数据库中数据表有一个更清晰的认识,在此特别制作了一个数据类型的表格,其中包含了对系统中所有数据表的相关描述。
数据库JdglSys包含以下9个表:所有客房信息表(dbo.cxx)、客房信息表(dbo.fxx)、楼房类型表(dbo.lxx)、结账信息表(dbo.jsxx)、客户注册信息表(dbo.sxx)、酒店简介(dbo.gg)、酒店新闻信息(dbo.news)、操作员信息(dbo.linggao)、管理员信息(dbo.guanli)。
1.所有客房信息表(dbo.cxx)用来保存使用该系统的酒店客房的信息,如门牌号、所在楼、床位、入住状态、入住客户名、日租金、入住时间等。如表3.1所示。
表3.1
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| cmc | varchar(50) | no |
| fmc | varchar(50) | no |
| lmc | varchar(50) | no |
| czt | varchar(50) | yes |
| sid | varchar(50) | yes |
| dj | varchar(50) | yes |
| rzsj | varchar(50) | yes |
| ydsj | varchar(50) | yes |
2.客房信息表(dbo.fxx)用来保存在酒店订房的客房的基本信息,如客房号、所在楼名、床位、客房类型、客房配置等。如表3.2所示。
表3.2
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| fmc | varchar(50) | no |
| lmc | varchar(50) | no |
| frs | varchar(50) | yes |
| fxb | varchar(50) | yes |
| fbz | varchar(50) | yes |
3.楼房类型表(dbo.lxx)用来保存酒店所有楼房的基本信息,如楼房名、日租金、类型等。如表3.3所示。
表3.3
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| lmc | varchar(50) | no |
| lfs | varchar(50) | no |
| lbz | varchar(50) | no |
4.结账信息表(dbo.jsxx)用来保存酒店所有客房的相关信息,如楼房名、客房号,客房床位,入住人、入住时间、离开时间、结账数额等。如表3.4所示。
表3.4
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| id | Numeric(18,0) | no |
| lmc | varchar(50) | yes |
| fmc | varchar(50) | yes |
| cmc | varchar(50) | yes |
| xm | varchar(50) | yes |
| rzsj | varchar(50) | yes |
| tfsj | varchar(50) | yes |
| je | varchar(50) | yes |
5.客户注册信息表(dbo.sxx)用来保存目前酒店客户的身份证号、姓名、性别、用户名等。如表3.5所示。
表3.5
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| sid | Numeric(18,0) | no |
| Sname | varchar(50) | yes |
| sxb | varchar(50) | yes |
| sbj | varchar(50) | yes |
| ssfz | varchar(50) | yes |
6.操作员信息(dbo.linggao)用来保存名字、密码等。如表3.6所示。
表3.6
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| username | varchar(18,0) | no |
| password | varchar(50) | no |
表3.7
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| username | varchar(18,0) | no |
| password | varchar(50) | no |
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| bh | varchar(18,0) | no |
| bt | varchar(50) | yes |
| nr | varchar(50) | yes |
| fbsj | varchar(50) | yes |
| lx | varchar(50) | yes |
| 列名 | 数据类型及长度 | 允许空 |
|---|---|---|
| ggnr | varchar(18,0) | no |
| fbsj | datetime | no |
前面已介绍过系统共分三类用户:客户、酒店管理员和前台服务员。当用户进入酒店管理系统首页后,就会显示以下为酒店管理系统的首页。如图4-1。
图4-1酒店管理系统的首页
客户进入首页后,点击用户注册可跳转到图4-2用户注册页面,主要用于记录客户信息。

图4-2 客户注册
客房管理系统页面,如图4-3所示,当客户正确登录时即要跳转到该页面。该页面显示客户预订登记客房、查看客房相关信息、个人密码修改等功能。


图4-2 客户界面

点击“客人预订登记”可跳转到如图4-4的客房信息表,点击预定可跳转到相应的

图4-5选择床位信息页面。
点击预定客房查看可跳转到所选客房的信息页面如图3-6。

图4-6 预订客房查看页面
点击“客人预订登记”可跳转到如图4-3的客房信息表,在查询栏中填写相应的门牌号可查询该客房信息如图4-7。

图4-7 入住情况查询
4.3客房管理系统后台的实现
4.3.1 客房管理系统后台概述
客房管理系统后台页面,如图4-8所示。

图4-8 后台页面
当酒店管理员正确登录时即可跳转到4-9操作员页面页面。

图4-9 操作员页面

图4-10 管理员页面
4.3.2 客房管理系统后台操作员实现过程
客户信息是酒店管理员管理酒店员工用的,可实现信息的增加,删除,修改,查询。客房业务、客房记录、客户结账等主要用于管理员对于业务和客房的查询。
操作员通过操作员界面(如图4-9)点击会员信息管理显示图4-11会员信息管理页面

图4-11会员信息管理页面
当点击新添会员,则显示如图4-12信息表的页面。

图4-12 新添会员信息
点击结账退房管理可跳转到图4-13页面

图4-13结账退房管理
点击预订客房管理可跳转到预订客房管理页面,如图4-14所示

图4-14预订客房管理
点击结账单查询可跳转到结账信息查询,如图4-15所示

图4-15结账单查询
点击客房使用情况查询可跳转到房间使用情况查询如图4-16所示

图4-16房间使用状态
点击会员当前入住情况可跳转到入住情况查询如图4-17所示

图4-17入住情况
4.3.3 客房管理系统后台管理员实现过程
管理员正确登录后显示页面如图4-10所示,其中管理员界面中会员信息管理、预定入住登记、客人入住登记、结账退房管理、账单查询等功能与操作员界面所显示的功能一样。其中基础信息管理操作中包括新增酒店楼信息(图4-18)、酒店大楼信息(图4-19)、房间基础信息(图4-20)等功能。

图4-18 新增酒楼信息

图4-19 酒楼信息管理

图4-20 酒店房间信息管理
在下面的业务操作中添加了操作人员管理(图2-21)等功能,点击酒店网站信息可跳转到酒店信息管理页面如图2-22所示

图4-21 操作人员管理

图4-22 酒店信息管理
参考文献
[1] 周亚辉. Java数据库系统项目开发实践[M]. 北京: 科学出版社, 2007
[2] 王能斌. 数据库系统教程(第2版)(上册)[M]. 北京:电子工业出版社, 2008
[3] 刘晓华, 张健, 周慧贞. JSP应用开发详解(第三版)[M]. 北京: 电子工业出版社, 2007
[4] 任新见. JSP教程. 飞思科技产品研发中心[M]. 北京: 电子工业出版社, 2002
[5] 赵松涛. 中文版SQL Server 2005应用及实例集锦[M]. 北京: 人民邮电出版社,2005
[6] 萨师煊, 王珊. 数据库系统概论[M]. 北京:高等教育出版社, 2001
[7] 赵增敏. JSP动态网页设计[M]. 北京: 电子工业出版社, 2003
[8] 邓文渊, 陈惠贞, 陈俊华. 挑战JSP与网页数据库设计[M]. 北京: 中国铁路出版社,2004
[9] 宣小平. JSP数据库系统开发实例导航[M]. 北京:人民邮电出版社, 2003
[10] 罗娟. Web与数据库技术[J]. 计算机工程.1998,24(8)
[11] 清汉计算机工作室. JSP开发实例[M]. 北京: 机械工业出版社, 20001
[12] 徐进明. JSP网站开发技术[M]. 北京: 中国工业出版社, 2003.2
[13] 汤承林, 徐春艳, 刘三满. SQL Server数据库应用基础与实现[M]. 北京: 电子工业出版社, 2008. 5
public class DB {
// JDBC方式连接数据库
String sDBDriver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;
String sConnStr = “jdbc:sqlserver://localhost:1433;databaseName=mydorm”;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public DB() {
try {
Class.forName(sDBDriver);
} catch (java.lang.ClassNotFoundException e) {
System.err.println("数据库驱动注册错误信息: " + e.getMessage());
}
}
// 执行SQL查询语句
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr, "sa", "123");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println("执行SQL查询语句错误,错误信息: " + ex.getMessage());
}
return rs;
}
// 执行SQL更新语句
public void executeUpdate(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr, "sa", "123");
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException ex) {
System.err.println("执行SQL更新语句错误,错误信息: " + ex.getMessage());
}
}
// 关闭数据库连接
public void close() {
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
System.err.println("执行关闭数据库对象失败,错误信息: " + e.getMessage());
}
}
}