本酒店房间预约系统按照用户部分和管理员部分划分了两块,它们所实现的功能如下。
1. 用户部分 l 预约房间:预约某个时间的某一房间。 l 用户登陆:通过用户名和密码核实登陆用户身份。 l用户注册:检测用户提供的信息并注册用户。 l 查询房间信息:按照用户提出的条件列出查询结果。 l 取消房间预约:取消某一到期且未付款的有效预约。 l查询预约信息:查询该用户的预约信息。 l 阅览用户留言:调用用户留言并显示。 l 注销用户:结束用户会话,保证安全。 2. 管理员部分 l给站长留言:检查用户留言的正确性并保存。 l 删除房间:根据用户提交的信息删除指定的房间。 l 添加房间:添加新的房间,注册详细信息。 l删除无用留言:删除需要处理的留言。 l 删除无用或错误的预约信息。 l 确认已付款用户的预约:当用户付款后对指定预约进行标记。 l修改房间信息:对于存在的某房间信息进行修改更新。 安全注销。l房间预约统计和用户统计。
酒店预约基本都是需要通过电话或客户直接到酒店进行,由于预约记录多是人为完成,容易造成失误和遗漏,管理效率比较低,特别是顾客比较多的季节,传统的预约方式已经基本不能满足要求。
远程预约系统是一种全新的网络预约方式,通过互联网突破了时间和空间限制实现了便捷快速的预约与管理功能。本系统具有房间信息查询、预约房间和取消预约等功能。
本酒店房间预约系统按照用户部分和管理员部分划分了两块,它们所实现的功能如下。
系统模块结构设计
系统设计主要包括功能模块的划分和系统流程的分析。根据客户的需求总结系统主要完成的功能,以及将来拓展需要完成的功能,然后根据设计好的功能划分出系统的功能模块,这样方便程序员管理和维护,最后设计出系统的流程。接下来,就详细介绍系统设计的前期准备。
4.1.1 功能模块划分
酒店房间预约系统应该具有用户注册登录、查看预约房间、留言、管理员综合管理等功能。根据对该系统的功能需求分析可以画出系统功能模块图。本系统将功能划分为用户和管理员两部分,图1所示是用户部分的功能模块图。
管理端部分的功能如图2所示。
4.2 数据库设计
数据库结构设计的好坏直接影响到信息管理系统的效率和实现的效果。合理地设计数据库结构可以提高数据库存储的效率,保证数据的完整和统一。数据库设计一般包括如下几个步骤:
4.2.1数据库需求分析
酒店房间预约系统的数据库功能主要体现在对各种信息的提供、保存、查询和更新操作上,包括用户信息、管理员信息、房间信息、预约信息和留言信息,各个部分的数据有着内在的联系。
通过前面对系统功能模块的分析,总结出该数据库需要满足以下信息需求:
综合上面对酒店房间预约的数据库的需求分析,考虑到未来功能上的扩展,设计如下的数据项和数据结构。
4.2.2数据库概念结构设计
得到上述的数据项和数据结构以后,就可以设计出满足客户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计做好铺垫。
该系统的实体有管理员信息实体、用户信息实体、房间信息实体、预约信息实体、预约信息实体和留言信息实体,它们之间的关系如图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 |
是 |
无 |
年龄 |
|
文本 |
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
![]() |
该头文件指定了页面头部图片,并在图片上设置了“热点”,即用鼠标单击图片某一区域后进入相应的网页。
2.页面尾文件
程序清单3是页面文件的实现代码。使用该代码采用〈!--#include file=”../Include/foot.asp”--〉语句。
程序清单3 页面尾文件实现代码 Include/foot.asp
天空酒店管理系统 ©2005 |
||||
E-mail: |
电话: |
010-12345678 |
||
3.管理员登录判断代码
为了防止非管理员用户任意修改系统数据,在页面中需要加入管理员登录判断,其实现代码见程序清单4
程序清单4 管理员登录判断代码 include/is-admin.asp
<%
'判断管理员登陆------------------
if isempty(session("admin_name")) then
response.Redirect("error.asp")
response.End()
end if
%>
酒店房间预约系统是一个多用户系统,某些页面只有用户登录后方可开通,如留言等。为了防止非注册用户直接调用页面的这些功能,需要在页面中加入用户登陆判断代码。程序清单5是用户登录判断代码,和管理员登录判断代码类似。
程序清单5 用户登录判断代码 include/is-user.asp
<%
if isempty(session("user_name")) then
response.Redirect("error.asp")
response.End()
end if
%>
当用户或者管理员完成操作后,为保证系统安全,系统提供了安全注销功能,它是通过程序清单6所示的代码实现的。
程序清单6 安全注销 logout.asp
<%
session("user_name")=empty
session("admin_name")=empty
response.Redirect("index.asp")
%>
安全注销代码的使用,首先把用户名清空,进入首页。当用户再次进入该系统时通过用户判断或者管理员判断代码进行安全确认。这样就实现了安全注销功能。
6. 用户名判断函数
注册某些网站用户的时候,会得到这样的提示“您的用户名出现非法字符”。在本系统中,规定用户名只能使用字母、数字和下划线,其实现过程见程序清单7
程序清单7 判断合法用户名 include/is-name.asp
<%
'用户名规则判定函数------------------
function is_name(name)
dim i, c
is_name = true
for i = 1 to len(name)
c = Lcase(Mid(name, i, 1))
if InStr("abcdefghijklmnopqrstuvwxyz_", c) <= 0 and not IsNumeric(c) then
is_name = false
exit function
end if
next
end function
%>
7. 电子邮件地址判断函数
与用户名类似,电子邮件地址也需要判断合法性。程序清单8就是电子邮件地址合法性判断函数。
程序清单8 电子邮件合法性判断函数 include/is-email.asp
<%
'判断管理员登陆------------------
if isempty(session("admin_name")) then
response.Redirect("error.asp")
response.End()
end if
%>
未完待续。。。。。