酒店客房餐饮管理系统实现dxqt.docx
酒店客房房餐饮管管理系统统实现酒店客客房餐饮饮管理系系统功能能完善,能能管理普普通酒店店的客房房住宿和和餐饮等等服务。本本系统采采用DEELPHHI和SSQL SERRVERR工具开开发,分分为前台台和后台台管理。前前台与后后台管理理程序相相对独立立,均共共用一个个数据库库。下面面对该系系统的部部份功能能和模块块以及代代码进行行分析。一前台台管理1 数据模块块该模块是是整个程程序数据据的提供供者,以以及包括括大部分分的处理理函数和和实现功功能。单元文件件名:uu_daata.pass,数据据模块名名:DMM_maain。部分代码码分析:返回指表表中某字字段的最最大值,返返回值为为整型。因因此该函函数只能能应用字字段为整整型的表表。funcctioon TTDM_maiin.GGetMMaxIId(aaTabble,aFiieldd:sttrinng):inttegeer;var sSSql:strringg;begiin Reesullt:=0; sSSql:='sseleect maxx(%ss) ffromm %ss' wiith Q_ggetmmax do beeginn SQLL.Teext:=Foormaat(ssSqll,aaFieeld,aTaablee); Opeen; if nott IssEmppty theen RResuult:=Fiieldds00.AAsInntegger+1; Cloose; ennd;end;接下来这这个函数数也是返返回最大大值,但但是其为为一个订订单的最最大编号号为字符符型。funcctioon TTDM_maiin.GGetMMaxOOrdeerIdd:sttrinng;var idd:Sttrinng; coountt:Inntegger;begiin wiith Q_ccounnt_oordeer ddo beeginn Opeen; couunt:=Fiieldds00.VValuue; Cloose; ennd; idd:=''0000'+IIntTToSttr(ccounnt); idd:=CCopyy(idd, llenggth(id)-3, 4); idd:=''F'+ForrmattDatteTiime('yyymmddd',noww)+iid; Reesullt:=id;end;系统登陆陆函数:在进行行系统的的操作处处理时,必必须登陆陆。该函函数对用用户输入入的用户户名和密密码数据据库验证证。其密密码是进进行加密密的(加加密模块块稍后分分析)funcctioon TTDM_maiin.LLogiin(uuserr, ppassswd:Strringg):SStriing;var Fllag:Boooleaan;begiin iff Daatabbasee.Coonneecteed=ffalsse tthenn Dattabaase.Connnecctedd:=TTruee; paasswwd:=Coppy(ppassswd+passswdd, 11, 110);/加加密处理理 paasswwd:=Enccryppt(ppassswd, 1111); wiith Q_llogiin ddo beeginn Cloose; Parramss.PaarammValluess'IID':=uuserr; Parramss.PaarammValluess'PPASSSWD'':=passswdd; Opeen;/在在用户请请中查询询该用户户和密码码是否存存在 Flaag:=( nnot IsEEmptty); if Flaag tthenn beggin LLogiin:=FieeldVValuues'NAAME'' IIsPaass:=Fllag; endd elsse beggin LLogiin:='' AAppllicaatioon.MMesssageeBoxx('请请重新输输入!'', ''登录失失败', MBB_OKK); endd; Cloose; ennd;end;系统登出出:procceduure TDMM_maain.Loggoutt;begiin Daatabbasee.Coonneecteed:=Fallse;/断断开数据据库的连连接end;2 加密模块块:单元文件件名:ccryppt.ppas。简单的加加密算法法。consst C11 = 528845; C22 = 227719;funcctioon EEncrryptt( SS: SStriing; Keey: Worrd): Sttrinng;/S:加密的的字符串串;Keey:密密钥var II: IInteegerr; jj: IInteegerr;begiin Ressultt := S; forr I := 1 tto LLenggth(S) do beggin ReesulltII := ccharr(byyte(SII) xorr (KKey shrr 8); Keey := (bytte(RResuultI) + Keyy) * C11 + C2; endd; s:=Ressultt; Ressultt:=''' forr i:=1 to lenngthh(s) doo beggin j:=Inntegger(sii); Reesullt:=Ressultt + Chaar(665+(j ddiv 26)+CCharr(655+(jj mood 226); endd;end;3 主模块系统的主主界面,包包括系统统登陆。在在没有进进行登陆陆之前44个功能能按钮为为灰色。第一个按按钮为客客房管理理,其次次是餐饮饮管理,再再次是客客户查询询,最后后是收费费管理。4 客房管理理模块客房管理理包括客客房预定定,入住住,调整整。其界界面如下下:操作介绍绍:预定:首首先在证证件编号号文体框框中输入入相关的的证件编编号,按按回车键键,显示示如下窗窗口:输入完整整后单击击添加则则返回上上一个界界面,相相关的数数据将自自动填写写。然后后在右边边选择相相应的客客房等级级。在网网格中将将显示该该等级的的所有空空闲房号号。选择择一个房房间,再再点击“新建”按钮,然然后点击击“添加”。客房房预定完完毕。入住:在证件件编号文文体框中中输入相相关的证证件编号号,按回回车键。如如果该客客户已经经预定则则自动显显示信息息,否则则将弹出出上面的的窗口要要求输入入信息。5 餐饮管理理包括选菜菜、点菜菜、打单单:下面是其其相代码码说明:procceduure TF_fooodorrderr.bttnOkkCliick(Sennderr: TTObjjectt);var idd:inntegger; tootall:siinglle;begiin iff siid=''' tthenn beeginn B_nnewoordeerCllickk(niil); ennd; /订单明明细 idd:=DDM_mmainn.GeetMaaxIdd('oordeer_ddetaail'','iid'); wiith Q_ffooddetaail do beeginn Apppendd; Fieeldss0.AssInttegeer:=id; Fieeldss1.AssStrringg:=ssid; Fieeldss2.AssStrringg:=ddbteext11.Caaptiion; Fieeldss3.AssStrringg:=eedtNNum.Texxt; Fieeldss4.AssStrringg:=ddbteext44.Caaptiion; Posst; DissablleCoontrrolss; Cloose; Opeen; EnaableeConntrools; ennd; /更新总总订单的的总金额额 wiith DM_maiin.TT_fooodoordeer ddo beeginn Ediit; tottal:=DMM_maain.GettSummPriice(sidd); Fieeldss3.AssFlooat:=tootall; Posst; ennd;end;/撤销销选择的的一项菜菜目procceduure TF_fooodorrderr.bttnCaanceelCllickk(Seendeer: TObbjecct);var tootall:Siinglle;begiin wiith Q_ffooddetaail do beeginn if IsEEmptty tthenn EExitt; if nott Acctivve tthenn beggin PParaamByyNamme(''sidd').Vallue:=siid; OOpenn; endd; Delletee; ennd; tootall:=DDM_mmainn.GeetSuumPrricee(siid); wiith DM_maiin.TT_fooodoordeer ddo beeginn if nott Acctivve tthenn Oppen; Loccatee('iid',sidd,); Ediit; Fieeldss3.AssFlooat:=tootall; Posst; ennd;end;procceduure TF_fooodorrderr.B_newwordderCClicck(SSendder: TOObjeect);begiin /新建总总订单 siid:=DM_maiin.GGetMMaxOOrdeerIdd; wiith DM_maiin.TT_fooodoordeer ddo beeginn Opeen; Apppendd; Fieeldss0.AssStrringg:=ssid; Fieeldss1.AssStrringg:=DDateeTimmeTooStrr(Noow); Fieeldss2.AssStrringg:=TTrimm(eddtNaame.Texxt); Posst; ennd; wiith Q_ffooddetaail do beeginn Cloose; ParramBByNaame('siid').Vaaluee:=ssid; Preeparre; Opeen; ennd;end;打单:票票据示例例如下。二后台台管理1 数据模块块该模块是是整个程程序数据据的提供供者,以以及包括括大部分分的处理理函数和和实现功功能。单元文件件名:uu_daata.pass,数据据模块名名:DMM_maain。部分代码码分析:设置前台台操作员员的密码码:procceduure TDMM_maain.SettOpeerattorPPasssworrd(ppasssworrd:SStriing);begiin paasswwordd:=CCopyy(paasswwordd+paasswwordd, 11, 110); paasswwordd:=EEncrryptt(paasswwordd, 1111);/加加密单元元 wiith T_ooperratoor ddo beeginn Ediit; FieeldVValuues'PAASSWWD':=ppasssworrd; ennd;end;根据客房房ID筛选客客房:procceduure TDMM_maain.SettModdifyyFillterr(RooomIID:SStriing);begiin wiith T_rroomm_moodiffy ddo beeginn Cloose; if lenngthh(RooomIID)>>0 tthenn beggin FFiltter:='IID=''''+RooomIDD+''''' FFilttereed:=Truue; endd elsse FFilttereed:=Fallse; Opeen; ennd;end;获得客房房级别:procceduure TDMM_maain.GettRooomLeevell(RooomLLeveel:TTStrringgs);begiin RooomLLeveel.CCleaar; RooomLLeveel.AAdd('全部部级别''); wiith Q_rroomm_leevell doo beeginn Opeen; Firrst; whiile nott Eoof ddo beggin RRoommLevvel.Addd(FiielddValluess'DDESCCRIPPT'); NNextt; endd; Cloose; ennd;end;客房统计计图实现现函数:/SttarDDatee:开始始日期;EnddDatte:结结束日期期;procceduure TDMM_maain.GettRooomSttat(StaartDDatee,EnndDaate:TDaate; TiimeSStepp, SStattTyppe:BBoolleann;RooomLLeveel:IInteegerr; BaarSeeriees:TTBarrSerriess);var SttatRResuult:inttegeer; MiidDaate:TDaate; SttatLLabeel:SStriing;begiin BaarSeeriees.CCleaar; whhilee SttarttDatte<EEndDDatee doo beeginn MiddDatte:=GettNexxtDaate(StaartDDatee, TTimeeSteep); if StaatTyype theen SStattRessultt:=SSumTTurnnoveer(SStarrtDaate, MiidDaate) elsse SStattRessultt:=SSumUUseddRooom(SStarrtDaate, MiidDaate, RooomLLeveel); if TimmeSttep theen SStattLabbel:=FoormaatDaateTTimee('ddd', SttarttDatte)+'日'' elsse SStattLabbel:=FoormaatDaateTTimee('mmm', SttarttDatte)+'月'' BarrSerriess.AdddY(StaatReesullt,SStattLabbel); StaartDDatee:=MMidDDatee; ennd;end;换算下个个月(日日)日期期:funcctioon TTDM_maiin.GGetNNexttDatte(SStarrtDaate:TDaate;TimmeSttep:Boooleaan):TDaate;var TiimeYYearr,TiimeMMontth:SStriing;begiin iff TiimeSStepp thhen Ressultt:=SStarrtDaate+1 ellse beeginn TimmeYeear:=FoormaatDaateTTimee('yyyyyy', StaartDDatee); TimmeMoonthh:=FFormmatDDateeTimme(''mm'', SStarrtDaate); if TimmeMoonthh='112' theen beggin TTimeeYeaar:=InttToSStr(StrrToIInt(TimmeYeear)+1); TTimeeMonnth:='001' endd elsse TTimeeMonnth:=InntTooStrr(SttrTooIntt(TiimeMMontth)+1); Ressultt:=SStrTToDaate(TimmeYeear+'-''+TiimeMMontth+''-011'); ennd;end;2 系统登陆陆模块该系统登登陆将连连接数据据库的管管理员用用户表进进行验证证:procceduure TF_loggin.b_llogiinCllickk(Seendeer: TObbjecct);var sSSql:strringg;begiin iff (TTrimm(i_admmin.Texxt)='')or(i_ppassswd.Texxt=''') theen beeginn MesssaggeDllg(''请输入入管理员员帐号和和密码!', mtWWarnningg, mbOOK, mbHHelpp, 6); i_aadmiin.SSetFFocuus; Exiit; ennd; sSSql:='sseleect * ffromm addminn_usser wheere namme='''%ss'' andd paasswwd='''%ss'''' wiith DM_maiin.QQ_addminn doo beeginn SQLL.Teext:=Foormaat(ssSqll,TTrimm(i_admmin.Texxt),i_ppassswd.Texxt); Opeen; if IsEEmptty tthenn beggin MMesssageeDlgg('连连接错误误!请确确认管理理员帐号号和密码码!', mttWarrninng, mbbOK, mbbHellp, 6); ii_addminn.SeetFoocuss; EExitt; endd elsse beggin CClosse; sselff.Cllosee; endd; ennd;end;登陆界面面:3 主控程序序后台管理理主窗口口如下:后台管理理程序采采用MDDI风格格窗体。并采用事事件管理理机制AActiionLListt管理所所有功能能模块的的点击事事件:procceduure TF_maiin.RRoommAdddExeecutte(SSendder: TOObjeect);begiin Apppliicattionn.CrreatteFoorm(TF_addd, FF_addd); RooomAAdd.Enaableed:=Fallse;end;procceduure TF_maiin.RRoommModdifyyExeecutte(SSendder: TOObjeect);begiin Apppliicattionn.CrreatteFoorm(TF_moddifyy, FF_moodiffy); RooomMModiify.Enaableed:=Fallse;end;procceduure TF_maiin.HHelppAbooutEExeccutee(Seendeer: TObbjecct);begiin F_aboout.ShoowMoodall;end;procceduure TF_maiin.SSysttemEExittExeecutte(SSendder: TOObjeect);begiin Cllosee;end;procceduure TF_maiin.OOtheerOpperaatorrExeecutte(SSendder: TOObjeect);begiin Apppliicattionn.CrreatteFoorm(TF_opeerattor, F_opeerattor); OttherrOpeerattor.Enaableed:=Fallse;end;procceduure TF_maiin.OOtheerCoodeEExeccutee(Seendeer: TObbjecct);begiin Apppliicattionn.CrreatteFoorm(TF_codde, F_ccodee); OttherrCodde.EEnabbledd:=FFalsse;end;procceduure TF_maiin.RRoommStaatExxecuute(Sennderr: TTObjjectt);begiin Apppliicattionn.CrreatteFoorm(TF_staat, F_sstatt); RooomSStatt.Ennablled:=Faalsee;end;后台数据据管理包包括:客客房管理理、餐饮饮管理、操操作员管管理,基基础数据据维护等等。4 客房统计计表该统计表表能统计计某个时时间段的的所有客客房的营营业额和和使用频频率,通通过生成成统计表表以支持持上层决决策。如如下图:(其实现现代码以以上有介介绍)