酒店管理系统课程设计Word格式.docx
《酒店管理系统课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《酒店管理系统课程设计Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
(4)用项目管理器统一界面
第3章酒店管理概述
3.1系统数据需求
1)数据录入和处理的准确性和实时性。
2)数据的一致性与完整性。
3)数据的共享与独立性。
3.2系统业务功能的需求
(1)实现客房信息管理功能
(2)实现客户信息管理功能
(3)实现预定管理功能
(4)实现入住管理功能
(5)实现消费记账功能
(6)实现收银退房功能
综上,我们将系统的功能大体划分为三大模块:
权限管理:
包括管理员的登录
前台管理:
包括客户信息的录入、客户预订和入住登记以及结算的管理等。
后台报表管理:
包括报表的打印
3.3系统性能需求:
为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:
(1)系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息的处理。
(2)系统的开放性和系统的可扩充性
系统在开发过程中,应该充分考虑以后的可扩充性。
例如系统权限和客房信息设置等模块也会不断的更新和完善。
所有这些都要求系统提供足够的手段进行功能的调整和扩充。
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。
(3)系统的易用性
本酒店客房管理系统面向的用户是酒店内工作人员,而有些使用人员往往对计算机并不是非常熟悉,所以系统操作上要求简单、方便、快捷,便于用户使用。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
(4)系统的响应速度
系统设计中摒弃大量数据冗余,提出了优化数据库的解决方案,大量使用存储过程,大大提高系统响应时间和速度。
第4章系统总体设计
本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的认识。
4.1系统功能模块设计
结合前面需求分析阶段的结果进行综合处理,确定了客房管理系统需要完成的功能,主要划分为以下模块:
1.结算管理
(1)结账
(2)结账查询
2.客房信息管理
(1)设置客房标准
①添加客房标准②修改客房标准③删除客房标准
(2)设置客房信息
①添加客房信息②修改客房信息③添加客房类型④查询客房信息
3.住宿信息管理
(1)添加入住信息
(2)修改入住信息
(3)查询入住信息
模块设计图如下:
图4-1系统功能模块图
4.2系统结构设计
系统的主要结构:
系统的封面以表单开始,要求用户输入登录,若密码错误,则自动退出,否则出现系统主菜单,接受用户的操作,操作完毕后用户可以从系统菜单中退出系统,系统运行的步骤如图:
4.3系统数据流程图
图4-3系统数据流程图
4.4E-R图
4.5系统的运行要求
软、硬件环境:
硬件:
客户机(CPUP200以上,内存:
32M以上)、数据库服务器(CPUPIII800以上,内存:
256M或以上。
以Microsoftwindows操作系统为工作平台。
以MicrosoftVisualBasic6.0为开发工具。
数据库环境是MicrosoftOfficeAccess2003。
第5章详细设计与实现
5.1数据库设计
(1)数据库需求分析
设计的数据库系统应用于酒店管理系统,所以必须充分满足酒店客房管理系统的各种要求。
此系统要求记录每一次酒店客户的住宿登记、调房登记和退宿结账的操作信息,并允许系统用户对这些信息进行查询。
另外,必须建立一些辅助项目表为这些操作信息提供数据来源。
通过以上的分析,数据库设计必须满足以下几点:
1
(1)记录酒店客户住宿登记操作的信息。
2
(2)记录酒店客户退房结账操作的信息。
3 (3)记录酒店客房的相关信息。
4 (4)记录酒店客户的客房预订信息。
5 (5)记录系统用户的用户名、密码和操作权限。
(2)建立Access数据库及表
在一个酒店管理系统中,数据库的地位是非常重要的,是一个系统正常运行的基础。
本系统的数据库是采用Microsoft公司的Access2003设计的。
在数据库的设计过程中,首先是收集、分析需求;
再从需求抽象出一般的实体、关系和他们的属性;
再将这些实体、关系和属性按照一定的规则转化为二元表结构。
本系统中共有4数据表
表3-1为Usersinfo—管理员资料数据表。
管理员资料数据表记录了所有管理的基本资料,管理员可添加、删除和查询该表。
该表包括管理员ID、姓名、密码和权限等资料。
表3-1为UsersInfo—管理员资料数据表
字段名
类型
大小
说明
姓名
Text
20
管理人员帐号(主键)
密码
管理人员密码(主键)
权限
1
管理人员权限
如下图所示:
表3-2为add旅客入住登记表。
add日主登记表记录了入住旅客的基本个人信息、房间号、登记号等。
表3-2旅客信息表为旅客的个人信息加入住客房信息数据结构表
登记号
8
旅客入住号(主键)
旅客姓名(不为空)
身份证号码
18
旅客身份证号(不为空)
房间号
3
入住房间号(不为空)
登记日期
日期/时间
旅客入住时间(不为空)
性别
旅客性别
籍贯
旅客籍贯
如下所示:
表3-3为room资料数据表。
room料数据表记录了room基本资料,可供查询。
该表主要包括了房间号、客房等级、客房类型、客房价格、客房状态、客房备注信息等基本资料。
表3-2room资料数据表
房间号(主键)
客房等级
客房类型
客房类型(不为空)
客房价格
数字
单精度型
客房价格(不为空)
客房状态
客房状态(不为空)
客房备注信息
备注
表3-4为quit资料数据表。
quit资料数据表记录了所有退房的基本资料,管理员可添加、删除和查询该表。
类型的基本资料,包括登记号、登记日期、退房日期、付款金额、退房备注信息。
表3-4为quit资料数据表
旅客登记时间(不为空)
退房时间
旅客退房时间(不为空)
付款金额
付费金额(不为空)
退房备注信息
连接数据库:
由于本系统是采用ADO对象访问数据库的技术,所以在VB中需要添加ADO库。
添加的方法是在VB中选择“工程”—>
“引用”命令,在对话框中选择MicrodoftActiveXDataObjects2.0Library,单击“确定”按钮。
在程序设计的公共模块中,先定义ADO连接对象。
语句如下:
PublicconnAsNewADODB.connection‘标记连接对象’
DimconnectionAsString
ConnectionString="
provider=microsoft.jet.oledb.4.0;
"
&
"
datasource=carshale.mdb"
conn.OpenConnectionString
5.2创建主窗体以及主要窗体
建立主窗体:
单击”工程”->
”添加MDI窗体”菜单,在弹出的对话框中单击”打开”按钮则为当前项目添加了一个MDI窗体。
设置好MDI窗体属性后,设置此项目的属性。
”工程1属性”菜单,进入项目属性设置窗体。
在此项目属性窗体中通用选项卡的启动对象中选择MDIfrmMain项,将这一多文档窗体作为程序的启动窗体。
图4—1菜单结构
(1)登录模块的设计:
此模块的功能是检查管理员是否有进入系统的权限。
用到的主要控件为二个text、两个label和两个Button按钮。
窗体界面如图4-2所示。
图4-2登录窗体的界面
在此模块中管理员可以选择相应的管理员帐号进行登录,减去了忘记帐号或帐号名输入不方便的烦恼。
(2)主页面模块的设计:
此模块是系统服务器端的主要控制界面,通过菜单的选择,可以控制系统的所有功能,窗体界面如图4-3,4-4所示。
主界面的设计步骤:
1)设计主界面控件布局:
在主界面的布局中使用了工具栏(ToolBar)、时钟控件(timer)和图象列表(ImageList)等非Vb标准控件。
2)工具栏的设置:
给工具栏添加按钮
3)添加菜单:
菜单的使用是为了更好的给用户提供功能指引。
工具栏列表
系统通过Timer控件在状态栏中显示系统的当前时间,Timer控件的时间间隔是1000,也就是1秒钟,这样状态栏中的时间每秒钟都会变化,达到显示系统时钟的目的,具体实现代码为:
PrivateSubTimer1_Timer()
StatusBar1.Panels
(2).Text=Date&
Time
EndSub
(4)创建系统主界面
当系统运行时,首先进入登录界面,当输入帐号,密码合法时,则启动系统主界面。
图4-4系统主窗体的界面
5)用户进入客房需要必要的登记来完成如图:
图4-5用户登记界面
图4-6已经登记的用户
(6)退房信息:
当旅客离开宾馆时,需要为其办理退房手续,在这过程中需要在旅客退房信息表中添加记录信息,以及修改客房信息表,改变客房状态。
旅客退房信息窗体,工作界面设计情况如图:
图4-7退房登记表
(7)查询住户信息:
此界面用于查询房间状态如是否有所需的类型或是否为空房或满房,可以全部浏览,也可以按照查询条件来查找,如图:
图4-8客房状态界面
(8)查询客房:
客查询窗体主要功能是实现客房信息查询显示,查询方式可以是按旅客姓名,登记号也可以按房间号查询。
工作界面如图:
图4-9查询住户登记表
(9)客房情况打印表:
图4-10客房情况打印表
5.3代码设计
一、酒店管理信息系统程序代码:
PrivateSubCmdOK_Click()
Dims1AsString
DimiAsInteger
DimjAsInteger
Dima(18)AsString
j=Len(txtUserName.Text)
s1=txtUserName.Text
DimcAsInteger
c=1
Fori=1Toj
a(i)=Mid(s1,i,1)'
逐一判断字符的合格化
Ifa(i)="
Then
MsgBox"
Error"
vbOKOnly,"
ExitSub
ElseIfa(i)="
<
>
="
~"
"
'
EndIf
c=c+1
txtUserName.SetFocus
Nexti
DimstrusernameAsString
DimstrpasswordAsString
StaticintlogintimesAsInteger
IfTrim(txtUserName.Text)="
用户名不能为空!
vbOKOnly+vbCritical,"
错误"
opentableadousers,"
usersinfo"
adousers.Refresh
adousers.Recordset.Find"
姓名="
txtUserName.Text&
,adSearchForward,1
IfNotadousers.Recordset.EOFThen
strusername=adousers.Recordset!
strpassword=adousers.Recordset!
Else
strusername="
strpassword="
Ifstrusername=txtUserName.TextAndstrpassword=txtPassword.TextThen
adousers.Recordset.Close
UnloadMefrmmdi.Show
用户名或密码不对!
vbOKOnly+vbInformation,"
提示"
intlogintimes=intlogintimes+1
Ifintlogintimes>
=3Then
End
txtPassword.SetFocus
SendKeys"
{HOME}+{END}"
PrivateSubcmdcancel_click()
UnloadMe
OptionExplicit
PrivateSubCommand1_Click()
Withfrmmdi.adoroom.Recordset
IfNottxtroomno.LockedThen
IfTrim(txtroomno.Text)="
房间号不能为空!
txtroomno.SetFocus
!
房间号=Trim(txtroomno.Text)
客房等级=Trim(txtroomgrade.Text)
客房类型=Trim(txtroomtype.Text)
客房价格=Trim(txtroomprice.Text)
客房状态=Trim(txtroomstatus.Text)
客房备注信息=txtroominfo.Text
Update
EndWith
PrivateSubCommand2_Click()
EndSub
退房登记实现代码:
PrivateSubCmdOK_Click()
Withfrmmdi.adoquit.Recordset
IfNottxtbookno.LockedThen
IfTrim(txtbookno.Text)="
登记号不能为空!
txtbookno.SetFocus
frmmdi.adoguest.Recordset.Find"
登记号='
Trim(txtbookno.Text)&
Iffrmmdi.adoguest.Recordset.EOFThen
非法登记号!
txtpaymoney.Text="
frmmdi.adoquit.Recordset.Find"
'
IfNotfrmmdi.adoquit.Recordset.EOFThen'
有就提示,然后退出
已经有相同登记号!
.AddNew
登记号=Trim(txtbookno.Text)
付款金额=Val(Trim(txtpaymoney.Text))
登记日期=Trim(txtbookdate.Text)
退房时间=dtpquitdate.Text
IfTrim(txtinfo.Text)="
备注不能为空!
txtinfo.SetFocus
退房备注信息=txtinfo.Text
frmmdi.adoroom.Recordset!
客房状态="
空"
Withfrmmdi.adoguest.Recordset
Delete
IfoptroomThen
opentablefrmmdi.Adoroom1,"
select*fromroomwhere(((room.房间号)like'
Trim(txtvalue.Text)&
%"
))"
ElseIfoptgradeThen
select*fromroomwhere(((room.客房等级)like'
ElseIfopttypeThen
select*fromroomwhere(((room.客房类型)like'
dtgroomqueryinforefresh
a(i)=Mid(s1,i,1)
Error
c=c