VB酒店管理系统 4.docx
《VB酒店管理系统 4.docx》由会员分享,可在线阅读,更多相关《VB酒店管理系统 4.docx(22页珍藏版)》请在冰豆网上搜索。
VB酒店管理系统4
VB.NET设计报告
酒店客房管理系统
一、课程设计的目的
本系统是模拟酒店客房管理系统。
主要用于宾馆旅客入住情况登记,包括旅客的姓名及身份证号的登记,以及入住房间信息.当旅客离开时,需要办理退房结帐手续.对于一定时间没有旅客入住情况实现基本查询,报表打印功能.对于宾馆本身也实现了客房增减,入住情况查询等功能.
二、功能简介
系统开发的总体任务是实现酒店的管理,主要完成的功能有:
1、入住信息管理:
即管理和维护住户的各项数据信息,包括入住者登记号、姓名、身份证号、房间号、登记日期、性别、籍贯。
当住户离开酒店时,允许高级管理员和系统管理员添加住户信息、删除住户信息和维护住户信息。
2、酒店客房信息管理:
即管理和维护酒店的各项数据信息,包括房间号、客房等级、客房价格、客房类型、客房状态、客房备注信息。
其中房间号必须是酒店客房数据表中的一种。
允许高级管理员和系统管理员添加客房信息、删除客房信息和维护客房信息。
3、酒店客房类别管理:
即管理和维护酒店客房类别的各项数据信息,包括有普通客房和贵宾客房两项。
允许高级管理员和系统管理员添加客房类别信息、删除客房类别信息和维护客房类别信息。
4、入住和退房管理:
即管理和维护客房的入住、退房及客户的缴纳房款等信息。
包括住户的登记号、姓名、身份证号、房间号、登记日期、籍贯等数据。
主要功能有客房入住、客房退还和缴纳罚款3项功能
5、管理员权限管理:
按照数据表里的记录来确定管理员权限,并允许其执行相应的功能。
这里我们定义了管理员的作用:
(1)、可以添加管理员
(2)、可以添加职员信息。
(3)、可以授权用户。
管理员可以进行所有权限。
三、数据库设计
3.1建立Access数据库及表
在一个酒店管理系统中,数据库的地位是非常重要的,是一个系统正常运行的基础。
本系统的数据库是采用Microsoft公司的Access2003设计的。
在数据库的设计过程中,首先是收集、分析需求;再从需求抽象出一般的实体、关系和他们的属性;再将这些实体、关系和属性按照一定的规则转化为二元表结构。
本系统中共有4数据表
表3-1为Usersinfo—管理员资料数据表。
管理员资料数据表记录了所有管理的基本资料,管理员可添加、删除和查询该表。
该表包括管理员ID、姓名、密码和权限等资料。
表3-1为UsersInfo—管理员资料数据表
字段名
类型
大小
说明
姓名
Text
20
管理人员帐号
密码
Text
20
管理人员密码
权限
Text
1
管理人员权限
表3-2旅客信息表为旅客的个人信息加入住客房信息数据结构表
字段名
类型
大小
说明
登记号
Text
8
旅客入住号
姓名
Text
8
旅客姓名
身份证号码
Text
18
旅客身份证号
房间号
Text
3
入住房间号
登记日期
Text
日期/时间
旅客入住时间
性别
Text
3
旅客性别
籍贯
Text
8
旅客籍贯
表3-3为room资料数据表。
room料数据表记录了room基本资料,可供查询。
该表主要包括了房间号、客房等级、客房类型、客房价格、客房状态、客房备注信息等基本资料。
表3-2room资料数据表
字段名
类型
大小
说明
房间号
Text
3
房间号
客房等级
Text
8
客房等级
客房类型
Text
8
客房类型
客房价格
Text
单精度型
客房价格
客房状态
Text
3
客房状态
客房备注信息
备注
8
客房备注信息
表3-4为quit资料数据表。
quit资料数据表记录了所有退房的基本资料,管理员可添加、删除和查询该表。
类型的基本资料,包括登记号、登记日期、退房日期、付款金额、退房备注信息。
表3-4为quit资料数据表
字段名
类型
大小
说明
登记号
Text
8
旅客入住号
登记日期
日期/时间
旅客登记时间
退房时间
日期/时间
旅客退房时间
付款金额
Text
单精度型
付费金额
退房备注信息
Text
8
退房备注信息
3.2连接数据库
由于本系统是采用ADO对象访问数据库的技术,所以在VB中需要添加ADO库。
添加的方法是在VB中选择“工程”—>“引用”命令,在对话框中选择MicrodoftActiveXDataObjects2.0Library,单击“确定”按钮。
在程序设计的公共模块中,先定义ADO连接对象。
语句如下:
PublicconnAsNewADODB.connection‘标记连接对象’
DimconnectionAsString
ConnectionString="provider=microsoft.jet.oledb.4.0;"&"datasource=carshale.mdb"
conn.OpenConnectionString
四、具体实现
4.1创建主窗体
建立主窗体:
单击”工程”->”添加MDI窗体”菜单,在弹出的对话框中单击”打开”按钮则为当前项目添加了一个MDI窗体。
设置好MDI窗体属性后,设置此项目的属性。
单击”工程”->”工程1属性”菜单,进入项目属性设置窗体。
在此项目属性窗体中通用选项卡的启动对象中选择MDIfrmMain项,将这一多文档窗体作为程序的启动窗体。
图4—1菜单结构
4.2主要窗体的实现
(1)登录模块的设计:
此模块的功能是检查管理员是否有进入系统的权限。
用到的主要控件为二个text、两个label和两个Button按钮。
窗体界面如图4-2所示。
图4-2登录窗体的界面
在此模块中管理员可以选择相应的管理员帐号进行登录,减去了忘记帐号或帐号名输入不方便的烦恼。
(2)主页面模块的设计:
此模块是系统服务器端的主要控制界面,通过菜单的选择,可以控制系统的所有功能,窗体界面如图4-3,4-4所示。
主界面的设计步骤:
1)设计主界面控件布局:
在主界面的布局中使用了工具栏(ToolBar)、时钟控件(timer)和图象列表(ImageList)等非Vb标准控件。
2)工具栏的设置:
给工具栏添加按钮
3)添加菜单:
菜单的使用是为了更好的给用户提供功能指引。
图4-3图象列表
图4-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查询住户登记表
(8)客房情况打印表:
图4-10客房情况打印表
五、运行效果
在完成了程序各个功能模块的创建之后,就可以运行整个系统了。
运行程序,进入系统。
1、登录系统由用户登录、修改密码、退出系统等组成。
图5-1管理员进入
2、进入主页面,登录主页面后,可进入主页面运行系统。
图5-2主页面
附录
一、酒店管理信息系统程序代码:
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,"Error"
ExitSub
ElseIfa(i)="<"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=">"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="="Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=""Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="~"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=","Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="'"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
EndIf
c=c+1
txtUserName.SetFocus
Nexti
DimstrusernameAsString
DimstrpasswordAsString
StaticintlogintimesAsInteger
IfTrim(txtUserName.Text)=""Then
MsgBox"用户名不能为空!
",vbOKOnly+vbCritical,"错误"
ExitSub
EndIf
opentableadousers,"usersinfo"
adousers.Refresh
adousers.Recordset.Find"姓名="&"'"&txtUserName.Text&"'",,adSearchForward,1
IfNotadousers.Recordset.EOFThen
strusername=adousers.Recordset!
姓名
strpassword=adousers.Recordset!
密码
Else
strusername=""
strpassword=""
EndIf
Ifstrusername=txtUserName.TextAndstrpassword=txtPassword.TextThen
adousers.Recordset.Close
UnloadMefrmmdi.Show
Else
MsgBox"用户名或密码不对!
",vbOKOnly+vbInformation,"提示"
intlogintimes=intlogintimes+1
Ifintlogintimes>=3Then
adousers.Recordset.Close
End
EndIf
txtPassword.SetFocus
SendKeys"{HOME}+{END}"
EndIf
EndSub
PrivateSubcmdcancel_click()
UnloadMe
EndSub
OptionExplicit
PrivateSubCommand1_Click()
Withfrmmdi.adoroom.Recordset
IfNottxtroomno.LockedThen
IfTrim(txtroomno.Text)=""Then
MsgBox"房间号不能为空!
",vbOKOnly+vbInformation,"提示"
txtroomno.SetFocus
ExitSub
EndIf
EndIf
!
房间号=Trim(txtroomno.Text)
!
客房等级=Trim(txtroomgrade.Text)
!
客房类型=Trim(txtroomtype.Text)
!
客房价格=Trim(txtroomprice.Text)
!
客房状态=Trim(txtroomstatus.Text)
!
客房备注信息=txtroominfo.Text
Update
UnloadMe
EndWith
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
退房登记实现代码:
PrivateSubCmdOK_Click()
Withfrmmdi.adoquit.Recordset
IfNottxtbookno.LockedThen
IfTrim(txtbookno.Text)=""Then
MsgBox"登记号不能为空!
",vbOKOnly+vbInformation,"提示"
txtbookno.SetFocus
ExitSub
EndIf
frmmdi.adoguest.Recordset.Find"登记号='"&Trim(txtbookno.Text)&
"'",,adSearchForward,1
Iffrmmdi.adoguest.Recordset.EOFThen
MsgBox"非法登记号!
",vbOKOnly+vbInformation,"提示"
txtbookno.SetFocus
SendKeys"{HOME}+{END}"
txtpaymoney.Text=""
ExitSub
EndIf
frmmdi.adoquit.Recordset.Find"登记号='"&Trim(txtbookno.Text)&"'",,adSearchForward,1
IfNotfrmmdi.adoquit.Recordset.EOFThen'有就提示,然后退出
MsgBox"已经有相同登记号!
",vbOKOnly+vbInformation,"提示"
txtbookno.SetFocus
SendKeys"{HOME}+{END}"
txtpaymoney.Text=""
ExitSub
EndIf
.AddNew
!
登记号=Trim(txtbookno.Text)
EndIf
!
付款金额=Val(Trim(txtpaymoney.Text))
!
登记日期=Trim(txtbookdate.Text)
!
退房时间=dtpquitdate.Text
Update
IfTrim(txtinfo.Text)=""Then
MsgBox"备注不能为空!
",vbOKOnly+vbInformation,"提示"
txtinfo.SetFocus
EndIf
!
退房备注信息=txtinfo.Text
Update
UnloadMe
frmmdi.adoroom.Recordset!
客房状态="空"
Withfrmmdi.adoguest.Recordset
Delete
EndWith
EndWith
EndSub
PrivateSubCommand1_Click()
IfoptroomThen
opentablefrmmdi.Adoroom1,"select*fromroomwhere(((room.房间号)like'"&Trim(txtvalue.Text)&"%"&"'))"
ElseIfoptgradeThen
opentablefrmmdi.Adoroom1,"select*fromroomwhere(((room.客房等级)like'"&Trim(txtvalue.Text)&"%"&"'))"'
ElseIfopttypeThen
opentablefrmmdi.Adoroom1,"select*fromroomwhere(((room.客房类型)like'"&Trim(txtvalue.Text)&"%"&"'))"
EndIf
dtgroomqueryinforefresh
EndSub
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,"Error"
ExitSub
ElseIfa(i)="<"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=">"Then
MsgBox"Error",vbOKOnly,"Error
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="="Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=""Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="~"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)=","Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
ElseIfa(i)="'"Then
MsgBox"Error",vbOKOnly,"Error"
ExitSub
EndIf
c=c+1
txtUserName.SetFocus
Nexti
DimstrusernameAsString
DimstrpasswordAsString
StaticintlogintimesAsInteger
IfTrim(txtUserName.Text)=""Then
MsgBox"用户名不能为空!
",vbOKOnly+vbCritical,"错误"
ExitSub
EndIf
opentableadousers,"usersinfo"
adousers.Refresh
adousers.Recordset.Find"姓名="&"'"&txtUserName.Text&"'",,adSearchForward,1
IfNotadousers.Recordset.EOFThen
strusername=adousers.Recordset!
姓名
strpassword=adousers.Recordset!
密码
Else
strusername=""
strpassword=""
EndIf
Ifstrusername=txtUserName.TextAndstrpassword=txtPassword.TextThen
adousers.Recordset.Close
UnloadMe
frmmdi.Show
Else
MsgBox"用户名或密码不对!
",vbOKOnly+vbInformation,"提示"
intlogintimes=intlogintimes+1
Ifintlogintimes>=3Then
adousers.Recordset.Close
End
EndIf
txtPassword.SetFocus
SendKeys"{HOME}+{END}"
EndIf
EndSub
PrivateSubcmdcancel_click()
UnloadMe
EndSub
二、主控制窗体代码:
OptionExplicit
PrivateSubMDIForm_Load()
App.Title="宾馆客房管理系统"
opentableadoroom,"room"
opentableAdoroom1,"room"
opentableadoguest,"guest"
opentableAdoguest1,"guest"
opentableadoquit,"quit"
StatusBar1.Panels
(1).Text="欢迎登陆宾馆管理系统"
StatusBar1.Panels
(2).Text=Date&""&Time
EndSub
PrivateSubmnuCascade_Click()
frmmdi.ArrangevbCascade
EndSub
PrivateSubmnudenglu_Click()
frmLogin.Show
EndSub
PrivateSubmnuExit_Click()
UnloadMe
EndSub
PrivateSubmnuGuest_Click()
frmGuestInfo.Show
EndSub
PrivateSubmnuHor_Click()
frmmdi.ArrangevbTileHorizontal
EndSub
PrivateSubmnuin_Click()
frmusers.Show
EndSub
PrivateSubmnuqueryguest_Click()
frmqueryinfo.Show
EndSub
PrivateSubmnuqueryroom_Click()
frmqueryroom.Show
EndSub
PrivateSubmnuQuit_Click()
frmq