《2022年餐厅管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年餐厅管理系统 .pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、餐 厅 管 理 系 统 的 开 发 及 应 用Visual C+6.0的应用姓名:班级:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 28 页 -餐厅管理系统的开发及应用摘要:本文是以Visual C+6.0为开发工具进行应用程序开发的一个实例。主要介绍了一个餐厅管理系统的设计和实现的过程。首先,简单对本餐厅管理系统作个总体的介绍;其次,通过数据库的设计和数据表的设计来介绍在Visual C+6.0中使用 access 2000进行数据表设计和系统功能细化的方法;最后,也是本文的重点,具体实现系统主要功能模块的设计及重要按钮的代码,来体现使用Visual C+6.0的方法和技巧
2、。关键字:Visual C+6.0、餐厅管理系统、数据库、原代码Development and Application of Restaurant Management System NAME:Chen Hao CLASS:Class Two of Computer Science and TechnologyAbstract:This system is an instance of application program development by using Visual C+6.0.It mainly introduce us the designment and realizati
3、on of a management system in a restaurant.Its main points are as following:First,It briefly gives us a general introduction of the system.Then,According to the designment of the database and database table,it tells us how to use Microsoft SQL Server 2000 to design database table and to subdivide sys
4、tem function.At last but not at least,concrete realization system main function module design and important button code,to show the methods and skills of using Visual C+6.0.Key Words:Microsoft VisualC+6.0,Development and Application of Restaurant Management System,Database,Source Code 名师资料总结-精品资料欢迎下
5、载-名师精心整理-第 2 页,共 28 页 -0 前言随着我国国民经济迅猛发展,餐饮业也得到了空前的发展。餐馆除了给人们一个就餐和娱乐的空间更要有豪华的硬件设施和优质的软件服务,尤其是在追求办公智能化的今天。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 28 页 -1 系统介绍1.1 系统功能分析本客房管理系统主要实现以下的功能:1、前台销售管理:通过该管理功能,工作人员可以通过计算机进行点菜、撤单、结账、查询、打印等服务。2、统计报表管理:通过该管理功能,管理员可以对餐厅某一时间段内销售清单或者某一单品进行统计、打印,及时了解公司营业状况。3、基础资料管理:通过该管理功能,管
6、理员可以随时增加、修改、删除商品类别以及商品资料,通过市场动向,及时对菜单及菜价进行有效的管理。4、系统维护管理:通过该管理功能,系统管理员可以对系统进行维护,包括工作人员资料的增加、修改、删除、权限设置等以及公司销售数据的清除。1.2 系统开发的目的和意义在现代的餐饮服务行业中,由于食客流量的加剧增长,传统的手动方法已经不能适应现代社会的需要,各大中小型餐馆需要使用计算机进行现代化管理,针对这种情况,有必要开发一个“餐厅管理系统”来进行管理工作,因此,这样一个小型餐厅管理系统便应运而生了。由于时间仓促和水平有限,不当之处在所难免,留待以后进一步整理和完善。3 系统功能模块实现经过以上的设计分
7、析,已经基本上完成了对本系统整体功能结构以及数据库等方面的设计工作,下面将使用已选定的前台开发工具PowerBuilder 9.0来具体实现各个功能模块。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 28 页 -3.1 系统登录窗口实现系统登录窗口是保证系统的使用安全,不能任由其他人进入。其用户名和口令正确才能进入该系统。如图3-2 所示。图 3-2 系统登录窗口为使系统在用户登录时记录其用户名,可以根据用户名自动判断用户的操作权限,可以使用哪些系统功能,应创建一个结构变量user。为使整个应用程序在使用提示对话框时方便,需要创建一个自定义提示框函数。其代码为:AfxMessa
8、geBox(请输入用户名和密码!);return;“确定”按钮的 clicked事件代码为:else/if user enter name and password./成生 sql 语句CString sql=SELECT*FROM USERS where LOGINID=+m_logid+and PSD=+m_pwd+;try /查询数据库,看是否有此用户和密码m_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.名师资料总结-精品资
9、料欢迎下载-名师精心整理-第 5 页,共 28 页 -m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);/如果没有此用户和密码,再查询是否有此用户if(m_pRecordset-adoEOF)AfxMessageBox(用户名或密码错误!);else theApp.name=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(NAME);theApp.pwd=m_pwd;CDialog:OnOK();return;m_pRecordset-Close();catch(_com_error e
10、)/捕捉异常 CString temp;temp.Format(读取用户名和密码错误:%s,e.ErrorMessage();AfxMessageBox(temp);return;3.2 主窗口实现主窗口是应用系统的平台,其中包括该系统的所有功能。如图3-3 所示。进入系统后,在 listbox控制控件中会自动显示所有未结账单据以及其所对应的信息(默认为第一条单据)。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 28 页 -图 3-3 主窗口主窗口 listbox事件代码为:CString stemp,sql,sbillid;int iOption;_RecordsetPtr
11、m_pRecordset;iOption=m_oListbill.GetCurSel();m_oListbill.GetText(iOption,sbillid);/得到选中项的文本theApp.scallid=sbillid;/Get current bill id./Clear the edit ctrl.m_oTableno.SetWindowText();m_oPeasons.SetWindowText();sql=select*from SALEBILL where ID=+sbillid+;try 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 28 页 -m_pRe
12、cordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);if(!m_pRecordset-adoEOF)m_oTableno.SetWindowText(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(TABLENO);m_oPeasons.SetWindowText(LPCTSTR)(_bst
13、r_t)m_pRecordset-GetCollect(PEOPLES);m_oCheck.SetWindowText(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(SALES);m_oStatus.SetWindowText(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(STATUS);m_oBegintime.SetWindowText(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(BEGINDATE);m_oEndtime.SetWindowText(LPCTSTR)(_bstr_
14、t)m_pRecordset-GetCollect(ENDDATE);float ftotal=(float)m_pRecordset-GetCollect(TOTAL);CString stotal;stotal.Format(%.2f,ftotal);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 28 页 -m_oTotal.SetWindowText(stotal);ftotal=(float)m_pRecordset-GetCollect(ACTTOTAL);stotal.Format(%.2f,ftotal);m_oActtotal.SetWindowText(sto
15、tal);m_pRecordset-Close();catch(_com_error e)/捕捉异常 CString temp;temp.Format(读取单据头到编辑框出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;ReadToFormlist(sbillid);/Get bill items from database.3.2.1 点菜窗口实现点菜窗口会显示所有商品类别的列表,以及每一个类别所对应的商品名称和价格,顾客可随意进行选择。如图3-4 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 28 页 -图 3-4 点
16、菜窗口主窗口的“点菜”按钮的clicked事件代码:/得到系统时间CTime now=CTime:GetCurrentTime();snowtime=now.Format(_T(%Y-%m-%d%H:%M:%S);sbillno=GenNewBillID();sql=Insert into SALEBILL(ID,BEGINDATE,STATUS,TOTAL,ACTTOTAL,PAYMODE,FLOOR)values(+sbillno+,+snowtime+,等待,0,0,1,+sfloor+);try _variant_t RecordsAffected;theApp.m_pConnecti
17、on-Execute(_bstr_t)sql,&RecordsAffected,adCmdText);catch(_com_error e)/捕捉异常名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 28 页 -CString temp;temp.Format(开单 生成单据出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;m_oStatus.SetWindowText(等待);m_oBegintime.SetWindowText(snowtime);m_oTotal.SetWindowText(0.00);m_oActtotal
18、.SetWindowText(0.00);m_oListbill.AddString(sbillno);m_oListbill.SelectString(-1,sbillno);theApp.scallid=sbillno;/Get current bill id.m_oFormlist.DeleteAllItems();RECT rect;m_oFormlist.GetWindowRect(&rect);m_oButton.MoveWindow(440,95,rect.right/40,rect.bottom/35);m_oButton.BringWindowToTop();m_oButto
19、n.ShowWindow(SW_SHOW);/从隐藏变为显示如果希望选择某商品,可直接点击列表框中的商品,然后单击“选择”按钮,“选择”按钮的 clicked事件代码为:if(theApp.smname=)AfxMessageBox(请选择商品!);return;else 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 28 页 -LRESULT Res=:SendMessage(theApp.pWnd,WM_APPLY,0,0);CDialog:OnOK();3.2.2 结账窗口实现选择主窗口上显示的未结账单据,单击窗口上面的“结账”按钮,结账窗口就被打开,在窗口上会自动显示
20、该单据所对应的商品信息以及消费金额信息,管理员可手工输入折扣率以及付款金额,系统会自动找零。如图3-5 所示。图 3-5 结账窗口点击“结账”按钮clicked事件代码为:/得到系统时间CTime now=CTime:GetCurrentTime();snowtime=now.Format(_T(%Y-%m-%d%H:%M:%S);sql=Update SALEBILL set ENDDATE=+snowtime+,SALES=+theApp.name+,TOTAL=+stotal+,ACTTOTAL=+sbilltotal+,STATUS=已结帐,PAYMODE=+spayID+where
21、ID=+theApp.scallid+;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 28 页 -try _variant_t RecordsAffected;theApp.m_pConnection-Execute(_bstr_t)sql,&RecordsAffected,adCmdText);catch(_com_error e)/捕捉异常 CString temp;temp.Format(结帐单据头更新数据库出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;/output the checkout time and pa
22、ymode to the print.theApp.snowtimep=snowtime;theApp.spaymodep=spaymode;theApp.sconsume=stotal;theApp.sactsum=sbilltotal;/Insert data into PAYDETAIL.CString sclass,scontotal,sdiscount,sacttotal,svaltotal;int nItemCount=m_oChecklist.GetItemCount();/表项总数for(int i=0;iExecute(_bstr_t)sql,&RecordsAffected
23、,adCmdText);catch(_com_error e)/捕捉异常 CString temp;temp.Format(结 帐 付 款 明 细(PAYDETAIL)插 入 数 据 出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;只有挂账权限的人才可进行挂账。“挂账”按钮的 clicked事件代码为:if(!theApp.VerifyPower(Hang)AfxMessageBox(没有权限挂帐!);return;CString sql;sql=Update SALEBILL set STATUS=挂帐 where 名师资料总结-精品资料欢
24、迎下载-名师精心整理-第 14 页,共 28 页 -ID=+theApp.scallid+;try _variant_t RecordsAffected;theApp.m_pConnection-Execute(_bstr_t)sql,&RecordsAffected,adCmdText);catch(_com_error e)/捕捉异常 CString temp;temp.Format(结帐挂帐更新数据库出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;EndDialog(1);/Close the dialog.3.3 统计报表窗口实现管理
25、员可以对一段时间内的餐厅销售情况进行统计包括总销售情况以及所有单品的销售情况以便经营者随时调整餐厅市场方向,数据以 xcl 格式显示。如图 3-6 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 28 页 -图 3-6 统计报表窗口单击“统计”按钮,系统会自动将数据显示在左侧控件中,“统计”按钮的clicked事件代码为:switch(nselect)/Get if it is discount.case IDC_RADIO_WEEK:n=0;m_oListtitle.SetWindowText(*销售汇总报表 *);break;case IDC_RADIO_SINGLE
26、:n=1;m_oListtitle.SetWindowText(*单品报表 *);break;default:break;名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 28 页 -int ncount=m_oListreport.GetCount()-1;for(int i=ncount;i=0;i-)/Clear report listbox.m_oListreport.DeleteString(i);sql=Select*from COMPANY;try m_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-O
27、pen(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);if(!m_pRecordset-adoEOF)sfloor=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(FLOORNUMBER);scompany=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(COMPANYNAME);m_pRecordset-Close();catch(_com_error e)/
28、捕捉异常 CString sdate;sdate.Format(读取楼层号出错:%s,e.ErrorMessage();AfxMessageBox(sdate);m_oListreport.AddString();int ns=32-scompany.GetLength()-sfloor.GetLength();名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 28 页 -CString space=;for(int j=0;j=+sbegin+and ENDDATEExecute(_bstr_t)sql,&RecordsAffected,adCmd名师资料总结-精品资料欢迎下载
29、-名师精心整理-第 19 页,共 28 页 -Text);catch(_com_error e)/捕捉异常 CString errormessage;errormessage.Format(增加同级分类出错:%s,e.ErrorMessage();AfxMessageBox(errormessage);m_oClassname.SetWindowText(newclassname);m_oTreeclass.InsertItem(LPCTSTR)(_bstr_t)(newclassname),hParentItem,NULL);/Insert an item into current pare
30、nt.点击“删除”按钮,系统会删除此类别。“删除”按钮的 clicked事件代码为:if(AfxMessageBox(确定删除此类别吗?,MB_YESNO)=IDYES)try m_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);if(!m_pRecordset-BOF)/If current record i
31、s not the first record.curID=VariantToCString(m_pRecordset-GetCollect(ID);if(atol(curID)=1)MessageBox(不能删除 ID 为 1的类别!,m_classname);return;名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 28 页 -if(TreeSumRecordCount(curID)=0)if(CountMateriel(curID)0)MessageBox(此类别下已有商品,不能删除!);else m_pRecordset-Delete(adAffectCurrent)
32、;/删除当前记录m_oTreeclass.DeleteItem(hCurItem);if(TreeSumRecordCount(curID)0)MessageBox(不能删除结点类别!,m_classname);m_pRecordset-Update();m_pRecordset-Close();catch(_com_error e)/捕捉异常 CString errormessage;MessageBox(删除类别出错!,m_classname);3.8 商品资料窗口实现管理员可对每一种商品类别下的资料进行修改包括名称、价格等。如图3-8所示。名师资料总结-精品资料欢迎下载-名师精心整理-第
33、 21 页,共 28 页 -图 3-8 商品资料窗口单击“新增”按钮,为该类别增加新的商品信息,“新增”按钮的clicked事件代码为:m_oMname.SetWindowText();m_oMprice.SetWindowText();m_oMshopcode.SetWindowText();m_oMbarcode.SetWindowText();lNewID=GenNewID();单击“删除”按钮,删除该类别的商品信息,“删除”按钮的 clicked事件代码为:sql=select*from MATERIEL where NAME=+stemp+;try m_pRecordset.Crea
34、teInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 28 页 -);lclassid=(long)(m_pRecordset-GetCollect(CLASSID);if(AfxMessageBox(确定删除此商品吗?,MB_YESNO)=IDYES)m_pRecordset-Delete
35、(adAffectCurrent);/删除当前记录 else return;m_pRecordset-Update();catch(_com_error e)/捕捉异常 CString temp;temp.Format(删除商品出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;3.9 系统维护窗口实现管理员可以修改用户资料,并清除数据库中的冗余数据。如图3-9 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 28 页 -图 3-9 系统维护窗口进入该窗口后,系统会将用户信息显示在界面中,管理员可对信息进行修改并设置权限。用
36、户信息进行修改后,单击“保存”按钮,可将用户信息保存到数据库中,“保存”按钮的 clicked事件代码为:/检查数据完整性if(m_username.IsEmpty()|m_logname.IsEmpty()|m_upwd.IsEmpty()AfxMessageBox(请输入姓名、登录名称和密码!);return;if(lNewIDatol(suserid)snewid.Format(%d,lNewID);if(bRepeat(name)=TRUE)名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 28 页 -AfxMessageBox(用户名重复,请重新输入!);return;
37、try m_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);m_pRecordset-AddNew();/insert the current into database.m_pRecordset-PutCollect(ID,_variant_t(snewid);m_pRecordset-PutCollect(NA
38、ME,_variant_t(m_username);m_pRecordset-PutCollect(LOGINID,_variant_t(m_logname);m_pRecordset-PutCollect(PSD,_variant_t(m_upwd);m_pRecordset-PutCollect(TITLE,_variant_t(m_duty);m_pRecordset-PutCollect(SEX,_variant_t(m_sex);m_pRecordset-PutCollect(DATEBIRTH,_variant_t(m_datebirth);m_pRecordset-PutColl
39、ect(HOME,_variant_t(m_jiguan);m_pRecordset-PutCollect(EMPLOYNUMBER,_variant_t(m_number);m_pRecordset-PutCollect(DISCOUNT,_variant_t(sdiscount);m_pRecordset-PutCollect(POWER,_variant_t(spower);名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 28 页 -m_pRecordset-Update();/保存到库中m_oListuser.AddString(m_username);m_oListu
40、ser.SelectString(-1,m_username);m_pRecordset-Close();UpdateData(FALSE);catch(_com_error e)/捕捉异常 CString temp;temp.Format(保存用户资料出错:%s,e.ErrorMessage();AfxMessageBox(temp);return;系统功能模块的设计就介绍到这里,由于时间仓促,还有小部分功能模块没有一一罗列,但其基本思想已经说明。名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 28 页 -致谢谢谢某导师的指导,等等。名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 28 页 -参考文献1 国家 863 中部软件孵化器.C+从入门到精通.北京:人民邮电出版社,2010 2 伍俊良.PowerBuilder 课程设计与系统开发案例.北京:清华大学出版社,2006 3 邵丽萍,贾国长,王馨迪.应用软件开发技术-PowerBuilder 9.0.北京:清华大学出版社,2006 4 吴志华.PowerBuilder 9.0 编程实例五十讲.北京:中国水力水电出版社,2005 5 李卓玲.数据库系统原理与应用.北京:电子工业出版社,2004 名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 28 页 -