版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z酒店管理信息系统系统平台:Windows2000数据库效劳器:MicrosoftSQLServer2000开发工具:VisualBasic6.0系统开发人员:⒈编写目的酒店在正常的运营中需要对客房资源、顾客信息、结算信息进展管理,利用宾馆管理信息系统及时了解各个环节**息的变更,有利于提高管理效率。⒉系统功能分析
系统开发的总体任务是实现宾馆各种信息的系统化、规*化和自动化。主要完成功能:●有关客房标准的制定、标准信息的输入,包括标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视机、以及单独卫生间等。●客房标准信息的修改、查询等。●客房根本信息的输入,包括客房编号、客房类型、客房位置、客房单价、备注等。●客房根本信息的查询、修改,包括客房编号、客房类型、客房位置、客房单价、备注等。●剩余客房信息的查询等。●订房信息的输入,包括客房编号、客房种类、客房位置、客房单价、顾客**、顾客**、入住日期、折扣、备注信息等。●订房信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客**、顾客**、入住日期、折扣、备注信息等。●结算信息的输入,包括客房编号、客房种类、位置、客房单价、顾客**、顾客**、入住日期、折扣、结算日期、备注信息等。●结算信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客**、顾客**、入住日期、折扣、结日期、备注信息等。⒊系统功能模块设计
按构造化程序设计思想,分析得出如下系统功能模块图
宾馆管理信息系统结算信息管理订房信息管理客房信息管理
系统管理
结算信息查询
结算信息修改
结算信息添加
订房信息查询
订房信息修改
订房信息添加剩余客房信息查询
设置客房信息
设置客房标准
密码管理
用户管理客房信息查询客房信息修改客房信息添加客房标准修改客房标准添加
图Ⅰ系统功能模块图⒋数据库设计数据库设计步骤:●
数据库需求分析●
数据库概念构造设计●
数据库逻辑构造设计①数据库需求分析分析调查有关宾馆管理信息需求的根底上得本系统所处理的数据流程
客房标准设置根本信息输入客房登记根本信息录入客房信息管理顾客登记订房信息管理订房信息管理结算信息输入结算信息管理客房信息返回图Ⅱ宾馆管理信息系统数据流程图
针对一般宾馆管理信息系统的需求,通过对宾馆管理过程的内容和流程分析,设计如下面所示的数据项和数据构造:●
客房标准信息,包括的数据项有:标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视、、单独卫生间等。●
客房信息,包括的数据项有:客房编号、客房种类、客房位置、客房单价、备注等。●
订房信息,包括的数据项有:订房编号、客房编号、客房种类、客房位置、客房备注信息、顾客**、顾客**、入住时间、折扣、备注等。●
结算信息,包括的数据项有:订房编号、客房编号、客房种类、客房位置、客房备注信息、顾客**、顾客**、入住时间、折扣、结算时间、备注等。②数据库概念构造设计
本系统根据以上的设计规划出的实体有:客房标准信息实体、客房信息实体、订房信息实体、结算信息实体。各个实体具体的描述E-R图如下:客房标准信息实体标准编号标准名称床位数量客房单价
客房标准信息实体E-R图客房信息实体客房标准客房编号客房位置客房单价
客房信息实体E-R图订房信息实体客房信息顾客信息折
扣入住时间订房信息实体E-R图结算信息实体客房信息顾客信息结算时间结算金额结算信息实体E-R图客房标准信息客房登记客房信息管理订
房订房信息管理结算信息管理客房结算实体之间关系E-R图③数据库逻辑构造设计
首先将宾馆管理信息系统的数据库概念构造转化为SQL2000数据库系统所支持的实际数据模型,即:数据库的逻辑构造。其各个表格的设计结果如下列名数据类型可否为空说明TypeidVarcharNOTNULL标准编号TypenameVarcharNOTNULL标准名称AreaNumericNULL房间面积BednumNumericNULL床位数量HairconditionVarcharNULL是否有空调HtelephoneVarcharNULL是否有HtelevisionVarcharNULL是否有电视HtoiletVarcharNULL是否有单独卫生间PriceNumericNULL单价Roomtype客房标准信息表列名数据类型可否为空说明roomNOVarcharNOTNULL客房编号RoomtypeVarcharNOTNULL客房种类RoompositionVarcharNULL客房位置RoompriceNumericNULL单价PutupVarcharNOTNULL是否被预定RoommemoTe*tNULL备注Rooms客房信息表列名数据类型可否为空说明BooknoVarcharNOTNULL订房编号CustomnameVarcharNOTNULL顾客**CustomIDVarcharNOTNULL**RoomnoVarcharNOTNULL客房编号IndateDatetimeNULL入住日期DiscountNumericNULL折扣InmenoTe*tNULL备注CheckdateDatetimeNULL结算日期AmountNumericNULL金额Bookin订房信息表⒌数据库构造的实现利用SQL2000数据库系统中的查询分析实现数据库的逻辑构造,其表格如下:创立系统用户表格user_Info
CREATETABLE[dbo].[user_Info1](
[user_ID][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[user_PWD][char](10)COLLATEChinese_PRC_CI_ASNULL,
[user_Des][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
创立客房标准信息表格roomtype
CREATETABLE[dbo].[roomtype](
[typeid][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[typename][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[area][numeric](5,0)NULL,
[bednum][numeric](2,0)NULL,
[haircondition][char](2)COLLATEChinese_PRC_CI_ASNULL,
[htelephone][char](2)COLLATEChinese_PRC_CI_ASNULL,
[htelevision][char](2)COLLATEChinese_PRC_CI_ASNULL,
[htoilet][char](2)COLLATEChinese_PRC_CI_ASNULL,
[price][numeric](10,2)NULL
)ON[PRIMARY]创立客房信息表格roomsCREATETABLE[dbo].[rooms](
[roomNO][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[roomtype][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[roomposition][char](20)COLLATEChinese_PRC_CI_ASNULL,
[roomprice][numeric](10,2)NULL,
[putup][char](2)COLLATEChinese_PRC_CI_ASNOTNULL,
[roommemo][te*t]COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]TE*TIMAGE_ON[PRIMARY]创立订房信息表bookinCREATETABLE[dbo].[bookin](
[bookno][char](14)COLLATEChinese_PRC_CI_ASNOTNULL,
[customname][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[customID][char](18)COLLATEChinese_PRC_CI_ASNOTNULL,
[roomno][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[indate][datetime]NULL,
[discount][numeric](2,0)NULL,
[inmemo][te*t]COLLATEChinese_PRC_CI_ASNULL,
[checkdate][datetime]NULL,
[ammount][numeric](10,2)NULL)ON[PRIMARY]TE*TIMAGE_ON[PRIMARY]⒍宾馆管理信息系统具体程序实现⑴创立公用模块Module1.bas
添加公共数据操作函数,用以执行各种SQL语句。添加函数E*ecuteSQL,代码如下:PublicFunctionE*ecuteSQL(ByValSQLAsString,MsgStringAsString)_AsADODB.Recordset‘执行SQL语句,并返回记录集对象DimnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsString‘异常处理OnErrorGoToE*ecuteSQL_Error’‘用Split函数产生一个包含各个子串的数组
sTokens=Split(SQL)
Setn=NEWADODB.Connection‘翻开连接
n.OpenConnectString
IfInStr(“INSERT,DELETE,UPDATE〞,UCase$(sTokens(0)))Then
n.E*ecuteSQL
MsgString=sTokens(0)&〞querysuccessful〞
Else
Setrst=NEWADODO.Recordset
rst.OpenTrim$(SQL),n,adOpenKeyset,adLockOptimistic
rst.MoveLast
getRecordCount
‘返回记录集对象
SetE*ecuteSQL=rst
MsgString=〞查询到〞&rst.RecordCount&〞条记录〞
EndIfE*ecuteSQL_E*it:
Setrst=Nothing
Setn=Nothing
E*itFunctionE*ecuteSQL_Error:
MsgString=〞查询错误:〞&Err.Description
ResumeE*ecuteSQL_E*itEndFunctionPublicSubEnterToTab(KeyascAsInteger)‘判断是否为回车键
IfKeyasc=13Then‘Keyasc用来保存当前按键
‘转换成Tab键
SendKeys〞{TAB}〞
EndIfEndsub‘添加全局变量,用来记录各个窗口的读写状态,代码如下:PublicflagTeditAsBoolean‘标示是否进入修改的窗体PublicflagReditAsBooleanPublicflagBeditAsBooleanPublicflagCeditAsBooleanPublicgintCmodeAsIntegerPublicgintTmodeAsInteger’记录是添加还是修改状态,1为添加,2为修改PublicgintRmodeAsIntegerPublicgintBmodeAsIntegerPublicflagSeditAsBoolean⑵系统用户管理模块的创立
用户管理模块主要实现:
·用户登陆。
·添加用户。·修改用户
具体客房标准添加代码:PrivateSubForm_Load()‘载入窗体后,判断所处状态
DimintCountAsInteger
DimMsgTe*tAsString
DimiAsInteger
IfgintTmode=1Then‘判断是否属于添加状态
Me.Caption=Me.Caption&〞添加〞
Fori=0To3
bo1(i).AddItem〞否〞
bo1(i).AddItem〞是〞
bo1(i).ListInde*=0
Ne*ti
ElseIfgintTmode=2Then‘判断是否处于修改状态
Setmrc=E*ecuteSql(t*tSQL,MsgTe*t)
Ifmrc.EOF=falseThen
Withmrc
ForintCount=0To3
t*tItem(intCount)=.Fields(intCount)
Ne*tintCount
t*tItem(4)=.Fileds(8)
Fori=0To3
bo1(i).Additem〞否〞
bo1(i).Additem〞是〞
bo1(i).ListInde*=0
Ne*ti
EndWith
t*tItem(0).Enabled=False
EndIf
Me.Caption=Me.caption&〞修改〞EndIfmblChang=False
EndSubPrivateSubcmd_Click()’用户输入内容完毕后,单击cmdSave按钮触发Click事件
DimintCountAsInteger
DimsMegAsString
DimMsgTe*tAsString
ForintCount=0To4‘判断是否输入内容
IfTrim(t*tItem(intCount)&〞〞)=〞〞Then
SelectCaseintCount
Case0
sMeg=〞标准编号〞
Case1
sMeg=〞标准名称〞
Case2
sMeg=〞房间面积〞
Case3
sMeg=〞床位数量〞
Case4
sMeg=〞床位单价〞
EndSelect
sMeg=sMeg&〞不能为空!〞
MsgBo*sMeg,vbOkOnly+vbE*clamation,〞警告〞
t*tItem(intCount).SetFocus
E*itSub
Endif
Ne*tintCount‘判断输入内容是否为数字
ForintCount=2To4
IfNotIsNumeric(Trim(t*tItem(intCount)))Then
SelectCaseintCount
Case2
sMeg=〞房间面积〞
Case3
sMeg=〞床位数量〞
Case4
sMeg=〞床位单价〞
EndSelect
sMeg=sMeg&〞请输入数字!〞MsgBo*sMeg,vbOKOnly+vbE*clamation,〞警告〞t*tItem(intCount).SeFocusE*itSub
EndIf
Ne*tintCount
IfgintTmode=1Then‘判断是否有一样ID记录
t*tSQL=〞select*fromroomtypewheretypeid_=’〞&Trim(t*tItem(0))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
Ifmrc.EOF=FalseThen
MsgBo*“已经存在此标准编号的记录!〞,vbOKOnly+vbE*clamation,〞警告〞
t*tItem(0).SetFocus
E*itSub
EndIf
Mrc.Close
EndIf
t*tSQL=〞select*fromroomtypewheretypeid<>’〞&Trim(t*tItem(0))&〞’andtypename=’〞&Trim(t*tItem(1))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
Ifmrc.EOF=FalseThen
MsgBo*〞已经存在一样客房标准的记录!〞,vbOKOnly+vbE*clamation,“警告〞
t*tItem(1).Setfocus
E*itSub
EndIf
t*tSQL=〞deletefromroomtypewheretypeid=’〞&Trim(t*tItem(0))&〞’〞‘删除已有记录
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
t*tSQL=〞select*fromroottype〞‘添加新记录
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
mrc.AddNew
ForintCount=0To3
mrc.Fields(intCount)=Trim(t*tItem(intCount))
Ne*tintCount
ForintCount=0To3
mrc.Fields(intCount+4)=Trim(bo1(intCount))
Ne*tintCount
mrc.Fields(8)=Trim(t*tItem(4))
mrc.Update‘更新数据库
mrc.Close
ifgintTmode=1Then‘判断是否属于添加状态
MsgBo*“添加纪录成功!〞,vbOKOnly+vbE*clamtion,“添加记录〞
ForintCount=0To4
t*tItem(intCount)=〞〞‘去除已经输入的内容
Ne*tintCount
ForintCount=0To3
bo1(intCount).ListInde*=0
Ne*tintCount
mblChange=False’判断是否翻开窗口
ifflagTeditThen
UnloadfrmRoomtype
frmRoomtype.t*tSQL=“select*fromroomtype〞
frmRoomtype.Show
EndIf
ElseIfgintTmode=2Then‘判断是否处于修改状态
UnloadMe
IfflagTeditThen
UnloadfrmRoomtype
EndIf
frmRoomtype.t*tSQL=〞select*fromroomtype〞
frmRoomtype.Show
EndIf
EndSubPrivateSubt*tItem_GotFocus(Inde*AsInteger)’文本框获得焦点时触发该事件,即自动选中输入的内容,便于修改t*tItem(Inde*).SelStart=0t*tItem(Inde*).SelLength=Len(t*tItem(Inde*))EndSubPrivateSubcmdE*it_Click()’单击按钮cmdE*it取消添加信息IfmblChangeAndcmdSave.EnabledThen
IfMsgBo*(“保存当前记录的变化吗.〞,vbOKCancel+vbE*clamation,〞警告〞)=vbOKThen‘保存
CallcmdSave_Click
EndIfEndIfUnloadMeEndSubPrivateSubt*tItem_KeyDown(Inde*AsInteger,KeyCodeAsInteger,Shift_AsInteger)‘输入完内容,单击回车键将自动进入下一个文本框,触发文本框的Keydown事件
EnterToTabKeyCodeEndSub⑶修改客房标准窗体的创立PrivateSubFrom_Load()ShowTitleShowDataflagTedit=TrueEndSubPrivateSubShowTitle()‘调用showTitle函数,显示表头DimiAsIntegerWithmsgList
.Cols=10
.Te*tMatri*(0,1)=〞标准编号〞
.Te*tMatri*(0,2)=〞标准名称〞
.Te*tMatri*(0,3)=〞房间面积〞
.Te*tMatri*(0,4)=〞床位数量〞
.Te*tMatri*(0,5)=〞是否有空调〞
.Te*tMatri*(0,6)=〞是否有〞
.Te*tMatri*(0,7)=〞是否有电视〞
.Te*tMatri*(0,8)=〞是否有卫生间〞
.Te*tMatri*(0,9)=〞房间单价〞
.Fi*edRows=1‘固定表头
Fori=0To9‘设置各列的对齐方式
.ColAlignment(i)=0
Ne*ti
.FillStyle=fle*FillRepeat‘表头项居中
.Col=0
.Row=0
.RowSel=1
.ColSel=.Cols-1
.CellAlignment=4
.ColWidth(0)=300‘设置单元大小
.ColWidth(1)=1000
.ColWidth(2)=2000
.ColWidth(3)=2000
.ColWidth(4)=1000
.ColWidth(5)=1000
.ColWidth(6)=1000
.ColWidth(7)=1000
.ColWidth(8)=1000
.ColWidth(9)=1000
.Row=1EndWithEndSubPrivateSubShowData()‘调用showData函数,显示记录列表
DimiAsInteger
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)‘根据需要设置SQL语句,显示需要的记录
WithmsgList
.Rows=1
DoWhileNotmrc.EOF
.Rows=Rows+1
SelectCasemrc.Fields(i-1).Type
CaseadDBDate
.Te*tMatri*(.Rows-1,i)=Format(mrc.Fields(i-1)&〞〞,〞yyyy-mm-dd〞)
CaseElse
.Te*tMatri*(.Rows-1,i)=mrc.Fields(i-1)&〞〞
EndSelect
Ne*ti
Mrc.MoveNe*t
Loop
EndWith
mrc.CloseEndSubPrivateSubmsgList_MouseUp(ButtonAsInteger,ShiftAsInteger,*AsSingle,yAsSingle)‘选择记录,然后单击鼠标右键,触发MouseUp事件
IfButton=2AndShift=0Then
PopupMenufMainFrom.menuRoomtype
EndIfEndSubPrivateSubmenuModifyroomtype_Click()
DimintCountAsInteger
IfflagTeditThen
‘判断是否翻开记录窗体
IffrmRoomtype.msgList.Rows>1Then
fintTmode=2‘设置为修改状态
‘记下选择记录
frmRoomtype1.t*tSQL=〞select*fromroomtypewheretypeid’〞&Trim(frmRoomtype.msgList.Te*tMatri*(intCount,1))&〞’〞
frmRoomtype1.Show
Else
CallmenuAddroomtype_Click
EndIf
Else
frmRoomtype.t*tSQL=〞select*fromroomtype〞
frmRoomtype.Show
EndIfEndSubPrivateSubFrom_Resize()‘窗体变化时,调整标签和表格位置,使标签处于窗体的最上方,而表格始终处于标签下方
IfMe.WindowState<>vbMinimizedAndfMainFrom.WindowState<>vbMinimizedThen‘边界处理
IfMe.Scaleheight<10*lblTitle.HeightThen
E*itSub
EndIf
IfMe.ScaleWidth<lblTitle.Width+lblTitle.Width/2Then
E*itSub
EndIf
lblTitle.Top=lblTitle.Height‘控制控件的位置
lblTitle.Left=(Me.Width-lblTitle.Width)/2
msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2
msgList.Width=Me.ScaleWidth-200
msgList.Left=Me.ScaleLeft+100
EndIfEndSub⑷删除客房标准PrivateSubmenuDeleteroomtype_Click()
Dimt*tSQLAsString
DimintCountAsInteger
DimmrcAsADODB.Recordset
DimMsgTe*tAsString
IfflagTeditThen‘判断是否翻开记录窗体
IffrmRoomtype.msgList.Rows>1Then
IfMsgBo*(“真的要删除这条文件记录么.〞,vbOKCancel+vbE*clamation,〞警告〞)=vbOKThen
intCount=frmRo
t*tSQL=〞deletefromroomtypewheretypeid’〞&Trim(frmRoomtype.msgList.Te*tMatri*(intCount,1))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
UnloadfrmRoomtype‘关闭记录窗体
frmRoomtype.t*tSQL=〞select*fromroomtype〞‘重新选择所有记录
frmRoomtype.Show
EndIf
EndIf
EndIfEndSub⑸客房信息管理模块的创立
客房信息管理模块主要实现如下功能:
·添加客房信息
·修改客房信息
·删除客房信息
·查询客房信息
具体实现代码如下:PrivateSubFrom_Load()‘载入窗体时,自动添加客房信息种类
DimsSqlAsString
DimintCountAsInteger
DimMsgTe*tAsString
DimmrccAsADODB.Recordset
IfgintRmode=1Then‘判断是否处于添加状态
Me.Caption=me.Caption&“添加〞
t*tSQL=〞selectDISTINCTtypenamefromroomtype〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
cboItem(0).AddItemTrim(mrc.Fields(0))
mrc.MoveNe*t
Loop
cboItem(0).ListInde*=0‘显示记录内容
Else
MsgBo*“请先进展客房标准设置!〞,vbOKOnly+vbE*clamation,“警告〞
cmdSave.Enabled=False
E*itSub
EndIf
mrc.Close
ElseIfgintRmode=2Then‘判断是否处于修改状态
Setmrcc=E*ecuteSQL(t*tSQL,MsgTe*t)‘设置SQL语句显示当前选择记录
Ifmrcc.EOF=FalseThen
Withmrcc
t*tItem(0)=.Fields(0)
ForintCount=1To2
IfNotIsNull(.Fields(intCount+1))Then‘判断内容是否为空
t*tItem(intCount)=.Fields(intCount+1)
EndIf
Ne*tintCount
t*tItem(3)=.Fields(5)
t*tSQL=〞selectDISTINCTtypenamefromroomtype〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
cboItem(0).AddItemTrim(mrc.Fields(0))
mrc.MoveNe*t
Loop
cboItem(0).ListInde*=0
Else
MsgBo*“请先进展客房标准设置!〞,vbOKOnly+vbE*clamation,“警告〞
cmdSave.Enabled=False
E*itSub
EndIf
mrc.Close
EndWith
EndIf
mrcc.Close
Me.Caption=Me.Caption&“修改〞
EndIf
mblChange=FalseEndSubPrivateSubcmdSave_Click()‘单击保存按钮触发事件
DimintCountAsInteger
DimsMegAsString
DimmrccAsADODB.Recordset
DimMsgte*tAsString
ForintCount=0To3
IfTrim(T*tItem(intCount)&〞〞)=〞〞Then
SelectCaseintCount
Case0
sMeg=“客房编号〞
Case1
sMeg=“客房位置〞
EndSelect
sMeg=sMeg&“不能为空!〞
MsgBo*sMeg,vbOKOnly+vbE*clamation,“警告〞
t*tItem(intCount).SetFocus
E*itSub
EndIf
Ne*tintCount
IfgintRmode=1Then‘判断是否有重复记录
t*tSQL=〞select*fromroomswhereroomNO=‘〞&Trim(t*tItem(0))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,msgTe*t)
Ifmrc.EOF=FalseThen
MsgBo*“已经存在此客房编号的记录!〞,vbOKOnly+vbE*clamation,“警告〞
t*tItem(0).SetFocus
E*itSub
EndIf
mrc.Close
EndIf
IfgintRmode=2Then‘判断是否处于修改状态
t*tSQL=〞deletefromroomswhereroomNO=‘〞&Trim(t*tItem(0))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
EndIf
t*tSQL=〞select*fromrooms〞‘再参加新记录
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
mrc.AddNew‘为数据库对象添加记录
mrc.Fields(0)=Trim(t*tItem(0))
mrc.Fields(1)=Trim(t*tItem(0))
ForintCount=1To2
IfTrim(t*tItem(intCount)&〞〞)=〞〞Then
mrc.Fields(intCount+1)=Null
Else
mrc.Fields(intCount+1)=Trim(t*tItem(intCount))
EndIf
Ne*tintCount
mrc.Fields(4)=〞〞
mrc.Fields(5)=Trim(t*tItem(3))
mrc.Update
mrc.Close
IfgintRmode=1Then
ForintCount=0To3
t*tItem(intCount)=〞〞
Ne*tintCount
mblChange=False
IfflagReditThen
UnloadfrmRoom
frmRoom.t*tSQL=〞select*fromrooms〞‘重新显示数据
frmRoom.Show
EndIf
ElseIfgintRmode=2Then
UnloadMe
IfflagReditThen
UnloadfrmRoom
EndIf
frmRoom.t*tSQL=〞select*fromrooms〞
frmRoom.Show
EndIfEndSub·修改客房信息PrivateSubmenuModifyroom_Click()‘选择修改房间信息,触menuModifyroom的Click事件,程序判断为修改状态后,首先删除原有记录,然后把新内容参加到数据库中
DimintCountAsInteger
IfflagReditThen‘判断记录窗体是否翻开
IffrmRoom.msgList.Rows>1Then‘判断客房信息列表内容是否为空
gintRmode=2‘设置为修改状态‘纪录当前记录位置frmRoom1.t*tSQL=〞select*fromroomswhereroomNO=’〞&Trim(frmRoom.msgList.Te*tMatri*(intCount,1))&〞’〞frmRoom1.Show
Else
CallmenuAddroom_Click‘添加记录EndIfElse
frmRoom.t*tSQL=〞select*fromrooms〞
frmRoom.ShowEndIfEndSub·删除客房信息PrivateSubmenuDeleteroom_Click()
Dimt*tSQLAsString
DimintCountAsInteger
DimmrcAsADODB.Recordset
DimMsgTe*tAsString
IfflagTeditThen
IffrmRoom.msgList.Rows>1Then‘判断客房信息列表内容是否为空IfMsgBo*(“真的要删除这条文件记录么.〞,vbOKCancel+vbE*clamation,“警告〞)=vbOKThen
‘记载当前记录位置t*tSQL=〞deletefromroomswhereroomNO=‘〞&Trim(frmRoom.msgList.Te*tMatri*(intCount,1)&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)‘执行删除操作UnloadfrmRoom
frmRoom.t*tSQL=〞select*fromrooms〞
frmRoom.Show
EndIf
EndIf
EndIfEndSub·查询客房信息PrivateSubFrom_Load()‘载入窗体时,将自动参加所有记录的入库时间
DimiAsInteger
DimjAsInteger
DimsSqlAsString
Dimt*tSQLAsString
DimMsgTe*tAsString
DimmrcAsADODB.Recordset
t*tSQL=〞selectDISTINCTtypenamefromroomtype〞‘初始化客房种类
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
bo1.AddItemTrim(mrc.Fields(0))
Mrc.MoveNe*t
Loop
bo1.ListInde*=0
Else
MsgBo*“请先进展客房标准设置!〞,vbOKOnly+vbE*clamation,〞警告〞
E*itSub
EndIf
mrc.CloseEndSubPrivateSubcmdOK_Click()‘设置完查询内容和方式后,单击cmdOk按钮查询
DimsQSqlAsString
IfchkItem(0).Value=vbCheckedThen
sQSql=〞roomNO=’〞&Trim(t*tItem(0)&〞〞)&〞’〞
EndIf
IfchkItem(1).Value=vbCheckedThen
IfTrim(sQSql&〞〞)=〞〞Then
sQSql=〞roomtype=’〞&Trim(bo1&〞〞)&〞’〞
Else
sQSql=sQSql&〞androomtype=’〞&Trim(bo1&〞〞)&〞’〞
EndIf
EndIf
IfTrim(sQSql)=〞〞Then
MsgBo*“请设置查询条件!〞,vbOKOnly+vbE*clamation,“警告〞
E*itSub
Else
IfflagReditThen
UnloadfrmRoom
EndIf
frmRoom.t*tSQL=〞select*fromroomswhere〞&sQSql
frmRoom.Show
EndIf
Me.HideEndSub⑹订房信息管理模块的创立订房信息管理模块主要实现如下功能:·查询剩余客房信息·添加订房信息·修改订房信息·删除订房信息·查询订房库信息具体实现代码如下:PrivateSubFrom_Load()‘载入窗体时,程序将自动参加客房种类和客房单价
Dimt*tSQLAsString
DimMsgTe*tAsString
DimmrcAsADODB.Recordset
t*tSQL=〞selectdistincttypenamefromroomtype〞‘选择所有客房种类
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
bo1(0).AddItemmrc.Fields(0)
mrc.MoveNe*t
Loop
EndIf
mrc.Close
t*tSQL=〞selectdistinctpricefromroomtype〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
bo1(1).AddItemmrc.Fields(0)
bo1(2).AddItemmrc.Fields(0)
mrc.MoveNe*t
Loop
EndIf
mrc.CloseEndSubPrivateSubcmdOK_Click()
DimsQSqlAsString
IfchkItem(0).Value=vbCheckedThen
sQSql=〞roomtype=’〞&Trim(bo1(0)&〞〞)&〞’〞
Endif
IfchkItem(1).Value=vbCheckedThen
IfTrim(sQSql&〞〞)=〞〞Then
IfTrim(bo1(1)&〞〞)<>〞〞AndTrim(bo1(2)&〞〞)<>〞〞Then
sQSql=〞roomprice<=’〞&Trim(bo1(1)&〞〞)&Androomprice>=’〞&Trim(bo1(2)&〞〞)〞’〞
ElseIfTrim(bo1(1)&〞〞)=〞〞AndTrim(bo1(2)&〞〞)<>〞〞Then
sQSql=〞roomprice>=’〞&Trim(bo1(2)&〞〞)&〞’〞
ElseIfTrim(bo1(1)&〞〞)<>〞〞AndTrim(bo1(2)&〞〞=〞〞Then
sQSql=〞roomprice<=’〞&Trim(bo1(1)&〞〞)&〞’〞
EndIf
Else
IfTrim(bo1(1)&〞〞)<>〞〞AndTrim(bo1(2)&〞〞)<>〞〞Then
sQSql=sQSql&〞androomprice>=’〞&Trim(bo1(1)&〞〞)&〞’androomprice>=’〞&Trim(bo1(2)&〞〞)&〞’〞
ElseIfTrim(bo1(1)&〞〞)=〞〞AndTrim(bo1(2)&〞〞)<>〞〞Then
sQSql=sQSql&〞androomprice>=’〞&Trim(bo1(2)&〞〞)&〞’〞
ElseIfTrim(bo1(1)&〞〞)<>〞〞AndTrim(bo1(2)&〞〞)=〞〞Then
sQSql=sQSql&〞androomprice<=’〞&Trim(bo1(1)&〞〞)&〞’〞
EndIf
EndIf
IfTrim(sQSql)=〞〞Then
MsgBo*“请设置查询条件!〞,vbOKOnly+vbE*clamation,“警告〞
E*itSub
Else
IfflagReditThen
UnloadfrmRoom
EndIf
frmRoom.t*tSQL=〞select*fromroomswhere〞&sQSql&〞andputup〞<>’y’〞
frmRoom.Show
flagSedit=True
EndIf
Me.HideEndSubPrivateSubFrom_Load()‘添加订房信息,载入窗体时把所有未预定的客房信息参加其中
DimsSqlAsString
DimintCountAsInteger
DimMsgTe*tAsString
IfflagSeditThen‘判断翻开方式
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
ForintCount=0To3
cboItem(intCount).AddItemmrc.Fields(intCount)
cboItem(intCount).ListInde*=0
Ne*tintCount
t*tItem(5)=mrc.Fields(5)
EndIf
mrc.Close
t*tNo=GetRkno()
gintBmode=1
Else
IfgintBmode=1Then
Me.Caption=Me.Caption&“添加〞
t*tSQL=〞selectDISTINCTroomNOfromroomswhereputup<>’y’〞
Setmrc=E*ecuteSQL(t*tSQL.MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
cboItem(0).AddItemTrim(mrc.Fields(0))
mrc.MoveNe*t
Loop
Else
MsgBo*“请先进展客房登记!〞,vbOKOnly+vbE*clamation,“警告〞
cmdSave.Enabled=False
E*itSub
EndIf
mrc.Close
t*tNo=GetRkno
ElseIfgintBmode=2Then
Setmrc.E*ecuteSQL(t*tSQL,MsgTe*t)
Ifmrc.EOFThen
Withmrc
t*tNO=!bookno
ForintCount=0To1
IfNotIsNull(.Fields(intCount+1))Then
t*tItem(intCount)=.Fields(intCount+1)
EndIf
Ne*tintCount
cboItem(0).AddItem!roomno
cboItem(0).ListInde*=0
ForintCount=2To4
IfNotIsNull(.Fields(intCount+2))Then
t*tItem(intCount)=.Fields(intCount+2)
EndIf
Ne*tintCount
EndWith
EndIf
mrc.Close
Me.Caption=Me.Caption&“修改〞
t*tSQL=〞select*fromroomswhereroomNO=’〞&Trim(cboItem(0))&〞’〞
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
ForintCount=1To3
cboItem(intCount).AddItemmrc.Fields(intCount)
cboItem(intCount).ListInde*=0
Ne*tintCount
t*tItem(5)=mrc.Fields(5)
EndIf
mrc.Close
EndIf
EndIf
mblChange=FalseEndSubPrivateSubcmdSave_Click()‘添加记录到数据库中
DimintCountAsInteger
DimsMegAsString
DimmrccAsADODB.Recordset
DimMsgTe*tAsString
ForintCount=0To3‘判断输入内容是否为空
IfTrim(t*tItem(intCount)&〞〞)=〞〞Then
SelectCaseintCount
Case0
sMeg=“顾客**〞
Case1
sMeg=“**〞
Case2
sMeg=“折扣〞
Case3
sMeg=“入住时间〞
EndSelect
sMeg=sMeg&“不能为空!〞
MsgBo*sMeg,vbOKOnly+vbE*clamation,“警告〞
t*tItem(intCount).SetFocus
E*itSub
EndIf
Ne*tintCount
ForintCount=0To3
IfTrim(vboItem(intCount)&〞〞)=〞〞Then
SelectCaseintCount
Case0
sMeg=“客房编号〞
Case1
sMeg=“客房种类〞
Case2
sMeg=“客房位置〞
Case3
sMeg=“客房单价〞
EndSelect
sMeg=sMeg&“不能为空!〞
MsgBo*sMeg,vbOKOnly+vbE*clamation,“警告〞
cboItem(intCount).SetFocus
E*itSub
EndIf
Ne*tintCount
IfIsDate(t*tItem(2))Then
t*tItem(2)=Format(t*tItem(2),〞yyyy-mm-dd〞)
Else
MsgBo*“入库时间应输入日期(yyyy-mm-dd)!〞,vbOKOnly+vbE*clamation,〞警告〞
t*tItem(2).SetFocus
E*itSub
EndIf
ForintCount=1To3Step2
IfNotIsNumeric(t*tItem(intCount))Then
MsgBo*“请输入数字〞,vbOKOnly+vbE*clamation,“警告〞
t*tItem(intCount).SetFocus
E*itSub
EndIf
Ne*tintCount
IfgintBmode=2Then
t*tSQL=〞deletefrombookingwherebookno=’〞&Trim(t*tNo)&〞’〞
Setmrcc=E*ecuteSQL(t*tSQL,MsgTe*t)
EndIf
t*tSQL=〞select*frombooking〞
Setmrcc=E*ecuteSQL(t*tSQL,MsgTe*t)
mrcc.AddNew
mrcc.Fields(0)=t*tNO
ForintCount=0To1
mrcc.Fields(intCount+1)=t*tItem(intTe*t)
Ne*tintCount
mrcc.Fields(3)=cboItem(0)
ForintCount=2To4
mrcc.Fields(intCount+2)=t*tItem(intCount)
Ne*tintCount
mrcc.Fields(8)=0
mrcc.Update
mrcc.Close
t*tSQL=〞select*fromroomswhereroomNO=’〞&Trim(vboItem(0))&〞’〞
Setmrcc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrcc.EOfThen
mrcc!putup=〞y〞
EndIf
mrcc.Update
mrcc.Close
IfgintBmode=1Then
MsgBo*“添加订房信息成功!〞,vbOKOnly+vbE*clamation,“添加订房消息〞
UnloadMe
IfflagBeditThen
UnloadfrmBookin
EndIf
frmBookin.t*tSQL=〞selectbookno,customname,customID,roomno,indate,discount,inmemofrombookingwhereamount=’0’
frmBookin.Show
Else
MsgBo*“修改订房信息成功!〞,vbOKOnly+vbE*clamation,“修改订房信息〞
UnloadMe
IfflagBeditThen
UnloadfrmBookin
EndIf
frmBookin.t*tSQL=〞selectbookno,customname,customID,roomno,indate,discount,inmemofrombookingwhereamount=’0’
frmBookin.Show
EndIfEndSub⑺结算信息管理模块的创立结算信息管理模块主要实现如下功能:·添加结算信息·修改结算信息·查询结算信息具体实现代码如下:PrivateSubFrom_Load()‘窗体载入时,自动参加所有未结算客房信息
DimsSqlAsString
DimintCountAsInteger
DimMsgTe*tAsString
IfgintCmode=1Then‘判断是否处于添加状态
Me.Caption=Me.Caption&“添加〞
t*tSQL=〞selectDISTINCTroomnofrombookingwhereamount=’0’〞‘
Setmrc=E*ecuteSQL(t*tSQL,MsgTe*t)
IfNotmrc.EOFThen
DoWhileNotmrc.EOF
cboItem(0).AddItemTrim(mrc!roomno)
mrc.MoveNe*t
Loop
Else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都银杏酒店管理学院《土壤生态综合实验》2023-2024学年第一学期期末试卷
- 2024年餐饮服务合同及管理协议
- 2024深圳汽车租赁新能源车位租赁合同3篇
- 2024年简化版:锚索工程承包合同
- 2024年运输车辆挂靠与物流配送及货运代理合同3篇
- 二零二五年度公共场所安全应急演练服务合同2篇
- 平台生态系统的建设与优化策略
- 2025版农业产业劳动合同安全监管协议范本3篇
- 2024年车辆租用期间全面保险合同书版
- 中国颈椎枕头行业市场发展现状及前景趋势与投资分析研究报告(2024-2030版)
- 广东省深圳市2023-2024学年高二上学期期末测试英语试卷(含答案)
- 乘风化麟 蛇我其谁 2025XX集团年终总结暨颁奖盛典
- 人教版一年级数学2024版上册期末测评(提优卷一)(含答案)
- 医疗护理员理论知识考核试题题库及答案
- 湖北省荆州市八县市区2023-2024学年高二上学期1月期末联考数学试题 附答案
- 保密知识培训
- 2024年人教版八年级历史下册期末考试卷(附答案)
- Python语言基础与应用学习通超星期末考试答案章节答案2024年
- 2024年山东省济南市中考道德与法治试题卷(含答案解析)
- 危险源辨识及分级管控管理制度
- 江西省稳派教育2025届数学高二上期末教学质量检测模拟试题含解析
评论
0/150
提交评论