还剩30页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
宾馆管理信息系统系统平台Windows2000数据库服务器MicrosoftSQLServer2000开发工具VisualBasic
6.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是否被预定RoommemoTextNULL备注Rooms客房信息表列名数据类型可否为空说 明BooknoVarcharNOTNULL订房编号CustomnameVarcharNOTNULL顾客姓名CustomIDVarcharNOTNULL身份证号码RoomnoVarcharNOTNULL客房编号IndateDatetimeNULL入住日期DiscountNumericNULL折扣InmenoTextNULL备注CheckdateDatetimeNULL结算日期AmountNumericNULL金额Bookin订房信息表⒌数据库结构的实现利用SQL2000数据库系统中的查询分析实现数据库的逻辑结构,其表格如下创建系统用户表格user_InfoCREATETABLE[dbo].[user_Info1][user_ID][char]10COLLATEChinese_PRC_CI_ASNOTNULL[user_PWD][char]10COLLATEChinese_PRC_CI_ASNULL[user_Des][char]10COLLATEChinese_PRC_CI_ASNULLON[PRIMARY]创建客房标准信息表格 roomtypeCREATETABLE[dbo].[roomtype][typeid][char]10COLLATEChinese_PRC_CI_ASNOTNULL[typename][char]10COLLATEChinese_PRC_CI_ASNOTNULL[area][numeric]50NULL[bednum][numeric]20NULL[haircondition][char]2COLLATEChinese_PRC_CI_ASNULL[htelephone][char]2COLLATEChinese_PRC_CI_ASNULL[htelevision][char]2COLLATEChinese_PRC_CI_ASNULL[htoilet][char]2COLLATEChinese_PRC_CI_ASNULL[price][numeric]102NULLON[PRIMARY]创建客房信息表格 roomsCREATETABLE[dbo].[rooms][roomNO][char]10COLLATEChinese_PRC_CI_ASNOTNULL[roomtype][char]10COLLATEChinese_PRC_CI_ASNOTNULL[roomposition][char]20COLLATEChinese_PRC_CI_ASNULL[roomprice][numeric]102NULL[putup][char]2COLLATEChinese_PRC_CI_ASNOTNULL[roommemo][text]COLLATEChinese_PRC_CI_ASNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]创建订房信息表bookinCREATETABLE[dbo].[bookin][bookno][char]14COLLATEChinese_PRC_CI_ASNOTNULL[customname][char]10COLLATEChinese_PRC_CI_ASNOTNULL[customID][char]18COLLATEChinese_PRC_CI_ASNOTNULL[roomno][char]10COLLATEChinese_PRC_CI_ASNOTNULL[indate][datetime]NULL[discount][numeric]20NULL[inmemo][text]COLLATEChinese_PRC_CI_ASNULL[checkdate][datetime]NULL[ammount][numeric]102NULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]⒍宾馆管理信息系统具体程序实现⑴创建公用模块Module
1.bas添加公共数据操作函数,用以执行各种SQL语句添加函数ExecuteSQL,代码如下PublicFunctionExecuteSQLByValSQLAsStringMsgStringAsString_AsADODB.Recordset‘执行SQL语句,并返回记录集对象DimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokensAsString‘异常处理OnErrorGoToExecuteSQL_Error’‘用Split函数产生一个包含各个子串的数组sTokens=SplitSQLSetcnn=NEWADODB.Connection‘打开连接cnn.OpenConnectStringIfInStr“INSERTDELETEUPDATE”UCase$sTokens0ThenCnn.ExecuteSQLMsgString=sTokens0”querysuccessful”ElseSetrst=NEWADODO.Recordsetrst.OpenTrim$SQLcnnadOpenKeysetadLockOptimisticrst.MoveLastgetRecordCount‘返回记录集对象SetExecuteSQL=rstMsgString=”查询到”rst.RecordCount”条记录”EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:MsgString=”查询错误:”Err.DescriptionResumeExecuteSQL_ExitEndFunctionPublicSubEnterToTabKeyascAsInteger‘判断是否为回车键IfKeyasc=13Then‘Keyasc用来保存当前按键‘转换成Tab键SendKeys”{TAB}”EndIfEndsub‘添加全局变量,用来记录各个窗口的读写状态,代码如下PublicflagTeditAsBoolean‘标示是否进入修改的窗体PublicflagReditAsBooleanPublicflagBeditAsBooleanPublicflagCeditAsBooleanPublicgintCmodeAsIntegerPublicgintTmodeAsInteger’记录是添加还是修改状态,1为添加,2为修改PublicgintRmodeAsIntegerPublicgintBmodeAsIntegerPublicflagSeditAsBoolean⑵系统用户管理模块的创建用户管理模块主要实现·用户登陆·添加用户·修改用户具体客房标准添加代码PrivateSubForm_Load‘载入窗体后,判断所处状态DimintCountAsIntegerDimMsgTextAsStringDimiAsIntegerIfgintTmode=1Then‘判断是否属于添加状态Me.Caption=Me.Caption”添加”Fori=0To3Combo1i.AddItem”否”Combo1i.AddItem”是”Combo1i.ListIndex=0NextiElseIfgintTmode=2Then‘判断是否处于修改状态Setmrc=ExecuteSqltxtSQLMsgTextIfmrc.EOF=falseThenWithmrcForintCount=0To3txtItemintCount=.FieldsintCountNextintCounttxtItem4=.Fileds8Fori=0To3Combo1i.Additem”否”Combo1i.Additem”是”Combo1i.ListIndex=0NextiEndWithtxtItem
0.Enabled=FalseEndIfMe.Caption=Me.caption”修改”EndIfmblChang=FalseEndSubPrivateSubcmd_Click’用户输入内容完毕后,单击cmdSave按钮触发Click事件DimintCountAsIntegerDimsMegAsStringDimMsgTextAsStringForintCount=0To4‘判断是否输入内容IfTrimtxtItemintCount””=””ThenSelectCaseintCountCase0sMeg=”标准编号”Case1sMeg=”标准名称”Case2sMeg=”房间面积”Case3sMeg=”床位数量”Case4sMeg=”床位单价”EndSelectsMeg=sMeg”不能为空!”MsgBoxsMegvbOkOnly+vbExclamation”警告”txtItemintCount.SetFocusExitSubEndifNextintCount‘判断输入内容是否为数字ForintCount=2To4IfNotIsNumericTrimtxtItemintCountThenSelectCaseintCountCase2sMeg=”房间面积”Case3sMeg=”床位数量”Case4sMeg=”床位单价”EndSelectsMeg=sMeg”请输入数字!”MsgBoxsMegvbOKOnly+vbExclamation”警告”txtItemintCount.SeFocusExitSubEndIfNextintCountIfgintTmode=1Then‘判断是否有相同ID记录txtSQL=”select*fromroomtypewheretypeid_=’”TrimtxtItem0”’”Setmrc=ExecuteSQLtxtSQLMsgTextIfmrc.EOF=FalseThenMsgBox“已经存在此标准编号的记录!”vbOKOnly+vbExclamation”警告”txtItem
0.SetFocusExitSubEndIfMrc.CloseEndIftxtSQL=”select*fromroomtypewheretypeid’”TrimtxtItem0”’andtypename=’”TrimtxtItem1”’”Setmrc=ExecuteSQLtxtSQLMsgTextIfmrc.EOF=FalseThenMsgBox”已经存在相同客房标准的记录!”vbOKOnly+vbExclamation“警告”txtItem
1.SetfocusExitSubEndIftxtSQL=”deletefromroomtypewheretypeid=’”TrimtxtItem0”’”‘删除已有记录Setmrc=ExecuteSQLtxtSQLMsgTexttxtSQL=”select*fromroottype”‘添加新记录Setmrc=ExecuteSQLtxtSQLMsgTextmrc.AddNewForintCount=0To3mrc.FieldsintCount=TrimtxtItemintCountNextintCountForintCount=0To3mrc.FieldsintCount+4=TrimCombo1intCountNextintCountmrc.Fields8=TrimtxtItem4mrc.Update‘更新数据库mrc.CloseifgintTmode=1Then‘判断是否属于添加状态MsgBox“添加纪录成功!”vbOKOnly+vbExclamtion“添加记录”ForintCount=0To4txtItemintCount=””‘清除已经输入的内容NextintCountForintCount=0To3Combo1intCount.ListIndex=0NextintCountmblChange=False’判断是否打开窗口ifflagTeditThenUnloadfrmRoomtypefrmRoomtype.txtSQL=“select*fromroomtype”frmRoomtype.ShowEndIfElseIfgintTmode=2Then‘判断是否处于修改状态UnloadMeIfflagTeditThenUnloadfrmRoomtypeEndIffrmRoomtype.txtSQL=”select*fromroomtype”frmRoomtype.ShowEndIfEndSubPrivateSubtxtItem_GotFocusIndexAsInteger’文本框获得焦点时触发该事件,即自动选中输入的内容,便于修改txtItemIndex.SelStart=0txtItemIndex.SelLength=LentxtItemIndexEndSubPrivateSubcmdExit_Click’单击按钮cmdExit取消添加信息IfmblChangeAndcmdSave.EnabledThenIfMsgBox“保存当前记录的变化吗?”vbOKCancel+vbExclamation”警告”=vbOKThen‘保存CallcmdSave_ClickEndIfEndIfUnloadMeEndSubPrivateSubtxtItem_KeyDownIndexAsIntegerKeyCodeAsIntegerShift_AsInteger‘输入完内容,单击回车键将自动进入下一个文本框,触发文本框的Keydown事件EnterToTabKeyCodeEndSub⑶修改客房标准窗体的创建PrivateSubFrom_LoadShowTitleShowDataflagTedit=TrueEndSubPrivateSubShowTitle‘调用showTitle函数,显示表头DimiAsIntegerWithmsgList.Cols=
10.TextMatrix01=”标准编号”.TextMatrix02=”标准名称”.TextMatrix03=”房间面积”.TextMatrix04=”床位数量”.TextMatrix05=”是否有空调”.TextMatrix06=”是否有电话”.TextMatrix07=”是否有电视”.TextMatrix08=”是否有卫生间”.TextMatrix09=”房间单价”.FixedRows=1‘固定表头Fori=0To9‘设置各列的对齐方式.ColAlignmenti=0Nexti.FillStyle=flexFillRepeat‘表头项居中.Col=
0.Row=
0.RowSel=
1.ColSel=.Cols-
1.CellAlignment=
4.ColWidth0=300‘设置单元大小.ColWidth1=
1000.ColWidth2=
2000.ColWidth3=
2000.ColWidth4=
1000.ColWidth5=
1000.ColWidth6=
1000.ColWidth7=
1000.ColWidth8=
1000.ColWidth9=
1000.Row=1EndWithEndSubPrivateSubShowData‘调用showData函数,显示记录列表DimiAsIntegerSetmrc=ExecuteSQLtxtSQLMsgText‘根据需要设置SQL语句,显示需要的记录WithmsgList.Rows=1DoWhileNotmrc.EOF.Rows=Rows+1Fori=1Tomrc.Fields.CountSelectCasemrc.Fieldsi-
1.TypeCaseadDBDate.TextMatrix.Rows-1i=Formatmrc.Fieldsi-1”””yyyy-mm-dd”CaseElse.TextMatrix.Rows-1i=mrc.Fieldsi-1””EndSelectNextiMrc.MoveNextLoopEndWithmrc.CloseEndSubPrivateSubmsgList_MouseUpButtonAsIntegerShiftAsIntegerxAsSingleyAsSingle‘选择记录,然后单击鼠标右键,触发MouseUp事件IfButton=2AndShift=0ThenPopupMenufMainFrom.menuRoomtypeEndIfEndSubPrivateSubmenuModifyroomtype_ClickDimintCountAsIntegerIfflagTeditThen‘判断是否打开记录窗体IffrmRoomtype.msgList.Rows1ThenfintTmode=2‘设置为修改状态intCount=frmRoomtype.msgList.Row‘记下选择记录frmRoomtype
1.txtSQL=”select*fromroomtypewheretypeid’”TrimfrmRoomtype.msgList.TextMatrixintCount1”’”frmRoomtype
1.ShowElseCallmenuAddroomtype_ClickEndIfElsefrmRoomtype.txtSQL=”select*fromroomtype”frmRoomtype.ShowEndIfEndSubPrivateSubFrom_Resize‘窗体变化时,调整标签和表格位置,使标签处于窗体的最上方,而表格始终处于标签下方IfMe.WindowStatevbMinimizedAndfMainFrom.WindowStatevbMinimizedThen‘边界处理IfMe.Scaleheight10*lblTitle.HeightThenExitSubEndIfIfMe.ScaleWidthlblTitle.Width+lblTitle.Width/2ThenExitSubEndIflblTitle.Top=lblTitle.Height‘控制控件的位置lblTitle.Left=Me.Width-lblTitle.Width/2msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2msgList.Width=Me.ScaleWidth-200msgList.Left=Me.ScaleLeft+100msgList.Height=Me.ScaleHeight-msgList.Top-200EndIfEndSub⑷删除客房标准PrivateSubmenuDeleteroomtype_ClickDimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsStringIfflagTeditThen‘判断是否打开记录窗体IffrmRoomtype.msgList.Rows1ThenIfMsgBox“真的要删除这条文件记录么?”,vbOKCancel+vbExclamation”警告”=vbOKThenintCount=frmRoomtype.msgList.RowtxtSQL=”deletefromroomtypewheretypeid’”TrimfrmRoomtype.msgList.TextMatrixintCount1”’”Setmrc=ExecuteSQLtxtSQLMsgTextUnloadfrmRoomtype‘关闭记录窗体frmRoomtype.txtSQL=”select*fromroomtype”‘重新选择所有记录frmRoomtype.ShowEndIfEndIfEndIfEndSub⑸客房信息管理模块的创建客房信息管理模块主要实现如下功能·添加客房信息·修改客房信息·删除客房信息·查询客房信息具体实现代码如下PrivateSubFrom_Load‘载入窗体时,自动添加客房信息种类DimsSqlAsStringDimintCountAsIntegerDimMsgTextAsStringDimmrccAsADODB.RecordsetIfgintRmode=1Then‘判断是否处于添加状态Me.Caption=me.Caption“添加”txtSQL=”selectDISTINCTtypenamefromroomtype”Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFcboItem
0.AddItemTrimmrc.Fields0mrc.MoveNextLoopcboItem
0.ListIndex=0‘显示记录内容ElseMsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation“警告”cmdSave.Enabled=FalseExitSubEndIfmrc.CloseElseIfgintRmode=2Then‘判断是否处于修改状态Setmrcc=ExecuteSQLtxtSQLMsgText‘设置SQL语句显示当前选择记录Ifmrcc.EOF=FalseThenWithmrcctxtItem0=.Fields0ForintCount=1To2IfNotIsNull.FieldsintCount+1Then‘判断内容是否为空txtItemintCount=.FieldsintCount+1EndIfNextintCounttxtItem3=.Fields5txtSQL=”selectDISTINCTtypenamefromroomtype”Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFcboItem
0.AddItemTrimmrc.Fields0mrc.MoveNextLoopcboItem
0.ListIndex=0ElseMsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation“警告”cmdSave.Enabled=FalseExitSubEndIfmrc.CloseEndWithEndIfmrcc.CloseMe.Caption=Me.Caption“修改”EndIfmblChange=FalseEndSubPrivateSubcmdSave_Click‘单击保存按钮触发事件DimintCountAsIntegerDimsMegAsStringDimmrccAsADODB.RecordsetDimMsgtextAsStringForintCount=0To3IfTrimTxtItemintCount””=””ThenSelectCaseintCountCase0sMeg=“客房编号”Case1sMeg=“客房位置”EndSelectsMeg=sMeg“不能为空!”MsgBoxsMegvbOKOnly+vbExclamation“警告”txtItemintCount.SetFocusExitSubEndIfNextintCountIfgintRmode=1Then‘判断是否有重复记录txtSQL=”select*fromroomswhereroomNO=‘”TrimtxtItem0”’”Setmrc=ExecuteSQLtxtSQLmsgTextIfmrc.EOF=FalseThenMsgBox“已经存在此客房编号的记录!”vbOKOnly+vbExclamation“警告”txtItem
0.SetFocusExitSubEndIfmrc.CloseEndIfIfgintRmode=2Then‘判断是否处于修改状态txtSQL=”deletefromroomswhereroomNO=‘”TrimtxtItem0”’”Setmrc=ExecuteSQLtxtSQLMsgTextEndIftxtSQL=”select*fromrooms”‘再加入新记录Setmrc=ExecuteSQLtxtSQLMsgTextmrc.AddNew‘为数据库对象添加记录mrc.Fields0=TrimtxtItem0mrc.Fields1=TrimtxtItem0ForintCount=1To2IfTrimtxtItemintCount””=””Thenmrc.FieldsintCount+1=NullElsemrc.FieldsintCount+1=TrimtxtItemintCountEndIfNextintCountmrc.Fields4=””mrc.Fields5=TrimtxtItem3mrc.Updatemrc.CloseIfgintRmode=1ThenForintCount=0To3txtItemintCount=””NextintCountmblChange=FalseIfflagReditThenUnloadfrmRoomfrmRoom.txtSQL=”select*fromrooms”‘重新显示数据frmRoom.ShowEndIfElseIfgintRmode=2ThenUnloadMeIfflagReditThenUnloadfrmRoomEndIffrmRoom.txtSQL=”select*fromrooms”frmRoom.ShowEndIfEndSub·修改客房信息PrivateSubmenuModifyroom_Click‘选择修改房间信息,触menuModifyroom的Click事件程序判断为修改状态后,首先删除原有记录,然后把新内容加入到数据库中DimintCountAsIntegerIfflagReditThen‘判断记录窗体是否打开IffrmRoom.msgList.Rows1Then‘判断客房信息列表内容是否为空gintRmode=2‘设置为修改状态 intCount=frmRoom.msgList.Row‘纪录当前记录位置frmRoom
1.txtSQL=”select*fromroomswhereroomNO=’”TrimfrmRoom.msgList.TextMatrixintCount1”’”frmRoom
1.ShowElseCallmenuAddroom_Click‘添加记录 EndIfElsefrmRoom.txtSQL=”select*fromrooms”frmRoom.ShowEndIfEndSub·删除客房信息PrivateSubmenuDeleteroom_ClickDimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsStringIfflagTeditThenIffrmRoom.msgList.Rows1Then‘判断客房信息列表内容是否为空 IfMsgBox“真的要删除这条文件记录么?”vbOKCancel+vbExclamation“警告”=vbOKThenintCount=frmRoom.msgList.Row‘记载当前记录位置 txtSQL=”deletefromroomswhereroomNO=‘”TrimfrmRoom.msgList.TextMatrixintCount1”’”Setmrc=ExecuteSQLtxtSQLMsgText‘执行删除操作 UnloadfrmRoomfrmRoom.txtSQL=”select*fromrooms”frmRoom.ShowEndIfEndIfEndIfEndSub·查询客房信息PrivateSubFrom_Load‘载入窗体时,将自动加入所有记录的入库时间DimiAsIntegerDimjAsIntegerDimsSqlAsStringDimtxtSQLAsStringDimMsgTextAsStringDimmrcAsADODB.RecordsettxtSQL=”selectDISTINCTtypenamefromroomtype”‘初始化客房种类Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFCombo
1.AddItemTrimmrc.Fields0Mrc.MoveNextLoopCombo
1.ListIndex=0ElseMsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation”警告”ExitSubEndIfmrc.CloseEndSubPrivateSubcmdOK_Click‘设置完查询内容和方式后,单击cmdOk按钮查询DimsQSqlAsStringIfchkItem
0.Value=vbCheckedThensQSql=”roomNO=’”TrimtxtItem0”””’”EndIfIfchkItem
1.Value=vbCheckedThenIfTrimsQSql””=””ThensQSql=”roomtype=’”TrimCombo1”””’”ElsesQSql=sQSql”androomtype=’”TrimCombo1”””’”EndIfEndIfIfTrimsQSql=””ThenMsgBox“请设置查询条件!”vbOKOnly+vbExclamation“警告”ExitSubElseIfflagReditThenUnloadfrmRoomEndIffrmRoom.txtSQL=”select*fromroomswhere”sQSqlfrmRoom.ShowEndIfMe.HideEndSub⑹订房信息管理模块的创建订房信息管理模块主要实现如下功能·查询剩余客房信息·添加订房信息·修改订房信息·删除订房信息·查询订房库信息具体实现代码如下PrivateSubFrom_Load‘载入窗体时,程序将自动加入客房种类和客房单价DimtxtSQLAsStringDimMsgTextAsStringDimmrcAsADODB.RecordsettxtSQL=”selectdistincttypenamefromroomtype”‘选择所有客房种类Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFCombo
10.AddItemmrc.Fields0mrc.MoveNextLoopEndIfmrc.ClosetxtSQL=”selectdistinctpricefromroomtype”Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFCombo
11.AddItemmrc.Fields0Combo
12.AddItemmrc.Fields0mrc.MoveNextLoopEndIfmrc.CloseEndSubPrivateSubcmdOK_ClickDimsQSqlAsStringIfchkItem
0.Value=vbCheckedThensQSql=”roomtype=’”TrimCombo10”””’”EndifIfchkItem
1.Value=vbCheckedThenIfTrimsQSql””=””ThenIfTrimCombo11””””AndTrimCombo12””””ThensQSql=”roomprice=’”TrimCombo11””Androomprice=’”TrimCombo12”””’”ElseIfTrimCombo11””=””AndTrimCombo12””””ThensQSql=”roomprice=’”TrimCombo12”””’”ElseIfTrimCombo11””””AndTrimCombo12””=””ThensQSql=”roomprice=’”TrimCombo11”””’”EndIfElseIfTrimCombo11””””AndTrimCombo12””””ThensQSql=sQSql”androomprice=’”TrimCombo11”””’androomprice=’”TrimCombo12”””’”ElseIfTrimCombo11””=””AndTrimCombo12””””ThensQSql=sQSql”androomprice=’”TrimCombo12”””’”ElseIfTrimCombo11””””AndTrimCombo12””=””ThensQSql=sQSql”androomprice=’”TrimCombo11”””’”EndIfEndIfIfTrimsQSql=””ThenMsgBox“请设置查询条件!”vbOKOnly+vbExclamation“警告”ExitSubElseIfflagReditThenUnloadfrmRoomEndIffrmRoom.txtSQL=”select*fromroomswhere”sQSql”andputup”’y’”frmRoom.ShowflagSedit=TrueEndIfMe.HideEndSubPrivateSubFrom_Load‘添加订房信息,载入窗体时把所有未预定的客房信息加入其中DimsSqlAsStringDimintCountAsIntegerDimMsgTextAsStringIfflagSeditThen‘判断打开方式Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenForintCount=0To3cboItemintCount.AddItemmrc.FieldsintCountcboItemintCount.ListIndex=0NextintCounttxtItem5=mrc.Fields5EndIfmrc.ClosetxtNo=GetRknogintBmode=1ElseIfgintBmode=1ThenMe.Caption=Me.Caption“添加”txtSQL=”selectDISTINCTroomNOfromroomswhereputup’y’”Setmrc=ExecuteSQLtxtSQL.MsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFcboItem
0.AddItemTrimmrc.Fields0mrc.MoveNextLoopElseMsgBox“请先进行客房登记!”vbOKOnly+vbExclamation“警告”cmdSave.Enabled=FalseExitSubEndIfmrc.ClosetxtNo=GetRknoElseIfgintBmode=2ThenSetmrc.ExecuteSQLtxtSQLMsgTextIfmrc.EOFThenWithmrctxtNO=!booknoForintCount=0To1IfNotIsNull.FieldsintCount+1ThentxtItemintCount=.FieldsintCount+1EndIfNextintCountcboItem
0.AddItem!roomnocboItem
0.ListIndex=0ForintCount=2To4IfNotIsNull.FieldsintCount+2ThentxtItemintCount=.FieldsintCount+2EndIfNextintCountEndWithEndIfmrc.CloseMe.Caption=Me.Caption“修改”txtSQL=”select*fromroomswhereroomNO=’”TrimcboItem0”’”Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenForintCount=1To3cboItemintCount.AddItemmrc.FieldsintCountcboItemintCount.ListIndex=0NextintCounttxtItem5=mrc.Fields5EndIfmrc.CloseEndIfEndIfmblChange=FalseEndSubPrivateSubcmdSave_Click‘添加记录到数据库中DimintCountAsIntegerDimsMegAsStringDimmrccAsADODB.RecordsetDimMsgTextAsStringForintCount=0To3‘判断输入内容是否为空IfTrimtxtItemintCount””=””ThenSelectCaseintCountCase0sMeg=“顾客姓名”Case1sMeg=“身份证号码”Case2sMeg=“折扣”Case3sMeg=“入住时间”EndSelectsMeg=sMeg“不能为空!”MsgBoxsMegvbOKOnly+vbExclamation“警告”txtItemintCount.SetFocusExitSubEndIfNextintCountForintCount=0To3IfTrimvboItemintCount””=””ThenSelectCaseintCountCase0sMeg=“客房编号”Case1sMeg=“客房种类”Case2sMeg=“客房位置”Case3sMeg=“客房单价”EndSelectsMeg=sMeg“不能为空!”MsgBoxsMegvbOKOnly+vbExclamation“警告”cboItemintCount.SetFocusExitSubEndIfNextintCountIfIsDatetxtItem2ThentxtItem2=FormattxtItem2”yyyy-mm-dd”ElseMsgBox“入库时间应输入日期yyyy-mm-dd!”vbOKOnly+vbExclamation”警告”txtItem
2.SetFocusExitSubEndIfForintCount=1To3Step2IfNotIsNumerictxtItemintCountThenMsgBox“请输入数字”vbOKOnly+vbExclamation“警告”txtItemintCount.SetFocusExitSubEndIfNextintCountIfgintBmode=2ThentxtSQL=”deletefrombookingwherebookno=’”TrimtxtNo”’”Setmrcc=ExecuteSQLtxtSQLMsgTextEndIftxtSQL=”select*frombooking”Setmrcc=ExecuteSQLtxtSQLMsgTextmrcc.AddNewmrcc.Fields0=txtNOForintCount=0To1mrcc.FieldsintCount+1=txtItemintTextNextintCountmrcc.Fields3=cboItem0ForintCount=2To4mrcc.FieldsintCount+2=txtItemintCountNextintCountmrcc.Fields8=0mrcc.Updatemrcc.ClosetxtSQL=”select*fromroomswhereroomNO=’”TrimvboItem0”’”Setmrcc=ExecuteSQLtxtSQLMsgTextIfNotmrcc.EOfThenmrcc!putup=”y”EndIfmrcc.Updatemrcc.CloseIfgintBmode=1ThenMsgBox“添加订房信息成功!”vbOKOnly+vbExclamation“添加订房消息”UnloadMeIfflagBeditThenUnloadfrmBookinEndIffrmBookin.txtSQL=”selectbooknocustomnamecustomIDroomnoindatediscountinmemofrombookingwhereamount=’0’”frmBookin.ShowElseMsgBox“修改订房信息成功!”vbOKOnly+vbExclamation“修改订房信息”UnloadMeIfflagBeditThenUnloadfrmBookinEndIffrmBookin.txtSQL=”selectbooknocustomnamecustomIDroomnoindatediscountinmemofrombookingwhereamount=’0’”frmBookin.ShowEndIfEndSub⑺结算信息管理模块的创建结算信息管理模块主要实现如下功能·添加结算信息·修改结算信息·查询结算信息具体实现代码如下PrivateSubFrom_Load‘窗体载入时,自动加入所有未结算客房信息DimsSqlAsStringDimintCountAsIntegerDimMsgTextAsStringIfgintCmode=1Then‘判断是否处于添加状态Me.Caption=Me.Caption“添加”txtSQL=”selectDISTINCTroomnofrombookingwhereamount=’0’”‘初始化客房编号,选择所有未结算客房编号Setmrc=ExecuteSQLtxtSQLMsgTextIfNotmrc.EOFThenDoWhileNotmrc.EOFcboItem
0.AddItemTrimmrc!roomnomrc.MoveNextLoopElseMsgBox“没有顾客入住!”vbOKOnly+vbExclamation“警告”cmdSave.Enabled=FalseExitSubEndIfmrc.CloseElseIfgintCmode=2Then‘判断是否处于修改状态Setmrc=ExecuteSQLtxtSQLMsgTextIfmrc.EOF=FalseThenWithmrctxtNo=mrc.Fields0ForintCount=0To1txtItemintCount=.FieldsintCount+1NextintCountcboItem
0.AddItem.fields3cboItem
0.ListIndex=0ForintCount=2To3IfNotIsNull.FieldsintCount+2ThentxtItemintCount=.FieldsintCount+2EndIfNextintCounttxtItem5=.Fields6txtItem4=.Fields7EndWithEndIfmrc.ClosetxtSQL=”select*fromroomswhereroomNO=’”cboItem0”’”Setmrc=ExecuteSQLtxtSQLMsgTextIfmrc.EOF=FalseThenWithmrcForintCount=1To3cboItemintCount.AddItem.FieldsintCountcboItemintCount.ListIndex=0NextintCountEndWithEndIfmrc.CloseForintCount=0To3txtItemintCount.Enabled=FalseNextintCountMe.Caption=Me.Caption“修改”EndIfmblChange=FalseEndSubPrivateSubcboItem_ClickIndexAsInteger‘选择不同客房,触发cboItem下拉式文本框的click事件,显示相应的顾客信息DimsSqlAsStringDimMsgTextStringDimmrccAsADODB.RecordsetDimintCountAsIntegerIfgintCmode=1Then‘判断是否处于添加状态,否则将退出IfIndex=0ThencboItem
1.Enabled=TruecboItem
2.Enabled=TruecboItem
3.Enabled=TruecboItem
1.Clear‘清除原有内容cboItem
2.ClearcboItem
3.CleartxtSQL=”selectroomNOroomtyperoompositionroompricefromwhereroomNo=’”TrimcboItem0”’”‘显示有关客房的具体信息Setmrcc=ExecuteSQLtxtSQLMsgTextIfNotmrcc.EOFThencboItem
1.AddItemmrcc!roomtypecboItem
2.AddItemmrcc!roompositioncboItem
3.AddItemmrcc!roompricecboItem
1.Enabled=FalsecboItem
2.Enabled=FalsecboItem
3.Enabled=FalsecboItem
1.ListIndex=0cboItem
2.ListIndex=0cboItem
3.ListIndex=0cmdSave.Enabled=TrueElseMsgBox“没有订房信息!”vbOKOnly+vbExclamation“警告”cmdSave.Enabled=FalseExitSubEndIfmrcc.ClosetxtSQl=”select*frombookingwhereamount=’0’androomno=’”TrimcboItem0”’”‘显示相关顾客信息Setmrcc=ExecuteSQLtxtSQLMsgTextIfNotmrcc.EOFThentxtNO=mrcc!booknotxtItem0=mrcc!customnametxtItem1=mrcc!customIDtxtItem2=mrcc!indatetxtItem3=mrcc!discounttxtItem5=mrcc!inmemoForintCount=0To3txtItemintCount.Enabled=FalseNextintCountEndIfmrcc.CloseEndIfEndIfExitSubEndSubPrivteSubcmdSave_ClickDimintCountAsIntegerDimsMegAsStringDimmrccAsADODB.RecordsetDimMsgTextAsStringDimbYearAsIntegerDimeYearAsIntegerDimbDaysAsIntegerDimeDaysAsIntegerDimaDaysAsIntegerDimamMountAsDoubleIfTrimtxtItem4””=””ThenMsgBoxsMegvbOKOnly+vbExclamation“警告”txtItem
4.SetFocusExitSubEndIfIfIsDatetxtItem4ThentxtItem4=FormattxtItem4”yyyy-mm-dd”ElseMsgBox“入库时间应输入日期(yyyy-mm-yy)!”vbOKOnly+vbExclamation“警告”txtItem
4.SetFocusExitSubEndIftxtSQl=”select*frombookingwherebookno=’”TrimtxtNo”’”‘加入新记录Setmrcc=ExecuteSQLtxtSQLMsgTextmrcc.Fields6=txtItem5mrcc.Fields7=txtItem4bYear=DatePart“yyyy”txtItem2‘获得入住日期和结算日期年代eYear=DatePart“yyyy”txtItem4bDays=DatePart“y”txtItem2‘获得入住日期和结算日期天数eDays=DatePart“y”txtItem4IfbYear=eYearThenaDays=eDays-bDaysElseaDays=eYear-bYear-1*365+365-bDays+eDaysEndIfmrcc.Fields=aDays*TrimcboItem3*TrimtxtItem3/100‘计算应交房费amMount=aDays*TrimcboItem3*TrimtxtItem3/100mrcc.Update‘更新数据mrcc.ClosetxtSQL=”select*fromroomswhereroomNO=’”cboItem0”’”Setmrcc=ExecuteSQLtxtSQLMsgTextIfNotmrcc.EOFThenmrcc!putup=””EndIfmrcc.Updatemrcc.CloseIfgintCmode=1ThenUnloadMemblChange=FalseMsgBox“金额为”amMount“元,结算完毕!”vbOKOnly+vbExclamation“添加结算信息”IfflagCeditThenUnloadfrmCheckoutEndIffrmCheckout.txtSQL=”select*frombookingwhereammount’0’”frmCheckout.ShowElseIfgintCmode=2ThenMsgBox“金额为”amMount“元,结算信息修改完毕!”vbOKOnly+vbExclamation“修改结算信息”UnloadMeIffalgCeditThenUnloadfrmCheckoutEndIffrmCheckout.txtSQL=”select*frombookingwhereammount’0’”frmCheckout.ShowEndIfEndSub附各模块视图·用户登陆窗口·添加客房信息·查询客房信息·查询剩余客房信息·添加订房信息·添加结算信息客房信息查询用户管理密码管理设置客房标准设置客房信息剩余客房信息查询订房信息添加订房信息修改订房信息查询结算信息添加结算信息修改结算信息查询系统管理客房信息管理订房信息管理结算信息管理宾馆管理信息系统客房信息修改客房信息添加客房标准修改客房标准添加客房标准设置基本信息输入客房登记基本信息录入客房信息管理顾客登记订房信息管理订房信息管理结算信息输入结算信息管理客房信息返回客房标准信息实体标准编号标准名称床位数量客房单价客房信息实体客房编号客房标准客房位置客房单价订房信息实体客房信息顾客信息入住时间折扣结算信息实体客房信息顾客信息结算时间结算金额客房标准信息客房登记客房信息管理订房订房信息管理结算信息管理客房结算。