客房管理系统VB+SQL.docx
《客房管理系统VB+SQL.docx》由会员分享,可在线阅读,更多相关《客房管理系统VB+SQL.docx(48页珍藏版)》请在冰豆网上搜索。
客房管理系统VB+SQL
数据库课程设计报告
题目:
客房管理系统
时间:
2008-6-27
客房管理系统
一、课程设计的目的和意义
在当今经济和商务交往日益频繁的状况下,宾馆服务行业正面临客流量骤增的压力。
越来越多的宾馆饭店都认识到传统的管理方法已经不能适合当今社会的需要,必须借助先进的计算机信息技术对宾馆服务进行管理。
“客房管理系统”可以说是整个宾馆计算机信息系统的中心子系统,因为宾馆最主要的功能就是为旅客提供客房。
设计客房管理这样一个系统,可以涉及到大多数SQLServer数据库的重要数据库对象、重要功能和特性,比如:
视图、触发器和存储过程等。
由此,通过这个课程设计可以加深对这些SQLServer数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。
在实用性方面,客房管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。
本课程设计的主要目的是学习和练习SQLServer数据库的实际应用,所以选择SQLServer2000作为数据库服务器。
二、需求分析
系统主要实现对客房的管理功能。
主要有管理员登陆、客户登记、房间管理、客户查询、房间查询、收入统计、管理员信息管理。
系统总体设计图如下:
三、概念结构设计(E-R图)
四、逻辑结构设计
将E-R图转换成关系模式:
管理员(编号,账号,密码,权限)
房间(编号,类型,价格,状态,入住客户编号)
客户(编号,姓名,性别,年龄,身份证号,住址,入住时间,预计天数,房间编号,退房时间,押金,住宿费,登记人)
关系规范化:
均已达到第三范式
五、数据实施与维护
1、建立数据库打开SQLServer2000企业管理器,建立数据库HotelRoom。
2、添加数据表在HotelRoom数据库中,添加表管理员信息表AdminInfo、房间信息表RoomInfo、客户信息表GuestInfo。
3、建立关系图
4、创建视图
CREATEVIEWdbo.ViewAdminInfoASSELECTAid,Aname,AlimitFROMdbo.AdminInfo管理员信息视图
CREATEVIEWdbo.ViewAllCostASSELECTSUM(Ccost)ASAllCostFROMdbo.GuestInfo总收入视图
CREATEVIEWdbo.ViewBiaozhunCostASSELECTSUM(a.Ccost)ASBiaozhunCostFROMdbo.GuestInfoaINNERJOINdbo.RoomInfobONa.Rnum=b.RnumWHERE(b.Rtype='标准')标准房收入视图
CREATEVIEWdbo.ViewCostASSELECTdbo.ViewAllCost.AllCost,dbo.ViewPutongCost.putongCost,dbo.ViewBiaozhunCost.BiaozhunCost,dbo.ViewHaohuaCost.HaohuaCostFROMdbo.ViewAllCostCROSSJOINdbo.ViewPutongCostCROSSJOINdbo.ViewBiaozhunCostCROSSJOINdbo.ViewHaohuaCost收入视图
CREATEVIEWdbo.ViewEmptyRoomInfoASSELECTRnum,Rtype,Rprice,RstatesFROMdbo.RoomInfoWHERE(Rstates='空')空房信息视图
CREATEVIEWdbo.ViewFullRoomInfoASSELECTdbo.RoomInfo.*FROMdbo.RoomInfoWHERE(Rstates='满')满房信息视图
CREATEVIEWdbo.ViewGuestInfoASSELECTdbo.GuestInfo.*FROMdbo.GuestInfo客户信息视图
CREATEVIEWdbo.ViewHaohuaCostASSELECTSUM(a.Ccost)ASHaohuaCostFROMdbo.GuestInfoaINNERJOINdbo.RoomInfobONa.Rnum=b.RnumWHERE(b.Rtype='豪华')豪华房收入视图
CREATEVIEWdbo.ViewPutongCostASSELECTSUM(a.Ccost)ASPutongCostFROMdbo.GuestInfoaINNERJOINdbo.RoomInfobONa.Rnum=b.RnumWHERE(b.Rtype='普通')普通房收入视图
CREATEVIEWdbo.ViewRoomInfoASSELECTdbo.RoomInfo.*FROMdbo.RoomInfo房间信息视图
5、创建触发器
在表GuestInfo中,创建一个触发器:
CREATETRIGGERinsert_triONdbo.GuestInfo
FORINSERT
AS
updateRoomInfo
setRstates='满',Cid=(selectCidfrominserted)
whereRnum=(selectRnumfrominserted)
功能:
当向表GuestInfo中插入一个客户信息时,触发表RoomInfo的某房间的状态变为“满”
6、备份数据库
给所建立的数据库进行备份
六、界面设计与代码(用VB作为界面设计语言)
1、登陆界面
PublicSubCommand1_Click()‘确定
IfTrim(DataCombo1.Text)<>""AndTrim(Text1.Text)<>""Then
Adodc1.RecordSource="select*fromAdminInfowhereAname='"+Trim(DataCombo1.Text)+"'andAmima='"+Trim(Text1.Text)+"'"
Adodc1.Refresh
IfAdodc1.Recordset.RecordCount=1Then
Adodc1.Recordset.Close
frmMain.Show
Me.Hide
Else
MsgBox"错误的账号或密码!
",vbInformation+vbOKOnly,"错误信息"
Text1.Text=""
DataCombo1.SetFocus
EndIf
ElseIfDataCombo1.Text=""Then
MsgBox"账号不能为空!
",vbInformation+vbOKOnly,"错误信息"
DataCombo1.SetFocus
Else
MsgBox"密码不能为空!
",vbInformation+vbOKOnly,"错误信息"
Text1.SetFocus
EndIf
EndSub
PrivateSubCommand2_Click()‘取消
End
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)‘在文本框按下输入的事件
IfKeyAscii=13Then
Command1_Click
EndIf
EndSub
PrivateSubdataCombo1_KeyPress(KeyAsciiAsInteger)‘在文本框按下输入的事件
IfKeyAscii=13Then
Command1_Click
EndIf
EndSub
2、客户登记界面
PrivateSubCommand3_Click()‘客户登记PrivateSubCommand4_Click()‘退房结算
frmGuestAdd.ShowfrmCheckOut.Show
EndSubEndSub
PrivateSubCommand1_Click()‘当前时间
txt6.Text=Trim(Now())
EndSub
PrivateSubCommand2_Click()‘确定
Iftxt1.Text=""Ortxt2.Text=""Ortxt3.Text=""Ortxt4.Text=""Ortxt6.Text=""Ortxt8.Text=""OrDataCombo1.Text=""Then
MsgBox"请将蓝色部分填写完整!
",vbInformation+vbOKOnly,"提示信息"
Iftxt1.Text=""Then
txt1.SetFocus
ElseIftxt2.Text=""Then
txt2.SetFocus
ElseIftxt3.Text=""Then
txt3.SetFocus
ElseIftxt4.Text=""Then
txt4.SetFocus
ElseIftxt6.Text=""Then
txt6.SetFocus
ElseIftxt8.Text=""Then
txt8.SetFocus
ElseIfDataCombo1.Text=""Then
DataCombo1.SetFocus
EndIf
Else
Adodc3.RecordSource="selectAidfromViewAdminInfowhereAname='"&frmLogin.DataCombo1.Text&"'"
Adodc3.Refresh
DimaidAsInteger
aid=Adodc3.Recordset.Fields(0)
Adodc4.RecordSource="select*fromGuestInfo"
Adodc4.Refresh
Adodc4.Recordset.AddNew
Adodc4.Recordset.Fields("Cname")=txt1.Text
Adodc4.Recordset.Fields("Csex")=txt2.Text
Adodc4.Recordset.Fields("Cage")=txt3.Text
Adodc4.Recordset.Fields("Cpnum")=txt4.Text
Iftxt6.Text<>""Then
Adodc4.Recordset.Fields("Cadd")=txt5.Text
EndIf
Adodc4.Recordset.Fields("Cintime")=txt6.Text
Iftxt7.Text<>""Then
Adodc4.Recordset.Fields("Cday")=txt7.Text
EndIf
Adodc4.Recordset.Fields("Cdeposit")=txt8.Text
Adodc4.Recordset.Fields("Rnum")=DataCombo1.Text
Adodc4.Recordset.Fields("Aid")=aid
Adodc4.Recordset.Update
frmMain.Adodc1.Refresh
frmMain.DataGrid1.Refresh
MsgBox"登记成功!
",vbOKOnly+vbInformation,"提示信息"
UnloadMe
EndIf
EndSub
PrivateSubCommand3_Click()‘取消
UnloadMe
EndSub
PrivateSubDataCombo1_Change()‘选择房间
Adodc2.RecordSource="select*fromViewEmptyRoomInfowhereRnum='"+Trim(DataCombo1.Text)+"'"
Adodc2.Refresh
SetDataGrid1.DataSource=Adodc2
DataGrid1.Refresh
EndSub
PrivateSubCommand1_Click()‘查看信息
IfDataCombo1.Text<>""Then
IfCommand1.Caption="查看信息"Then
Adodc1.RecordSource="select*fromViewGuestInfowhereRnum='"&DataCombo1.Text&"'andCouttimeisnull"
Adodc1.Refresh
RichTextBox1.Text=vbCrLf+""+"编号:
"+Trim(Adodc1.Recordset.Fields(0).Value)+""+"姓名:
"+Trim(Adodc1.Recordset.Fields
(1).Value)+""+"性别:
"+Trim(Adodc1.Recordset.Fields
(2).Value)+""+"年龄:
"+Trim(Adodc1.Recordset.Fields(3).Value)+vbCrLf+vbCrLf+""+"身份证号:
"+Trim(Adodc1.Recordset.Fields(4).Value)+vbCrLf+vbCrLf+""+"入住时间:
"+Trim(Adodc1.Recordset.Fields(6).Value)+vbCrLf+vbCrLf+""+"押金:
"+Trim(Adodc1.Recordset.Fields(10).Value)+"元"
frame1.Caption="显示信息-"+DataCombo1.Text
DataCombo1.Enabled=False
Command1.Caption="取消"
Command2.Enabled=True
ElseIfCommand1.Caption="取消"Then
frame1.Caption="显示信息"
RichTextBox1.Text=""
DataCombo1.Enabled=True
DataCombo1.Text=""
Command1.Caption="查看信息"
Command2.Enabled=False
EndIf
Else
MsgBox"房间编号不能为空!
",vbOKOnly+vbInformation,"错误信息"
DataCombo1.SetFocus
EndIf
EndSub
PrivateSubCommand2_Click()‘费用结算
Me.Hide
frmPrice.Show
EndSub
PrivateSubCommand3_Click()‘退出
UnloadMe
EndSub
DimtimeAsDate
DimeAsInteger
PrivateSubCommand1_Click()‘退房
IfMsgBox("确定退房结帐吗?
",vbOKCancel+vbInformation,"提示信息")=vbOKThen
Adodc3.RecordSource="selectCouttime,Ccost,RnumfromGuestInfowhereRnum='"&frmCheckOut.DataCombo1.Text&"'andCouttimeisnull"'"updataGuestInfosetCouttime="&time&",Ccost="&e&""
Adodc3.Refresh
DimrnumAsString
rnum=Adodc3.Recordset.Fields
(2)
Adodc3.Recordset.Fields(0)=time
Adodc3.Recordset.Fields
(1)=e
Adodc3.Recordset.Update
Adodc4.RecordSource="select*fromRoomInfowhereRnum='"&rnum&"'"
Adodc4.Refresh
Adodc4.Recordset.Fields(3)="空"
Adodc4.Recordset.Fields(4)=Null
Adodc4.Recordset.Update
frmMain.Adodc1.Refresh
frmMain.Adodc6.Refresh
frmMain.DataGrid1.Refresh
MsgBox"退房成功!
",vbOKOnly+vbInformation,"提示信息"
UnloadfrmCheckOut
UnloadMe
Else
UnloadfrmCheckOut
UnloadMe
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadfrmCheckOut
UnloadMe
EndSub
PrivateSubForm_Load()‘费用结算窗体加载事件
Adodc2.RecordSource="selectRpricefromViewRoomInfowhereRnum="&frmCheckOut.DataCombo1.Text&""'查询房间的价格
Adodc2.Refresh
DimpriceAsInteger'房间价格
price=CInt(Adodc2.Recordset.Fields(0))'获取房间价格
Label2.Caption="房间:
"+frmCheckOut.DataCombo1.Text+""+"单价:
"+CStr(price)+"元/天"
Adodc1.RecordSource="select*fromViewGuestInfowhereRnum='"&frmCheckOut.DataCombo1.Text&"'andCouttimeisnull"'查询客户信息
Adodc1.Refresh
frame1.Caption="编号:
"+Trim(Adodc1.Recordset.Fields(0).Value)+"姓名:
"+Trim(Adodc1.Recordset.Fields
(1).Value)+"性别:
"+Trim(Adodc1.Recordset.Fields
(2).Value)+"年龄:
"+Trim(Adodc1.Recordset.Fields(3).Value)
DimaAsDouble
DimbAsInteger
DimcAsDouble
DimdAsInteger
time=Now()
a=CDbl(time-Adodc1.Recordset.Fields(6))'精确时间
b=CInt(time-Adodc1.Recordset.Fields(6))'对时间取整
c=a-b'计算出小于一天的时间
Ifc>0Then
d=b+1'不足一天算一天
Else
d=b
EndIf
e=d*price'计算住宿费
RichTextBox1.Text=vbCrLf+""+"入住时间:
"+Trim(Adodc1.Recordset.Fields(6).Value)+vbCrLf+vbCrLf+""+"当前时间:
"+Trim(time)+vbCrLf+vbCrLf+""+"共住"+CStr(a)+"天"+""+"计"+CStr(d)+"天"+vbCrLf+vbCrLf+""+"住宿费:
"+CStr(e)+"元"+"押金:
"+Trim(Adodc1.Recordset.Fields(10).Value)+"元"+"应收:
"+Trim(e-CInt(Adodc1.Recordset.Fields(10)))+"元"
EndSub
3、房间管理界面
PrivateSubCommand7_Click()‘增加房间
Command7.Enabled=False
Command8.Enabled=False
Command9.Enabled=False
Command10.Enabled=True
Command11.Enabled=True
frame1.Enabled=True
frame1.Caption="增加房间"
Text1.BackColor=&H80000005
Text2.BackColor=&H80000005
Text3.BackColor=&H80000005
Text4.BackColor=&H80000005
Text2.Visible=False
Combo3.Visible=True
Text4.Enabled=False
Text4.Text="空"
Text1.Enabled=True
Text2.Enabled=True
Text3.Enabled=True
Text1.SetFocus
EndSub
PrivateSubCommand8_Click()‘修改房间
Command7.Enabled=False
Command8.Enabled=False
Command9.Enabled=False
Command10.Enabled=True
Command11.Enabled=True
frame1.Enabled=True
frame1.Caption="修改房间"
Text1.Visible=False
DataCombo2.Visible=True
Text2.BackColor=&H80000005
Text3.BackCol