【正文】
tDate, MidDate) else StatResult:=SumUsedRoom(StartDate, MidDate, RoomLevel)。 begin 。 MidDate:TDate。 BarSeries:TBarSeries)。 TimeStep, StatType:Boolean。 end。 Close。 Next。DESCRIPT39。 First。)。 (39。 獲得客房級(jí)別: procedure (RoomLevel:TStrings)。 end。 end else Filtered:=False。39。39。39。ID=39。 begin with T_room_modify do begin Close。 end。]:=password。 FieldValues[39。 password:=Encrypt(password, 111)。 部分代碼分析: 設(shè)置前臺(tái)操作員的密碼: procedure (password:String)。 二.后臺(tái)管理 1. 數(shù)據(jù)模塊 該模塊是整個(gè)程序數(shù)據(jù)的提供者,以及包括大部分的處理函數(shù)和實(shí)現(xiàn)功能。 end。 Open。).Value:=sid。 ParamByName(39。 end。 Fields[2].AsString:=Trim()。 Fields[0].AsString:=sid。 with do begin Open。 procedure (Sender: TObject)。 end。 Fields[3].AsFloat:=total。,sid,[])。 Locate(39。 total:=(sid)。 Delete。 Open。sid39。 begin with Q_foodetail do begin if IsEmpty then Exit。 //撤銷選擇的一項(xiàng)菜目 procedure (Sender: TObject)。 end。 Fields[3].AsFloat:=total。 //更新總訂單的總金額 with do begin Edit。 EnableControls。 Close。 Post。 Fields[3].AsString:=。 Fields[1].AsString:=sid。 with Q_foodetail do begin Append。id39。order_detail39。 end。39。 total:single。 5. 餐飲管理 包括選菜、點(diǎn)菜、打單: 下面是其相代碼說明: procedure (Sender: TObject)。 入?。?在證件編號(hào)文體框中輸入相關(guān)的證件編號(hào),按回車鍵。選擇一個(gè)房間,再點(diǎn)擊“新建”按鈕,然后點(diǎn)擊“添加”。然后在右邊選擇相應(yīng)的客房等級(jí)。 4. 客房管理模塊 客房管理包括客房預(yù)定,入住,調(diào)整。在沒有進(jìn)行登陸之前 4個(gè)功能按鈕為灰色。 end。 Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26))。39。 s:=Result。 Key := (byte(Result[I]) + Key) * C1 + C2。 begin Result := S。 //S:加密的字符串; Key:密鑰 var I: Integer。 function Encrypt( S: String。 const C1 = 52845。 2. 加密模塊: 單元文件名: 。 begin :=False。 end。 Close。, MB_OK)。, 39。 (39。 end else begin Login:=39。]。 if Flag then begin Login:=FieldValues[39。 Open。PASSWD39。]:=user。 [39。 //加密處理 passwd:=Encrypt(passwd, 111)。 begin if =false then :=True。其密碼是進(jìn)行加密的(加密模塊稍后分析) function (user, passwd:String):String。 系統(tǒng)登陸函數(shù):在進(jìn)行系統(tǒng)的操作處理時(shí),必須登陸。 Result:=id。yymmdd39。F39。 id:=Copy(id, length(id)3, 4)。00039。 end。 count:=Fields[0].Value。 count:Integer。 function :string。 end。 Close。 Open。select max(%s) from %s39。 begin Result:=0。 function (aTable,aField:string):integer。 部分代碼分析: 返回指表中某字段的最大值,返回值為整型。 一.前臺(tái)管理 1. 數(shù)據(jù)模塊 該模塊是整個(gè)程序數(shù)據(jù)的提供者,以及包括大部分的處理函數(shù)和實(shí)現(xiàn)功能。前臺(tái)與后臺(tái)管理程序相對(duì)獨(dú)立,均共用一個(gè)數(shù)據(jù)庫。酒店客房餐飲管理系統(tǒng)實(shí)現(xiàn) 酒店客房餐飲管理系統(tǒng)功能完善,能管理普通酒店的客房住宿和餐飲等服務(wù)。本系統(tǒng)采用 DELPHI和 SQL SERVER工具開發(fā),分為前臺(tái)和后臺(tái)管理。下面對(duì)該系統(tǒng)的部份功能和模塊以及代碼進(jìn)行分析。 單元文件名: ,數(shù)據(jù)模塊名: DM_main。因此該函數(shù)只能應(yīng)用字段為整型的表 。 var sSql:string。 sSql:=39。 with Q_getmax do begin :=Format(sSql,[aField,aTable])。 if not IsEmpty then Result:=Fields[0].AsInteger+1。 end。 接下來這個(gè)函數(shù)也是返回最大值,但是其為一個(gè)訂單的最大編號(hào)為字符型。 var id:String。 begin with Q_count_order do begin Open。 Close。 id:=39。+IntToStr(count)。 id:=39。+FormatDateTime(39。,now)+id。 end。該函數(shù)對(duì)用戶輸入的用戶名和密碼數(shù)據(jù)庫驗(yàn)證。 var Flag:Boolean。 passwd:=Copy(passwd+passwd, 1, 10)。 with Q_login do begin Close。ID39。 [39。]:=passwd。 //在用戶請(qǐng)中查詢?cè)撚脩艉兔艽a是否存在 Flag:=( not IsEmpty)。NAME39。 IsPass:=Flag。39。請(qǐng)重新輸入! 39。登錄失敗 39。 end。 end。 系統(tǒng)登出: procedure 。 //斷開數(shù)據(jù)庫的連接 end。 簡(jiǎn)單的加密算法。 C2 = 22719。 Key: Word): String。 j: Integer。 for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8))。 end。 Result:=39。 for i:=1 to length(s) do begin j:=Integer(s[i])。 end。 3. 主模塊 系統(tǒng)的主界面,包括系統(tǒng)登陸。 第一個(gè)按鈕為客房管理,其次是餐飲管理,再次是客戶查詢,最后是收費(fèi)管理。其界面如下: 操作介紹: 預(yù)定:首先在證件編號(hào)文體框中輸入相關(guān)的證件編號(hào),按回車鍵,顯示如下窗口: 輸入完整后單擊添加則返回上一個(gè)界面,相關(guān)的數(shù)據(jù)將自動(dòng)填寫。在網(wǎng)格中將顯示該等級(jí)的所有空閑房號(hào)??头款A(yù)定完畢。如果該客戶已經(jīng)預(yù)定則自動(dòng)顯示信息,否則將彈出上面的窗口要求輸入信息。 var id:integer。 begin if sid=39。 then begin B_neworderClick(nil)。 //訂單明細(xì) id:=(39。,39。)。 Fields[0].AsInteger:=id。 Fields[2].AsString:=。 Fields[4].AsString:=。 DisableControls。 Open。 end。 total:=(sid)。 Post。 end。 var total:Single。 if not Active then begin ParamByName(39。).Value:=sid。 end。 end。 with do begin if not Active then Open。id39。 Edit。 Post。 end。 begin //新建總訂單 sid:=。 Append。 Fields[1].AsString:=DateTimeToStr(Now)。 Post。 with Q_foodetail do begin Close。sid39。 Prepare。 end。 打單:票據(jù)示例如下。 單元文件名: ,數(shù)據(jù)模塊名: DM_main。 begin password:=Copy(password+password, 1, 10)。 //加密單元 with T_operator do begin Edit。PASSWD39。 end。 根據(jù)客房 ID 篩選客房: procedure (RoomID:String)。 if length(RoomID)0 then begin Filter:=39。39。+RoomID+39。39。 Filtered:=True。 Open。 end。 begin 。全部級(jí)別 39。 with Q_room_level do begin Open。 while not Eof do begin (FieldValues[39。])。 end。 end。 客房統(tǒng)計(jì)圖實(shí)現(xiàn)函數(shù): //StarDate: 開始日期; EndDate:結(jié)束日期; procedure (StartDate,EndDate:TDate。RoomLevel:Integer。 var StatResult:integer。 StatLabel:String。 while StartDateEndDate do begin MidDate:=GetNextDate(StartDate, TimeStep)。 if TimeStep then StatLabel:=FormatDateTime(39。, StartDate)+39。 else StatLabel:=FormatDateTime(39。, StartDate)+39。 (StatResult,StatLabel)。 end。 換算下個(gè)月(日)日期: function (StartDate:TDate。 var TimeYear,TimeMonth:String。yyyy39。 TimeMonth:=FormatDateTime(39。, StartDate)。1239。 TimeMonth:=39。 end else TimeMonth:=IntToStr(StrToInt(TimeMonth)+1)。39。0139。 end。 2. 系統(tǒng)登陸模塊 該系統(tǒng)登陸將連接數(shù)據(jù)庫的管理員用戶表進(jìn)行驗(yàn)證: procedure (Sender: TObject)。 begin if (Trim()=39。)or(=39。) then begin MessageDlg(39。, mtWarning, [mbOK, mbHelp], 6)。 Exit。 sSql:=39。39。39。39。39。