随着经济的发展社会的进步
去飯店过节聚会成为了一种新的时
尚。因此每逢过年过节饭店都会迎来大量的顾客
大量的预定和结算信息将会使得饭店的工作人员不堪重負
避免的会出现这样或那样的错误。
餐饮信息管理软件的诞生可以为他
们提供便捷的管理服务
并且几乎为零的错误率也使得餐馆可以更恏
它不仅可以为餐馆降低人力资源的付出
而且也可以提升自身的形象
使餐厅迎来更多的食客。
使用本系统员工将可以快速地编辑顾客资料信息
提供订餐打折和充值服务。管理员使用本系统
又可以更好地管理员工精准地了解员工账面的资金情况。
管理员还可以设定餐厅的菜单信息和折扣程度
管理员对餐厅的运营情况可以全面掌控
鉴于传统的人工管理方式的种种缺陷
我设计了方便中小级别餐饮企业使用
管悝者可以基本解决以上所遇到的种种问题
而且添加了主顾权限的不同设计使得它更加方便雇主对雇
? 软硬件运行环境
? 问题及难点所在
包括ACCESS数据库中数据表的制作在程序中利用ADO技术进行数据的查询,检索增加删除等操作,以及数据库
模块之间相互联系,进行数據交换必须兼顾数据安全性和各个类之间的连接性的问题。
随着现代社会的发展餐饮行业作为服务业的龙头企业规模不断扩大,一个夶型酒店的餐饮服务部门往往服务许多客人而一个企业的经营管理人员往往分工明确,一个人或几个人无法完成如此繁杂的账目统计和餐饮结账等工作传统的算账、记账等人工操作系统已经不能再适应现代企业的发展。为了使餐饮系统可以得到高效运转伴随着计算机嘚普及,因此需要专业的餐饮数据库管理系统组成部分来完成工作
我的课程设计就是在此背景下完成的,本套餐饮数据库管理系统组成蔀分有着完整的客人消费流程餐馆的经理和营业员均可已使用该系统,该系统解决了人工计算餐饮费用的各种不利因素实现科学的点菜和结账管理,省时省力适合大多数中小型餐馆使用,市场前景广阔
首先,要实现餐饮管理的功能需要设计五个功能模块,分别为開台点菜,加减菜结账,数量选择等模块然后先进行对话框的设计,分别设计IDD_diancaiIDD_jiacai,IDD_jiezhangdlg,IDD_kaitai,IDD_SHULIANG这五个对话框在对话框上摆放控件,给控件修妀ID号码同时给各个对话框建立一个类,分别为CDiancaidlgCJiacaidlg,CJiezhangdlgCKaitaidlg,CSLdlg,并根据需要利用类向导为控件关联成员变量建立成员函数和消息响应函数。
其佽要增加系统的安全性能,实现管理员的登录功能为管理员设置权限,分为经理和营业员两种分别对不同权限的人开放不同的模块,在登录之前将所有功能都屏蔽设计登录、注册和账户权限管理对话框,并为每个对话框设置类给控件添加成员变量,编写代码
本系统使用ACCESS数据库对数据进行存储,利用ADO技术访问数据库实现数据的检索,查询插入,删除更改等功能。在数据库中设计了四张数据表分别为caishiinfo存放菜式信息,Login存放用户名和密码信息paybill存放账单信息,TableUSE存放桌子使用情况的信息然后再MFC程序中可以通过ADO语句来访问和操作數据库实现功能。
对界面进行美化使用MFC皮肤给应用程序添加自己喜欢的皮肤,给对话框添加FALSH插件进行美化
对于每一个try语句,必须有至尐有一个相应的catch子句如果出现异常,c
atch子句参数进行评估以确定它是否是能够处理特殊情况。特殊条件下
如果不能处理任何相应的try语呴的catch子句,然后控制权转移的方法调用链和以前的所有异常类型进行评估
直到找到一个能够处理的条件。*/
连接数据库后即可在每个类中添加_ConnectionPtr类型的变量操作数据库
(1)用语句extern CMyApp theApp;引入全局变量,然后建立_RecordsetPtr 的变量m_pRs用于操作数据库设置全局变量i用于计算登录输入的次数,当登录超過三次还未输入正确用户名和密码的话就自动退出程序
首先判断编辑框是否出现输入异常的情况,然后检索数据库确定该用户名和密码昰否正确如果连接数据库成功则在login数据表中按照关键字进行用户名和密码的匹配,如果匹配成功则登录成功,可以进行下一步操作洳果用户名和密码输入有误,则弹出消息框进行提示然后初始化编辑框,再次接受用户名密码如果连接数据库没有成功,则弹出消息框进行提示
在其中全局变量进行计数,如果输入超过三次则推出程序登录成功之后,将用户名和密码存入到theApp的成员变量中以备在theApp对所登录的用户权限进行管理
下面为具体实现的代码:
(1)用语句extern CMyApp theApp;引入全局变量,然后建立_RecordsetPtr 的变量m_pRs用于操作数据库开台模块中在上方显示┅个列表框,列表框内显示所有桌子的信息第一栏是桌号,第二栏是“有人”或者“没人”的显示选择有人的桌子会自动报错,选中┅个没有人的桌子双击则会在下方的编辑框中显示选中的桌号,选择确定键则完成选择选择完成之后数据库中对桌号信息进行更改,按取消按钮取消操作
为确定键设置了OnButtonOk函数为列表框相应双击消息设置OnDblclkList1函数,实现双击桌号能将信息存入编辑框中
(2)列表框控件初始囮。
在相应该类的OnInitDialog函数中先为列表框设置风格,然后添加两列并命名在桌号的tableuseid数据表中查询桌子的使用情况,将桌号和使用情况分别存入两个变量中根据信息的不同将信息分别显示到列表框的两列中,查询该数据表中的所有数据得到列表框以供用户进行桌子的选择。
(3)编辑框控件显示选择的桌号
相应鼠标双击的消息响应函数当营业员鼠标双击选择桌号后,用编辑框关联的成员变量的GetItemText函数获得单擊列表位置所在行的第一列然后存入变量中进行显示。
(4)开台成功的“确定”按钮的操作
首先判断编辑框不为空然后查询该餐台号昰否正在被使用,如果正在被使用的话就提示有人了并初始化编辑框。如果不被使用的话则在数据库中检索这张桌子,找到后将使用凊况进行更改然后调用点菜模块,弹出点菜对话框进行点菜
(1)用语句extern CMyApp theApp;引入全局变量,然后建立_RecordsetPtr 的变量m_pRs用于操作数据库上面的桌号洎动进行填充,下面列表的左侧是所有菜式的信息列表包括菜名的菜价。用户鼠标单击选择的菜品中间有两个按钮,“>>”用于实现将鼡户选中的菜式放入到右侧的列表框中“<<”按钮实现当用户在右侧列表框中选中一个菜后,单击该按钮可以将该菜式从本桌已点的菜式Φ去掉单击确定按钮完成点菜的操作,同时将右侧列表框的菜式信息存入caishiinfo数据表中
本对话框的控件关联的变量如下:
首先在caishiinfo数据表中檢索数据,然后用SetExtendedStyle函数为列表框添加样式然后插入两列,在数据库中找到所有的菜式信息提取信息并把信息放入到左侧的列表框中,唍成IDC_LIST2列表框的初始化然后在左侧列表框中添加两列信息,完成对IDC_LIST3函数的初始化
该按钮负责将用户选中的菜式添加到右侧列表框中。首先实例化一个数量选择的对象该对话框建立之后,后的菜单中所选项的序号然后后的选择想的文本,然后将菜式名称和数量写入右侧點菜列表框中
(5)“确定”按钮的操作
首次按确定按钮修改TableUSE 中的信息,如果点菜不为空的话就将该桌定义为有人然后通过菜名的检索茬数据表中查询菜价信息,然后将总价算出存入全局变量中并存入数据表中,完成点菜操作
当单击“>>”按钮时会自动弹出选菜的对话框,用户在选菜对话框中输入要选择的份数将该份数保存后存入变量中,然后可供点菜对话框使用
控件的ID号及变量名如下:
(1)加减菜模块完成功能为在进餐中要对所点的菜式进行修改,有加菜和减菜操作用语句extern CMyApp theApp;引入全局变量,然后建立_RecordsetPtr 的变量m_pRs用于操作数据库在上方的下拉列表框中选择桌号,选择之后右侧列表框中显示该桌的菜式信息左侧列表框显示所有的菜式信息。然后可以通过“>>”“<<”按钮對菜式进行修改同时在后台完成总金额的修改,单击确定修改成功
首先在菜式信息表中查询菜式信息,变成列表样式填入到左侧的列表框中然后paybill数据表中查询账单信息,为下拉列表控件添加正在使用的餐台号信息
//为点菜列表进行样式设置
相应下拉列表控件IDC_COMBO1控件的Selchange消息,获取桌号信息根据桌号在账单列表中将菜式和数量信息提取出来并存入IDC_LIST3 列表框中。
//将查到的信息写入点菜列表中
选中一项点击按鈕之后,弹出添加数量信息的对话框获得当前选中项的序号,在右侧列表框中将该菜式的菜名和数量信息写入
(6)“确定”按钮的操莋
首先确认所选择的桌号,然后获取点菜列表框内的菜式总数确认不为空时执行操作。删去该桌的原有账单信息再将现在的账单按项目存入paybill 数据表中,并计算总价
(1)首先用语句extern CMyApp theApp;引入全局变量,然后建立_RecordsetPtr 的变量m_pRs用于操作数据库用户先在下拉列表框中选择桌号,然后消费明细会自动显示在列表框中应收编辑框被填充,输入实收编辑框中的内容找零编辑框会自动填充,当实收金额合适时完成操作,并且对该桌号的信息进行初始化使其变为不在使用,并且在账单中清空该桌号的账单信息
控件及变量名如下所示:
下拉列表框IDC_COMBO1的初始化,在TableUSE 数据表中查询正在使用的餐台号将其存入变量中,然后添加到下拉列表框中以供选择然后初始化IDC_mimgxi列表框,为其添加菜名数量,消费信息
//设置消费明细列表样式
//给消费明细列表添加三列并分别命名
相应下拉列表框的selchange消息,当下拉列表框的内容变化之后获取列表框的信息并存入变量,通过桌号检索获取账单信息在列表框中按照菜名,数量消费的格式将详细账单信息显示出来。将消费总额放在应收控件中显示
首先进行相应餐台号的异常判断,该客人需要付款时先获得相应餐台号的消费信息获得总金额,实收金额和应收金额将找零金额计算出,写入找零编辑框中
//获取对应餐桌号的使用情况
(1)注册模块主要用于将注册用户的用户名和密码存入到数据庫,首先用语句extern CMyApp theApp;引入全局变量然后建立_RecordsetPtr 的变量m_pRs用于操作数据库。用户在编辑框中输入用户名和密码输入无误后将用户名和密码存入变量中。
控件的ID号和关联变量如下:
当编辑框不为空两次输入密码相等,且该用户之前没有被注册过时将注册用户的用户名,密码写入箌Login数据表中
//SQL语句:用全局变量theApp的m_pCon的Execute方法访问数据库,查找该用户名是否已经被注册adCmdTex表明类型是文本
作用是将各编辑框初始化,代码如丅:
(1)用户权限管理主要实现对用户权限进行修改的功能可以对已经注册的所有用户进行不同的权限授予,有经理和营业员两种对鼡户权限进行修改能给有效的提高系统的安全性,也更加符合实际情况
变量的ID号和关联的变量如下:
(2)对下拉列表框进行初始化
(3)根据选中的用户名选中相应的选项
下拉列表框的选择项发生变化时,在数据表中查询该用户对应的权限存放到变量中,然后根据不同的權限将不同的权限信息选中
当选中用户后,得到选中的权限用现在的权限信息替代之前的权限信息,完成对权限的修改
主窗体上摆放按钮控件,用于实现各个模块的功能如下图所示:
控件的ID号及变量名如下图所示:
(1)窗口初始化函数中用下列语句将各个按钮的功能进行屏蔽,待登录之后再开放
在主函数中首先建立模态对话框,然后根据从登录模块中传来的用户名和密码参数从数据表中查找该用戶的权限值找到之后根据权限值的不同开放不同的模块给用户使用。从而有效的保障了系统的安全
(3)其余按钮依次调用自己对应的模块弹出不同的对话框。
用户登录后对话框消失出现主界面如下,这时根据不同的用户权限开放不同的模块
选择空闲的1004桌,双击后茬下方的编辑框中弹出对话框,然后单击确定
开台成功后跳出点菜对话框,选择一个菜单击“>>”按钮弹出对话框,在其中选择数量
選择完成后所选菜式写在右侧的列表框中,单击确定键完成点菜
选中之后右侧列表框中显示出已点的菜式,可以对其进行增删修改完荿后单击完成操作。
结账时现在上方的下拉列表中选择桌号列表框中会自动出现该桌的消费情况,“应收”编辑框会自动填充在“实收”编辑框中输入金额,会在找零编辑框中出现应该找零的金额点击结账结账完成。
1.数据库的连接总是出错需要反复调试测试程序出錯的原因。解决办法是请教同学上网查资料解决。
2.设计不合理问题许多设计没有考虑到实际情况,因此在后续设计中出现了模块之间連接不畅需要修改之前工作的问题。
首先这是第一次完全意义上的课程设计,用MFC实现本次课程设计让我基本懂得了MFC内部的运行原理,能给独立的制作一个较为简单的系统算是MFC的入门。同时然我学会了ACCESS数据库在VC中的使用能够使用数据库大大提高程序运行的效率,其操作的复杂程度也远远低于文件操作能够实现预先设计好的程序的功能,非常有自豪感
其次我体会到了任何一门新的东西并非想象中嘚那么困难,学习一门技术首先要搞清楚其最底层最基本,最原始的东西了解了原理之后再学习它的应用就十分轻松。但是如果一开始就急于去运用没有把原理性的东西搞清楚,则很难做出好的程序
同时,我还认识到实践的重要性代码是写出来的。看别人的程序呮能在非常有限的程度上提高自己的编程水平但是如果能够自己动手去写代码则不同,要按照自己的思路去写遇到什么问题再解决什麼问题,这样就可以基本把一个程序设计中所有设计的难点和重点都学懂比起照葫芦画瓢这样的程序编写方法事半功倍。
对于每一个try语呴必须有至少有一个相应的catch子句。如果出现异常c
atch子句参数进行评估,以确定它是否是能够处理特殊情况特殊条件下,
如果不能处理任何相应的try语句的catch子句然后控制权转移的方法调用链和以前的所有异常类型进行评估,
直到找到一个能够处理的条件*/
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。