VC++课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

HHaarrbbiinnIInnssttiittuutteeooffTTeecchhnnoollooggyyaattWWeeiihhaaiiVVCC++++课课程程设设计计报报告告设计题目:餐饮管理系统院系:班级:学号:设计者:哈尔滨工业大学二零一二年八月1课程设计任务书姓名:学号:院(系):专业:任务起止日期:课程设计题目:餐饮管理系统问题阐述与分析:本餐饮管理系统适用于中小型餐馆和酒店使用,省时省力,操作简便,界面友好,可以完成酒店的点菜,结账等基本操作,数据库稳定。本系统用ACCESS数据库对数据进行存储和读取,系统分为八大模块,分别为管理员登录,注册,开台,点菜,加减菜,数量选择,结账,用户权限管理等模块。管理员分为经理和营业员两种,不同权限的人登录之后开放不同的模块,然后客人来之后先进行开台操作,然后自动跳出点菜对话框,客人点菜完成之后,在中途还可以进行加减菜的操作。客人结账时能够显示账单明细,自动计算总金额,自动计算找零金额等。另外设立用户权限管理模块,可以对不同注册用户进行授予不同权限的操作,从而保证系统的安全性。2工作量:系统分析设计,对各功能模块的设计与分析,系统的实现,运行环境,运作流程等。系统的实现部分,主要设计到前台以及后台的代码编写。安全分析与设计。工作计划安排:2012年8月20日---8月21日上午:确定课设题目,确定课设方案,功能模块设计,确定运行环境为WindowsXP下VC++6.0SP6。2012年8月21下午---8月22日上午:设计对话框并制作,设计类的基本功能,制作ACCESS数据库并学习连接数据库,完成了两个类的代码的编写。2012年8月22日上午---8月22日晚上:完成四个类代码的编写并进行调试。2012年8月23日上午---8月23日晚上:完成对其余两个类的编写,各模块合并运行,设计主界面风格。2012年8月24日:调试代码,美化界面,为程序添加注释。哈尔滨工业大学(威海)课程设计报告(论文)1VC++课程设计报告软硬件运行环境开发环境AMDAthlon™ⅡNeoProcessorK125,2GB内存,250GB硬盘Microsoft®Windows™XPProfessionalMicrosoft®VisualC++6.0MicrosoftOfficeAccess2003运行环境Intel®Pentium®2及以上处理器,32M以上内存,4G以上硬盘Microsoft®Windows™XP操作系统,Microsoft®Windows7操作系统问题及难点所在1.数据库操作。包括ACCESS数据库中数据表的制作,在程序中利用ADO技术进行数据的查询,检索,增加删除等操作,以及数据库。2.模块之间的连接问题。模块之间相互联系,进行数据交换,必须兼顾数据安全性和各个类之间的连接性的问题。3.系统安全性问题,由于数据库中存在金额等重要数据,必须对每个用户的访问权限加以限制,并可以修改用户权限。需求分析随着现代社会的发展,餐饮行业作为服务业的龙头企业规模不断扩大,一个大型酒店的餐饮服务部门往往服务许多客人,而一个企业的经营管理人员往往分工明确,一个人或几个人无法完成如此繁杂的账目统计和餐饮结账等工作,传统的算账、记账等人工哈尔滨工业大学(威海)课程设计报告(论文)2操作系统已经不能再适应现代企业的发展。为了使餐饮系统可以得到高效运转,伴随着计算机的普及,因此需要专业的餐饮管理系统来完成工作。我的课程设计就是在此背景下完成的,本套餐饮管理系统有着完整的客人消费流程,餐馆的经理和营业员均可已使用该系统,该系统解决了人工计算餐饮费用的各种不利因素,实现科学的点菜和结账管理,省时省力,适合大多数中小型餐馆使用,市场前景广阔。概要设计首先,要实现餐饮管理的功能,需要设计五个功能模块,分别为开台,点菜,加减菜,结账,数量选择等模块。然后先进行对话框的设计,分别设计IDD_diancai,IDD_jiacai,IDD_jiezhangdlg,IDD_kaitai,IDD_SHULIANG这五个对话框,在对话框上摆放控件,给控件修改ID号码,同时给各个对话框建立一个类,分别为CDiancaidlg,CJiacaidlg,CJiezhangdlg,CKaitaidlg,CSLdlg,并根据需要利用类向导为控件关联成员变量,建立成员函数和消息响应函数。其次,要增加系统的安全性能,实现管理员的登录功能,为管理员设置权限,分为经理和营业员两种,分别对不同权限的人开放不同的模块,在登录之前将所有功能都屏蔽。设计登录、注册和账户权限管理对话框,并为每个对话框设置类,给控件添加成员变量,编写代码。本系统使用ACCESS数据库对数据进行存储,利用ADO技术访问数据库,实现数据的检索,查询,插入,删除,更改等功能。在数据库中设计了四张数据表,分别为caishiinfo存放菜式信息,Login存放用户名和密码信息,paybill存放账单信息,TableUSE存放桌子使用情况的信息。然后再MFC程序中可以通过ADO语句来访问和操作数据库实现功能。对界面进行美化,使用MFC皮肤给应用程序添加自己喜欢的皮肤,给对话框添加FALSH插件进行美化。哈尔滨工业大学(威海)课程设计报告(论文)3框图如下:数据库设计1.使用ACCESS2003建立canyin.mdb的数据库,在其中添加四张数据表,分别用来存放菜式信息,用户信息,账单信息,桌号信息。2.在CMyApp类中添加_ConnectionPtr类型的变量m_pCon用于连接数据库。在窗口初始化函数中添加如下代码,用于连接和访问数据库。::CoInitialize(NULL);//访问COM库HRESULThr;//函数返回值,如果这个函数执行完返回时将有包含实际意义的数字,如果立即返回将包含状态信息try/*try关键字用来表示一个代码块,在可能发生的异常。对于每一个try语句,必须有至少有一个相应的catch子句。如果出现异常,c哈尔滨工业大学(威海)课程设计报告(论文)4atch子句参数进行评估,以确定它是否是能够处理特殊情况。特殊条件下,如果不能处理任何相应的try语句的catch子句,然后控制权转移的方法调用链和以前的所有异常类型进行评估,直到找到一个能够处理的条件。*/{hr=m_pCon.CreateInstance(ADODB.Connection);//创建连接。CreateInstance是智能指针本身的函数if(SUCCEEDED(hr)){m_pCon-ConnectionTimeout=3;hr=m_pCon-Open(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=canyin.mdb,,,adModeUnknown);//打开到数据库的连接,同步打开连接}}catch(_com_errore){CStringtemp;temp.Format(连接数据库错误信息:%s,e.ErrorMessage());//格式化输出信息::MessageBox(NULL,temp,提示信息,NULL);//弹出消息提醒框returnfalse;}连接数据库后即可在每个类中添加_ConnectionPtr类型的变量操作数据库。哈尔滨工业大学(威海)课程设计报告(论文)5详细设计下面对各个类的设计做详细介绍。1、用户登录模块流程图:哈尔滨工业大学(威海)课程设计报告(论文)6左侧插入了一个Flash插件,右侧添加控件,ID号和相应变量如下:ID号和相应函数为:IDOKOnOKIDCANCELOnCancle(1)用语句externCMyApptheApp;引入全局变量,然后建立_RecordsetPtr的变量m_pRs用于操作数据库,设置全局变量i用于计算登录输入的次数,当登录超过三次还未输入正确用户名和密码的话就自动退出程序。(2)登录按钮的实现首先判断编辑框是否出现输入异常的情况,然后检索数据库确定该用户名和密码是否正确,如果连接数据库成功则在login数据表中按照关键字进行用户名和密码的匹配,如果匹配成功,则登录成功,可以进行下一步操作。如果用户名和密码输入有误,则弹出消息框进行提示,然后初始化编辑框,再次接受用户名密码。如果连接数据库没有成功,则弹出消息框进行提示。在其中全局变量进行计数,如果输入超过三次则推出程序。登录成功之后,将用户名和密码存入到theApp的成员变量中以备在theApp对所登录的用户权限进行管理。下面为具体实现的代码:哈尔滨工业大学(威海)课程设计报告(论文)7voidCLogindlg::OnOK()//登陆按钮的操作{//TODO:AddextravalidationhereUpdateData();//调用函数进行数据交换if(!m_Uname.IsEmpty()||!m_Upasswd.IsEmpty())//判断用户名和密码编辑框是否为空{CStringsql=SELECT*FROMLoginWHEREUname='+m_Uname+'andUpasswd='+m_Upasswd+';//在数据表中查询是否存在该用户名和密码try{m_pRs.CreateInstance(ADODB.Recordset);m_pRs-Open((_variant_t)sql,theApp.m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);if(m_pRs-adoEOF){AfxMessageBox(用户名或密码错误!);m_Uname=;m_Upasswd=;//初始化编辑框i++;//用全局变量i控制输入错误次数UpdateData(false);if(i==3){OnCancel();//如果输入信息超过三次就退出系统}}else{theApp.name=m_Uname;theApp.pwd=m_Upasswd;//登陆成功后将用户名和密码保存CDialog::OnOK();return;}}catch(_com_errore)//无法连接数据库{CStringtemp;temp.Format(连接数据库错误信息:%s,e.ErrorMessage());AfxMessageBox(temp);return;}}哈尔滨工业大学(威海)课程设计报告(论文)8else{AfxMessageBox(用户名密码不能为空);//编辑框为空}}(3)退出模块直接调用CDialog::OnCancel()函数退出即可。2.开台模块实现流程图:(1)用语句externCMyApptheApp;引入全局变量,然后建立_RecordsetPtr的变量m_pRs用于操作数据库。开台模块中在上方显示一个列表框,列表框内显示所有桌子的信息,第一栏是桌号,第二栏是“有人”或者“没人”的显示。选择有人的桌子会自动报错,选中一个没有人的桌子,双击则会在下方的编辑框中显示选中的桌号,选择确定键则完成选择。选择完成之后数据库中对桌号信息进行更改,按取消按钮取消操作。哈尔滨工业大学(威海)课程设计报告(论文)9具体的ID号和对应的函数和变量如下:为确定键设置了OnButtonOk函数,为列表框相应双击消息设置OnDblclkList1函数,实现双击桌号能将信息存入编辑框中。(2)列表框控件初始化。在相应该类的OnInitDialog函数中,先为列表框设置风格,然后添加两列并命名,在桌号的tableuseid数据表中查询桌子的使用情况,将桌号和使用情况分别存入两个变量中,根据信息的不同将信息分别显示到列表框的两列中,查询该数据表中的所有数据得到列表框,以供用户进行桌子的选择。核心代码如下:m_Zhuolist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功