【正文】
Select End Sub30 登記入住窗體設(shè)計(jì)(1)窗體功能描述顧客進(jìn)入酒店后,需先到前臺(tái)辦理入住手續(xù)。操作員輸入客人的相關(guān)信息,并根據(jù)顧客的要求選擇相應(yīng)的客房,操作員可手動(dòng)設(shè)定折扣比例,系統(tǒng)會(huì)自動(dòng)計(jì)算客房?jī)r(jià)格,收取一定的入住押金,最后點(diǎn)擊確定按鈕即完成入住手續(xù)的辦理。當(dāng)顧客因故中途取消辦理入住時(shí),為方便操作,節(jié)省時(shí)間,可點(diǎn)擊重置按鈕,則所有輸入框中的信息自動(dòng)清空。最后點(diǎn)擊取消按鈕即可退出登記入住窗體。(2)窗體設(shè)計(jì)新建一個(gè)名“”的窗體。并利用相關(guān)控件設(shè)計(jì)成如圖 77 所示。圖 77 登記入住窗體登記入住窗體包括以下控件:窗體(Form) ,標(biāo)簽(Label) ,組合框(Combobox) ,文本框(TextBox) ,按鈕(Button) ,框架(Panel) ,GroupBox 控件,DataGirdview 控件和 SqlDataAdapter 控件等。(3)代碼設(shè)計(jì)①由于存在費(fèi)用計(jì)算的問(wèn)題,需要設(shè)定幾個(gè)全局變量,在各事件過(guò)程中進(jìn)行相關(guān)的運(yùn)算操作。Dim YSJG, SJJG As Decimal 39。預(yù)設(shè)價(jià)格和實(shí)際價(jià)格②窗體載入時(shí),先將客房信息填充入數(shù)據(jù)集DataSetEmptyRoom1,并將全部記錄添31加到客房信息表中。 Private Sub RentRoomForm_Load(ByVal sender As Object, ByVal e As ) Handles (DataSetEmptyRoom1) 39。顯示空凈房信息 Dim i As Integer For i = 0 To 1 (0, (客房信息表).Rows(i).Item(0), (客房信息表).Rows(i).Item(1), (客房信息表).Rows(i).Item(2)) Next (DataSetRZD1, 入住單表).AddNew() 39。為入住單表添加新行 = RZ amp。 () 39。顯示入住單號(hào)End Sub③輸入開(kāi)單信息之后,點(diǎn)擊確定即添加入住單信息。代碼如下: Private Sub btnRentRoomConfirm_Click(ByVal sender As Object, ByVal e As ) Handles = Now 39。抵店時(shí)間 (DataSetRZD1, 入住單表).EndCurrentEdit() 39。將數(shù)據(jù)返回?cái)?shù)據(jù)集 (DataSetRZD1, 入住單表) 39。更新數(shù)據(jù)并返回?cái)?shù)據(jù)源 Dim i As Integer For i = 0 To 1 (客房信息表, 客房狀態(tài) = 39。入住39。,單據(jù)編號(hào) = 39。 amp。 amp。 39。, 客房編號(hào) = 39。 amp。 (i).Cells(0).Value amp。 39。) Next () End Sub④下面的代碼實(shí)現(xiàn)要選擇的空閑房間添加到DataGridview2中。 Private Sub btnAddRoom_Click(ByVal sender As , ByVal e As ) Handles (0,().Cells(0).Value,().Cells(1).Value, ().Cells(2).Value) () 39。刪除選中行的記錄 End Sub 退房結(jié)賬模塊設(shè)計(jì)(1)窗體功能描述當(dāng)顧客要辦理退房結(jié)賬時(shí),操作員進(jìn)入退房結(jié)賬窗體。系統(tǒng)自動(dòng)生成結(jié)賬單號(hào)。在入住賓客信息表選中要離店顧客的入住單記錄,顧客在店內(nèi)的消費(fèi)記錄便出現(xiàn)在消費(fèi)記錄表之中,且系統(tǒng)會(huì)自動(dòng)計(jì)算住宿費(fèi)用和消費(fèi)金額,顯示出應(yīng)收金額和實(shí)收金額。填入顧客支付金額后,系統(tǒng)會(huì)自動(dòng)計(jì)算出需要找還的金額數(shù)。最后點(diǎn)擊結(jié)賬按鈕便完32成了退房結(jié)賬手續(xù)。如果要免除某個(gè)顧客的所有費(fèi)用,只要選中“免費(fèi)”選項(xiàng)框,則實(shí)收金額清零,且結(jié)賬單中的“結(jié)算狀態(tài)”標(biāo)記為“免費(fèi)” 。(2)界面設(shè)計(jì)新建窗體并命名為 QuitRoomForm,將此窗體設(shè)計(jì)成如圖 78 所示。圖 78 退房結(jié)賬窗體退房結(jié)賬窗體包括以下控件:窗體(Form) ,標(biāo)簽(Label) ,組合框(ComboBox) ,文本框(TextBox) ,按鈕(Button) ,框架(Panel) ,選項(xiàng)框(CheckBox) ,DataGird控件和 SqlDataAdapter 控件等。(3)代碼設(shè)計(jì)①添加全局?jǐn)?shù)據(jù)公共模塊和全局變量,方便事件過(guò)程間的費(fèi)用計(jì)算。代碼如下:Dim ZSFY, XFJE, YSJE, YSYJ, SSJE, GKZF, ZL As Decimal Private Function TimeJudge(ByVal j As Decimal) 39。時(shí)間判斷函數(shù) If j 1 Then If 18 Then j = Else j = 1 End If Else If 12 Then j += Else j += 1 End If33 End If Return j End Function Private Sub Account() 39。計(jì)算住宿費(fèi)用 .Clear() = SELECT , 客房類(lèi), , FROM 客房信息表 INNER JOIN 客房類(lèi)型表 ON = where 單據(jù)編號(hào) = 39。 amp。 (, 0) amp。 39。 (DataSetRoomInf1) Dim i As Integer Dim fee As Decimal = 0 Dim interval As Decimal = 0 For i = 0 To 1 If (i).Item(1) = 鐘點(diǎn)房 Then interval = (, .Rows().Item(抵店時(shí)間), Now()) interval = TimeJudge(interval) fee += interval * .Rows(i).Item(客房?jī)r(jià)格) Else interval = (, .Rows().Item(抵店時(shí)間), Now()) interval = TimeJudge(interval) fee += interval * .Rows(i).Item(客房?jī)r(jià)格) End If Next ZSFY = (入住單表).Rows().Item(折扣比例) * fee End Sub ②根據(jù)選擇的入住單計(jì)算住宿費(fèi)用和消費(fèi)金額。代碼如下:Private Sub DataGrid1_MouseClick(ByVal sender As Object, ByVal e As ) Handles ZSFY = 0 39。住宿費(fèi)用 XFJE = 0 39。消費(fèi)金額 YSJE = 0 39。應(yīng)收金額 YSYJ = 0 39。已收押金 SSJE = 0 39。實(shí)收金額 ZL = 0 39。找零 = ().Item(0)…………………………………………………… = ().Item(9) Account() 39。調(diào)用計(jì)算金額過(guò)程 () = select * from 消費(fèi)記錄表 where 入住單號(hào)= 3439。 amp。 amp。 39。 (DataSetXFJL1) Dim i As Integer For i = 0 To 1 39。累計(jì)賓客的消費(fèi)總額 XFJE += (消費(fèi)記錄表).Rows(i).Item(6) Next YSJE = ZSFY + XFJE 39。應(yīng)收金額=住宿費(fèi)用 +消費(fèi)金額 SSJE = YSJE YSYJ 39。實(shí)收金額=應(yīng)收金額已收押金 ZL = GKZF SSJE 39。找零=顧客支付實(shí)收金額 = (c)End Sub③點(diǎn)擊結(jié)帳按鈕,添加結(jié)賬單信息,刪除入住單信息。代碼如下: Private Sub btnJZ_Click(ByVal sender As , ByVal e As ) Handles (DataSetJZD1, 結(jié)帳單表).EndCurrentEdit() (DataSetJZD1, 結(jié)帳單表) (客房信息表, 客房狀態(tài)=39??臻e39。,單據(jù)編號(hào)=39。39。, 單據(jù)編號(hào)= 39。 amp。 ().Item(0) amp。 39。) (消費(fèi)記錄表, 入住單號(hào) =39。 amp。 .Rows().Item(0) amp。 39。) (入住單表, 入住單號(hào) = 39。 amp。 .Rows().Item(0) amp。 39。) ().Delete() (DataSetXFJL1, 消費(fèi)記錄表) MsgBox(結(jié)帳成功, , 操作成功) () End Sub 數(shù)據(jù)庫(kù)維護(hù)窗體設(shè)計(jì)(1)窗體功能描述本窗體的功能是實(shí)現(xiàn)對(duì)于系統(tǒng)數(shù)據(jù)庫(kù)的維護(hù)功能,可以有效的提高系統(tǒng)內(nèi)數(shù)據(jù)的安全性和可靠性,是本系統(tǒng)中最重要的功能模塊之一。用戶(這里指超級(jí)用戶)可以進(jìn)行如下操作:①刪除營(yíng)業(yè)數(shù)據(jù)??蓜h除指定時(shí)間內(nèi)或所有的營(yíng)業(yè)記錄,包括入住單信息、預(yù)訂單信息、入住歷史、結(jié)帳單信息和消費(fèi)記錄等。②清空商品信息。刪除商品信息表中的所有商品信息。③清空所有數(shù)據(jù)庫(kù)表。即對(duì)系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行全面初始化操作,刪除數(shù)據(jù)庫(kù)內(nèi)的所有數(shù)據(jù)。④手動(dòng)備份和還原數(shù)據(jù)庫(kù)的功能。在進(jìn)行備份操作時(shí),用戶可自由指定數(shù)據(jù)庫(kù)備35份文件的路徑和名稱,點(diǎn)擊備份按鈕即可在指定路徑生成一個(gè)數(shù)據(jù)庫(kù)備份文件。而還原操作時(shí),用戶也可根據(jù)需要選擇某個(gè)數(shù)據(jù)庫(kù)備份文件進(jìn)行還原,表現(xiàn)出了較強(qiáng)的靈活性。 (2)界面設(shè)計(jì),并將此窗體設(shè)計(jì)成如圖79所示。圖79 數(shù)據(jù)庫(kù)維護(hù)窗體該窗體所用到的控件主要包括:窗體(Form) ,標(biāo)簽(Label) ,文本框(TextBox) ,按鈕(Button) ,框架(Panel) ,選項(xiàng)框(CheckBox)和GroupBox控件等。(3)代碼設(shè)計(jì) ①點(diǎn)擊確定按鈕,按用戶選定的條件對(duì)數(shù)據(jù)庫(kù)進(jìn)行清理,代碼如下:Private Sub btnConfirm_Click(ByVal sender As , ByVal e As ) Handles If = True Then (客房信息表, 客房狀態(tài)=39。空閑39。,單據(jù)編號(hào)=39。39。, 單據(jù)編號(hào) in (select 預(yù)訂單號(hào) from 預(yù)訂單表 where 預(yù)訂日期 between 39。 + + 39。 and 39。 + + 39。)) (預(yù)訂單表, 預(yù)訂日期 between 39。 + + 39。 and 39。 + + 39。)………………………………………………… If = True Then (客房信息表, 客房狀態(tài)=39??臻e39。,單據(jù)編號(hào)=39。39。, 單據(jù)編號(hào) in (select 預(yù)訂單號(hào) from 預(yù)訂單表 )) (客房信息表, 客房狀態(tài)=39。空閑39。,單據(jù)編號(hào)=39。39。, 單據(jù)編號(hào) in (select 入住單號(hào) from 入住單表 )) (消費(fèi)記錄表, ) (預(yù)訂單表, ) …………………………………………………36 End If If = True Then (客房信息表, ) (客房類(lèi)型表, ) ………………………………………………… End If MsgBox(數(shù)據(jù)清理完畢! , , 操作成功) End Sub②點(diǎn)擊備份按鈕,對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份,代碼如下:Dim strsql As String 39。聲明公共變量 Dim con As SqlConnection Dim As SqlCommandcon = New SqlConnection(server=localhos