版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、餐 厅 管 理 系 统 的 开 发 及 应 用 visual c+6.0的应用姓名:班级:餐厅管理系统的开发及应用摘要:本文是以visual c+6.0为开发工具进行应用程序开发的一个实例。主要介绍了一个餐厅管理系统的设计和实现的过程。首先,简单对本餐厅管理系统作个总体的介绍;其次,通过数据库的设计和数据表的设计来介绍在visual c+6.0中使用access 2000进行数据表设计和系统功能细化的方法;最后,也是本文的重点,具体实现系统主要功能模块的设计及重要按钮的代码,来体现使用visual c+6.0的方法和技巧。关键字:visual c+6.0、餐厅管理系统、数据库、原代码devel
2、opment and application of restaurant management systemname: chen haoclass: 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 realization of a management system in a res
3、taurant. 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 system function.at last but not at l
4、east, 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 code0 前 言随着我国国民经济迅猛发展,餐饮业也得到了空前的发展。餐馆除了给人们一个就餐
5、和娱乐的空间更要有豪华的硬件设施和优质的软件服务,尤其是在追求办公智能化的今天。1 系统介绍1.1系统功能分析本客房管理系统主要实现以下的功能:1、前台销售管理:通过该管理功能,工作人员可以通过计算机进行点菜、撤单、结账、查询、打印等服务。2、统计报表管理:通过该管理功能,管理员可以对餐厅某一时间段内销售清单或者某一单品进行统计、打印,及时了解公司营业状况。3、基础资料管理:通过该管理功能,管理员可以随时增加、修改、删除商品类别以及商品资料,通过市场动向,及时对菜单及菜价进行有效的管理。4、系统维护管理:通过该管理功能,系统管理员可以对系统进行维护,包括工作人员资料的增加、修改、删除、权限设置
6、等以及公司销售数据的清除。1.2 系统开发的目的和意义 在现代的餐饮服务行业中,由于食客流量的加剧增长,传统的手动方法已经不能适应现代社会的需要,各大中小型餐馆需要使用计算机进行现代化管理,针对这种情况,有必要开发一个“餐厅管理系统”来进行管理工作,因此,这样一个小型餐厅管理系统便应运而生了。由于时间仓促和水平有限,不当之处在所难免,留待以后进一步整理和完善。3 系统功能模块实现经过以上的设计分析,已经基本上完成了对本系统整体功能结构以及数据库等方面的设计工作,下面将使用已选定的前台开发工具powerbuilder 9.0来具体实现各个功能模块。3.1 系统登录窗口实现系统登录窗口是保证系统的
7、使用安全,不能任由其他人进入。其用户名和口令正确才能进入该系统。如图3-2所示。图 3-2 系统登录窗口为使系统在用户登录时记录其用户名,可以根据用户名自动判断用户的操作权限,可以使用哪些系统功能,应创建一个结构变量user。为使整个应用程序在使用提示对话框时方便,需要创建一个自定义提示框函数。其代码为:afxmessagebox(请输入用户名和密码!);return; “确定”按钮的clicked事件代码为:else/if user enter name and password./成生sql语句cstring sql=select * from users where loginid=+m
8、_logid+ and psd=+m_pwd+;try/查询数据库,看是否有此用户和密码m_precordset.createinstance(adodb.recordset);m_precordset-open(_variant_t)sql,_variant_t(idispatch*)theapp.m_pconnection,true),adopenstatic,adlockoptimistic,adcmdtext);/如果没有此用户和密码,再查询是否有此用户if(m_precordset-adoeof)afxmessagebox(用户名或密码错误!);elsethea=(lp
9、ctstr)(_bstr_t)m_precordset-getcollect(name);theapp.pwd=m_pwd;cdialog:onok();return;m_precordset-close();catch(_com_error e)/捕捉异常cstring temp;temp.format(读取用户名和密码错误:%s,e.errormessage();afxmessagebox(temp);return;3.2 主窗口实现主窗口是应用系统的平台,其中包括该系统的所有功能。如图3-3所示。进入系统后,在listbox控制控件中会自动显示所有未结账单据以及其所对应的信息(默认为第一
10、条单据)。图 3-3 主窗口主窗口listbox事件代码为:cstring stemp,sql,sbillid;int ioption; _recordsetptr 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=
11、select * from salebill where id=+sbillid+;trym_precordset.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-getcolle
12、ct(tableno);m_opeasons.setwindowtext(lpctstr)(_bstr_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(b
13、egindate);m_oendtime.setwindowtext(lpctstr)(_bstr_t)m_precordset-getcollect(enddate);float ftotal=(float)m_precordset-getcollect(total);cstring stotal;stotal.format(%.2f,ftotal);m_ototal.setwindowtext(stotal);ftotal=(float)m_precordset-getcollect(acttotal);stotal.format(%.2f,ftotal);m_oacttotal.setw
14、indowtext(stotal);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所示。图 3-4 点菜窗口主窗口的“点菜”按钮的clicked事件代码:
15、/得到系统时间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_pconnection-execute(_bstr_t)sql
16、,&recordsaffected,adcmdtext);catch(_com_error e)/捕捉异常cstring temp;temp.format(开单生成单据出错:%s,e.errormessage();afxmessagebox(temp);return;m_ostatus.setwindowtext(等待);m_obegintime.setwindowtext(snowtime);m_ototal.setwindowtext(0.00);m_oacttotal.setwindowtext(0.00);m_olistbill.addstring(sbillno);m_olistbi
17、ll.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_obutton.showwindow(sw_show);/从隐藏变为显示如果希望选择某商品,可直接点击列表框中的商品,然后单击“选
18、择”按钮,“选择”按钮的clicked事件代码为:if(theapp.smname=)afxmessagebox(请选择商品!);return;elselresult res=:sendmessage(theapp.pwnd, wm_apply, 0, 0);cdialog:onok();3.2.2 结账窗口实现选择主窗口上显示的未结账单据,单击窗口上面的“结账”按钮,结账窗口就被打开,在窗口上会自动显示该单据所对应的商品信息以及消费金额信息,管理员可手工输入折扣率以及付款金额,系统会自动找零。如图3-5所示。图 3-5 结账窗口点击“结账”按钮clicked事件代码为:/得到系统时间ctim
19、e now=ctime:getcurrenttime();snowtime=now.format(_t(%y-%m-%d %h:%m:%s);sql=update salebill set enddate=+snowtime+,sales=+thea+,total=+stotal+,acttotal=+sbilltotal+,status=已结帐,paymode=+spayid+ where id=+theapp.scallid+;try _variant_t recordsaffected;theapp.m_pconnection-execute(_bstr_t)sql,&re
20、cordsaffected,adcmdtext);catch(_com_error e)/捕捉异常cstring temp;temp.format(结帐单据头更新数据库出错:%s,e.errormessage();afxmessagebox(temp);return;/output the checkout time and paymode to the print.theapp.snowtimep=snowtime;theapp.spaymodep=spaymode;theapp.sconsume=stotal;theapp.sactsum=sbilltotal;/insert data i
21、nto paydetail.cstring sclass,scontotal,sdiscount,sacttotal,svaltotal;int nitemcount=m_ochecklist.getitemcount();/表项总数for(int i=0;iexecute(_bstr_t)sql,&recordsaffected,adcmdtext);catch(_com_error e)/捕捉异常cstring temp;temp.format(结帐付款明细(paydetail)插入数据出错:%s,e.errormessage();afxmessagebox(temp);return;只有
22、挂账权限的人才可进行挂账。“挂账”按钮的clicked事件代码为:if(!theapp.verifypower(hang)afxmessagebox(没有权限挂帐!);return;cstring sql;sql=update salebill set status=挂帐 where id=+theapp.scallid+;try _variant_t recordsaffected;theapp.m_pconnection-execute(_bstr_t)sql,&recordsaffected,adcmdtext);catch(_com_error e)/捕捉异常cstring temp;
23、temp.format(结帐挂帐更新数据库出错:%s,e.errormessage();afxmessagebox(temp);return;enddialog(1);/close the dialog.3.3 统计报表窗口实现管理员可以对一段时间内的餐厅销售情况进行统计包括总销售情况以及所有单品的销售情况以便经营者随时调整餐厅市场方向,数据以xcl格式显示。如图3-6所示。图 3-6 统计报表窗口单击“统计”按钮,系统会自动将数据显示在左侧控件中,“统计”按钮的clicked事件代码为:switch(nselect)/get if it is discount.case idc_radio_
24、week:n=0;m_olisttitle.setwindowtext(* 销售汇总报表 *);break;case idc_radio_single:n=1;m_olisttitle.setwindowtext(* 单品报表 *);break;default:break;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.create
25、instance(adodb.recordset);m_precordset-open(_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)
26、;m_precordset-close();catch(_com_error e)/捕捉异常cstring sdate;sdate.format(读取楼层号出错:%s,e.errormessage();afxmessagebox(sdate);m_olistreport.addstring( );int ns=32-scompany.getlength()-sfloor.getlength();cstring space= ;for(int j=0;j=+sbegin+ and enddateexecute(_bstr_t)sql,&recordsaffected,adcmdtext);cat
27、ch(_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 parent.点击“删除”按钮,系统会删除此类别。“删除”按钮的cli
28、cked事件代码为:if(afxmessagebox(确定删除此类别吗?,mb_yesno)=idyes)trym_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 is not the first record.curid=vari
29、anttocstring(m_precordset-getcollect(id);if(atol(curid)=1)messagebox(不能删除id为1的类别!,m_classname);return;if (treesumrecordcount(curid)=0)if(countmateriel(curid)0)messagebox(此类别下已有商品,不能删除!);elsem_precordset-delete(adaffectcurrent);/删除当前记录m_otreeclass.deleteitem(hcuritem);if (treesumrecordcount(curid)0)m
30、essagebox(不能删除结点类别!,m_classname);m_precordset-update();m_precordset-close();catch(_com_error e)/捕捉异常cstring errormessage;messagebox(删除类别出错!,m_classname);3.8 商品资料窗口实现管理员可对每一种商品类别下的资料进行修改包括名称、价格等。如图3-8所示。图 3-8 商品资料窗口单击“新增”按钮,为该类别增加新的商品信息,“新增”按钮的clicked事件代码为:m_omname.setwindowtext();m_omprice.setwindow
31、text();m_omshopcode.setwindowtext();m_ombarcode.setwindowtext();lnewid=gennewid();单击“删除”按钮,删除该类别的商品信息,“删除”按钮的clicked事件代码为:sql=select * from materiel where name=+stemp+;try m_precordset.createinstance(adodb.recordset);m_precordset-open(_variant_t)sql,_variant_t(idispatch*)theapp.m_pconnection,true),a
32、dopenstatic,adlockoptimistic,adcmdtext); lclassid=(long)(m_precordset-getcollect(classid);if(afxmessagebox(确定删除此商品吗?,mb_yesno)=idyes)m_precordset-delete(adaffectcurrent);/删除当前记录elsereturn;m_precordset-update(); catch(_com_error e)/捕捉异常cstring temp;temp.format(删除商品出错:%s,e.errormessage();afxmessagebox
33、(temp);return;3.9 系统维护窗口实现管理员可以修改用户资料,并清除数据库中的冗余数据。如图3-9所示。图 3-9 系统维护窗口进入该窗口后,系统会将用户信息显示在界面中,管理员可对信息进行修改并设置权限。用户信息进行修改后,单击“保存”按钮,可将用户信息保存到数据库中,“保存”按钮的clicked事件代码为:/检查数据完整性if(m_username.isempty()|m_logname.isempty()|m_upwd.isempty()afxmessagebox(请输入姓名、登录名称和密码!);return;if(lnewidatol(suserid)snewid.format(%d,lnewid);if(brepeat(name)=true)afxmessagebox(用户名重复,请重新输入!);return;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 c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有关幼儿园的小班月工作计划总结计划
- 2024年物流合作保险法律保障详尽协议版B版
- 买卖合同锦集六篇
- 2024年营养强化剂项目深度研究分析报告
- 服装销售店长工作计划
- 九年级计划作文600字
- 家长会发言稿集锦15篇
- 管理类实习经验报告毕业生
- 一周工作计划模板
- 年产12000吨十二烷基苯磺酸钠(浓缩洗衣粉)提升改造项目环评报告表
- 理论力学(浙江大学)知到智慧树章节答案
- JJF 1629-2017 烙铁温度计校准规范(高清版)
- 理想系列一体化速印机故障代码
- 检验科各专业组上岗轮岗培训考核制度全6页
- 部编版二年级下册语文拼音练习
- 工程停止点检查管理(共17页)
- 建筑施工危大工程监理实施细则
- 六年级上册数学单元测试第七单元检测卷∣苏教版
- 爬架安装检查验收记录表1529
- 2021年全国烟草工作会议上的报告
- [资料]马兰士(MarantzPM17)功放维护修理手册(含电路图)
评论
0/150
提交评论