摘要
随着国内经济形势持续发展,国内酒店业进入难得的发展高峰期,使得中外资本家纷纷将目光投向中低端市场。然而,中国酒店业的区域结构不合理、竞争手段不足和市场对经济型酒店的需求日益显露,以及2008年北京奥运会、2010年上海世界博览会对酒店业的积极影响等诸多力量的交织,使得中国酒店市场演变成了一个淘金圣地。 在信息高度发达的今天,酒店制度的改革已经成为一种更广泛、全面的潮流。该“酒店房间预约系统设计”是基于Access 2003数据库、ASP程序设计的基础上实现的。该系统可以保存和处理多个酒店的名称、星级和地址等基本信息以及每个酒店的房间信息,同时可以保存和处理客户的订单信息,并且对于这些系统提供了相应的查询功能,而且有完善的多用户安全功能。保证在我国经济持续发展、信息时代日益更新的今天,服务行业依然蒸蒸日上。
前言
随着计算机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。各类行业在日常经营管理各个方面也在悄悄地走向规范化和网络化。酒店客房管理的信息化程度体现在将计算机及网络与信息技术应用于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使酒店客房管理更先进、更高效、更科学,信息交流更迅速。
酒店房间预约系统是酒店经营管理中不可缺少的部分,它的内容对于经营的决策者和管理者来说都至关重要,所以酒店房间预约系统应该能够为用户提供充足的信息和快捷的预约手段。酒店预约基本都是需要通过电话或客户直接到酒店进行,由于预约记录多是人为完成,容易造成失误和遗漏,管理效率比较低,特别是顾客比较多的季节,传统的预约方式已经基本不能满足要求。
远程预约系统是一种全新的网络预约方式,通过互联网突破了时间和空间限制实现了便捷快速的预约与管理功能。本系统具有房间信息查询、预约房间和取消预约等功能。
第二章 编程环境基础知识
2.1 ASP基础概述
ASP,全称ActiveX Server Page,它提供了一个在服务器端执行脚本指令(包括HTML、VBScript、java script等),通过这种环境,用户可以创建和运行Web应用程序。 ASP文件就是在普通的HTML文件中嵌入VBScript或java script脚本语言。
ASP是一个服务器端脚本编写环境,用于创建动态的交互式Web服务器应用程序。在ASP动态网页中,不仅可以包含服务器端代码,也可以使用ASP内建对象和服务器组件,此外还可以包含服务器端文件。
2.2 ASP脚本语言——VBScript
2.2.1 VBScript的概述
VBScript是程序开发语言Visual Basic家族的最新成员,可以将灵活的脚本应用于更广泛的领域,包括Microsoft Internet Explorer中的Web客户端脚本和Microsoft Internet Information Server中的Web服务器端脚本。 VBScript脚本语言有以下主要特点: (1) 易学易用。 (2) ActiveX脚本。 (3) 其他应用程序和浏览器中的VBScript。
2.2.2 VBScript 代码的基本格式
一般的ASP程序都是将VBScript代码放在服务器端执行的,有两种方法:
方法一:<% VBScript 代码 %>
方法二:<Script Language=”VBScript” Runat=”Server”>
VBScript 代码
</Script>
2.2.3 条件语句
1.If ……Then…… Else语句用于判断条件是Ture或False,并且根据判断结果指定要运行的语句。
2.Select Case 语句是If…… Then…… Else…… EndIf 语句多条件时的另外一种形式,其语句的语法如下:
Select Case变量或表达示
2.2.4循环语句
1.For……Next 循环是一种强制型的循环,用语将语句块运行指定的次数。在循环体中使用计数器变量,该变量随每次循环增加或减少。
2.Do ……Loop循环
Do循环也是根据某个条件是否成立来决定能否执行相应的循环体部分。与while循环不同的是:While循环只能在初始位置检查条件是否成立;而Do循环可以有两种格式,既可以在初始位置检验条件是否成立,也可以在执行一遍循环体后的结束位置判断条件是否成立,能否进入下一次循环。
3.While……Wend语句
While循环用于对条件进行判断,如果条件成立,可以循环执行循环体,直到循环结束为止。结束循环的条件是用于判断的条件不成立。与For循环最大的差别在于:For循环用于循环次数己知的情况,执行一定次数后即可结束循环;而While循环用于不知道循环次数,但可以用一个条件来进行判断是否结束。所以对于循环次数有限,可以用条件限制的情况,使用While循环较好,且使用比较灵活。
4.For Each...Next循环
该语句对集合中的每个元素进行一次循环,直到集合中无更多的元素时,执行Next后面的语句。
2.2.5 过程
在VBScript中将过程分为两类:子过程和函数过程。子过程也称为Sub过程,函数过程也称为 Function过程。二者的区别在于:Sub过程没有返回值,相当于其他程语言中的过程;Function过程有返回值,相当于其他编程语言中的函数。
1.Sub过程的声明
Sub过程的声明语法: [Public][Private] Sub 过程名[(参数表)] [语句块] [Exit Sub] [语句块] End Sub
2.Function过程
是由一系列VBScript语句所组成,这些语句是以Function语句作为该过程的开头标记,以End Function语句作为结束。
Function过程的声明语法:
[Public] [ Private] Function 过程名[(参数表)] [语句块] [过程=表达式] [Exit Function] [语句块] [过程=表达式] End Function
与Sub过程的基本相同,不同之处是: 1) 函数有返回值。它的返回值就是通过 “过程=表达式”语句传递的。 2) 可以在函数内部任何地方把返回值赋给函数名,而且允许存在任意次这样的赋值。如果不指定返回值,那么数值函数返回0,字符串函数返回“ ”,对象函数返回Nothing。
ASP内置基本对象
Request 负责从用户端接收信息
Response负责传送信息给用户
Session 负责存储个别用户的信息,以便重复使用
Application 负责存储数据以供多个用户重复使用
Server 负责控制ASP的运行环境
ObjectContext 供ASP程序直接配合 Microsoft Transaction Server进行分布式的事务处理
需求分析
3.1 功能需求
酒店预约基本都是需要通过电话或客户直接到酒店进行,由于预约记录多是人为完成,容易造成失误和遗漏,管理效率比较低,特别是顾客比较多的季节,传统的预约方式已经基本不能满足要求。
远程预约系统是一种全新的网络预约方式,通过互联网突破了时间和空间限制实现了便捷快速的预约与管理功能。本系统具有房间信息查询、预约房间和取消预约等功能。
本酒店房间预约系统按照用户部分和管理员部分划分了两块,它们所实现的功能如下。
用户部分
用户注册:检测用户提供的信息并注册用户。
用户登陆:通过用户名和密码核实登陆用户身份。
预约房间:预约某个时间的某一房间。
查询预约信息:查询该用户的预约信息。
取消房间预约:取消某一到期且未付款的有效预约。
查询房间信息:按照用户提出的条件列出查询结果。
给站长留言:检查用户留言的正确性并保存。
注销用户:结束用户会话,保证安全。
管理员部分
阅览用户留言:调用用户留言并显示。
删除无用留言:删除需要处理的留言。
添加房间:添加新的房间,注册详细信息。
删除房间:根据用户提交的信息删除指定的房间。
修改房间信息:对于存在的某房间信息进行修改更新。
确认已付款用户的预约:当用户付款后对指定预约进行标记。
删除无用或错误的预约信息。
房间预约统计和用户统计。
安全注销。
3.2 性能需求
a 硬件环境:Windows 2000 server 是一个功能强大的操作系统,要让系统发挥应有的良好的性能,安装Windows 2000 server的计算机所需的最小配置应为:
CPU: 要求是奔腾以上处理器。
内存: 建议最少有256MB内存。
硬盘:硬盘分区有足够的可用空间来执行安装程序
b 软件环境:
操作系统:Windows XP
服务器平台:IIS5.0
浏览器:IE5.0
应用软件DreamweaverMX
c开发语言:Vbscript
总体设计
4.1系统模块结构设计
系统设计主要包括功能模块的划分和系统流程的分析。根据客户的需求总结系统主要完成的功能,以及将来拓展需要完成的功能,然后根据设计好的功能划分出系统的功能模块,这样方便程序员管理和维护,最后设计出系统的流程。接下来,就详细介绍系统设计的前期准备。
4.1.1 功能模块划分
酒店房间预约系统应该具有用户注册登录、查看预约房间、留言、管理员综合管理等功能。根据对该系统的功能需求分析可以画出系统功能模块图。本系统将功能划分为用户和管理员两部分,图1所示是用户部分的功能模块图。
用户模块包括注册、登录和注销3个功能子模块,注册模块提供用户注册成为酒店房间预约系统的会员,拥有预约房间的功能,而只有登录的用户方可以进行房间的预约,因此登录模块提供会员登录功能。为了防止其他用户私自修改用户信息,同时又设计了注销功能模块。
房间模块包括查看房间、查询房间、查看预约、预约房间和取消预约等功能。通过查看或者输入条件查询房间,可以获得房间的具体信息,如果为登录用户,此时可以进行房间的预约操作,用户觉得不满意,可以通过取消预约模块取消预约,同时用户可以通过查看预约模块查看用户所有的预约信息。
留言模块为用户提供一个发表自己看法的场所,如果遇到什么困难或者不满意的地方。可以通过该模块发表。
管理端部分的功能如图2所示。
管理员登录模块提供管理员登录的入口,只有成功登录后,才可以执行管理员操作。
添加房间功能模块为管理员提供添加新的房间的功能,此时,管理员可以输入详细的房间信息。
如果房间出现问题或者该房间已经不存在,管理员可以通过删除房间模块把该房间删除。
当房间信息发生改变时,管理员可以通过修改房间信息模块对房间的信息进行修改。
管理员可以通过阅读留言模块查看用户发表的留言,并可以进行回复和删除等操作。
用户的预约只有等管理员确认后方可生效,管理员就是通过预约管理模块对用户的预约信息进行管理的,包括确定预约和删除预约等。
管理员操作结束时需要通过注销登录模块注销登录,防止系统信息被篡改。
4.2 数据库设计
数据库结构设计的好坏直接影响到信息管理系统的效率和实现的效果。合理地设计数据库结构可以提高数据库存储的效率,保证数据的完整和统一。数据库设计一般包括如下几个步骤:
数据库需求分析
数据库概念结构设计
数据库逻辑结构分析
4.2.1数据库需求分析
酒店房间预约系统的数据库功能主要体现在对各种信息的提供、保存、查询和更新操作上,包括用户信息、管理员信息、房间信息、预约信息和留言信息,各个部分的数据有着内在的联系。
通过前面对系统功能模块的分析,总结出该数据库需要满足以下信息需求:
用户和管理员具有不同的身份。
用户信息记录用户的资料。
房间信息包括房间类型和费用等。
预约信息包括预约时间、预约用户等信息。
留言包括标题、内容等信息。
综合上面对酒店房间预约的数据库的需求分析,考虑到未来功能上的扩展,设计如下的数据项和数据结构。
管理员信息包括的数据项:管理员名和密码。
用户信息包括的数据项:用户名、密码等。
房间信息包括的数据项:房间ID、房间名称、类型等。
预约信息包括的数据项:预约ID、预约用户名、房间ID等。
留言信息包括的数据项:留言用户名、留言标题、内容等。
4.2.2数据库概念结构设计
得到上述的数据项和数据结构以后,就可以设计出满足客户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计做好铺垫。
该系统的实体有管理员信息实体、用户信息实体、房间信息实体、预约信息实体、预约信息实体和留言信息实体,它们之间的关系如图3所示。
信息实体之间的关系示意图
用户信息试题的E-R图,如图4所示。
管理员信息试题E-R图,如图5所示。
房间信息实体E-R图,如图6所示。
预约信息实体E-R图,如图7所示。
留言信息实体E-R图,如图8所示。
4.3 数据库逻辑结构设计
数据库的概念结构设计之后,就可以将上面的数据库概念转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构
本系统采用的数据库软件是Microsoft Access.首先打开Microsoft Access,新建一个新空的数据库,命名为golfers.mdb。然后通过表设计器创建本系统的几个表。下面分别介绍各个表的内容。
1.管理员信息表
管理员信息包括管理员帐号和管理员密码,其属性如表1所示。设置管理员帐号Admin-name为主键。
列 名 数据类型 字段大小 必填字段 默认值 备注
Admin-name 文本 12 是 无 主键,管理员帐号
Admin-pwd 文本 16 是 无 密码
管理员信息表(Admin)
2.用户信息表
用户信息表记录了用户的详细信息,包括用户名、密码、和有关的个人信息,设置用户名为该表主键,如表2所示。
用户信息表(user-reg)
列 名 数 据 类 型 字 段 大 小 必 填 字 段 默 认 值 备 注
User-name 文本 12 是 无 主键,用户名
Pas 文本 16 是 无 密码
Sex 文本 2 是 无 性别
Age 数字 1 是 无 年龄
Email 文本 50 是 无 电子邮件
Tel 文本 15 是 无 电话
Byear 数字 2 是 无 出生年
Bmonth 数字 1 是 无 出生月
Bday 数字 1 是 无 出生日
3.房间信息表
房间信息表记录了房间的编号、房间名称、房间类型和费用等信息,设置房间编号为该表主键,如表3所示。
房间信息表(room)
列 名 数 据 类 型 字 段 大 小 必 填 字 段 默 认 值 备 注
Room-id 自动编号 2 是 无 主键,房间编号
Name 文本 30 是 无 房间名称
Type 文本 12 是 无 房间类型
Cost 货币 2 是 无 费用
4.预约信息表
预约信息表记录了用户预约房间的详细信息,包括预约帐号、预约编号、预约时间、房间编号、使用费用、是否付款和何时使用等信息,如表4所示。
预约信息表(preengage)
列 名 数 据 类 型 字 段 大 小 必 填 字 段 默 认 值 备 注
Preengage-id 自动编号 2 是 无 主键,预约编号
User-name 文本 12 是 无 用户名
Room-id 文本 2 是 无 房间编号
Datetime 日期/时间 8 是 无 预约时间
Cost 货币 2 是 无 费用
Pyear 数字 2 是 无 开始年
Pmonth 数字 1 是 无 开始月
Pday 数字 1 是 无 开始日
Beginhour 数字 1 是 无 开始时间
Paid 数字 1 是 无 是否付款
5.留言信息表
留言信息表记录了留言的标题、留言编号、留言内容、留言用户等信息,如表5所示。设置留言编号为该表主键。
留言信息表(word)
列 名 数 据 类 型 字 段 大 小 必 填 字 段 默 认 值 备 注
Word-id 自动编号 2 是 无 主键,留言编号
User-name 文本 12 是 无 用户名
Title 文本 50 是 无 标题
Word 文本 250 是 无 内容
Datetime 日期/时间 8 是 无 时间
4.4 数据库的实现
酒店房间预约系统使用ASP+Access的工作模式,为了是系统正常工作,需要建立与数据库系统的连接来读取和写入数据。
使用数据库文件的语法为:〈!--#include file=”../Include/conndb.asp”--〉.使用过程中,file后面的路径应该根据实际文件的位置稍微调整。该文件代码的实现参见程序清单1
程序清单1 数据库连接代码 hotel.asp
<%
Dim hotel_conn
db = "database/hotel.mdb"
connstr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
Set hotel_conn = Server.CreateObject("ADODB.Connection")
if err Then
err.clear
end if
hotel_conn.Open connstr
'关闭数据库连接,在每页中调用此函数,将连接放入连接池
sub CloseConn()
hotel_conn.Close()
Set hotel_conn = Nothing
end sub
'替换单引号
function RealString(strSrc)
RealString = Replace(Trim(strSrc), "'", "''")
end function
%>
第五章、编写公共模块文件
公共模块主要包括以下几个部分:
页面头文件。
页面尾文件。
管理员登陆判断代码。
用户登录判断模块。
注销模块。
用户名判断函数。
电子邮件地址判断函数。
错误提示页面。
1. 页面头文件
本系统的每个可显示的页面都有固定的页面头和页面尾,页面头包括图片和导航菜单,页面尾文件包括版权信息和联系方式。为了减少代码的重复编写,将它们分别单独作为一个文件来操作,使用时使用include命令来调用它们。程序清单2为页面头文件的实现代码。
程序清单 2 页面头文件实现代码 include/head.asp
<table width="200" border="0" cellspacing="0">
<tr>
<td><img src="image/top.gif" width="760" height="110" border="0" usemap="#MapMapMap"></td>
</tr>
</table>
<map name="MapMapMap">
<area shape="rect" coords="222,92,273,110" href="index.asp">
<area shape="rect" coords="301,92,356,110" href="room.asp">
<area shape="rect" coords="643,92,697,110" href="logout.asp">
<area shape="rect" coords="389,92,444,110" href="search.asp">
<area shape="rect" coords="558,92,616,110" href="lword.asp">
<area shape="rect" coords="474,92,531,110" href="mine.asp">
</map>
该头文件指定了页面头部图片,并在图片上设置了“热点”,即用鼠标单击图片某一区域后进入相应的网页。
2.页面尾文件
程序清单3是页面文件的实现代码。使用该代码采用〈!--#include file=”../Include/foot.asp”--〉语句。
程序清单3 页面尾文件实现代码 Include/foot.asp
<table border="0">
<tr class="text">
<td colspan="5"><div align="center">天空酒店管理系统 ©2005</div></td>
</tr>
<tr class="text">
<td><div align="left">E-mail:</div></td>
<td><div align="left"><a href="tiandiren_886@163.com