ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:26.79KB ,
资源ID:18349968      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18349968.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(酒店管理系统的设计与实现Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

酒店管理系统的设计与实现Word格式文档下载.docx

1、根据系统功能的要求, 考虑到Visual C+的编程特点, 将酒店管理系统分解成前台和后台两部分, 并将系统分解为几个比较小的功能模块分别进行开发。使得开发过程更具条理性, 并且方便对模块功能进行修改或添加新的功能模块, 从而使整个系统能够随着酒店业务的扩展进行功能的升级。为了增强系统的安全性,需要设计登录模块, 登录成功后才可以使用全部功能.整个酒店管理系统的设计方案如图2 所示。图1 软件系统结构图2 系统设计方案摘要: 本文主要介绍了利用Visual C+开发的酒店管理系统。随着软件开发技术和数据库技术的完善与发展, 国内外的企业已经开始充分利用各种各样的系统管理软件来管理诸如销售信息、

2、产品信息、员工信息等大量日趋繁杂的资料, 计算机辅助管理的高效性和高安全性等优点使得传统的管理方式黯然失色, 也为系统管理软件的发展提供了更广阔的前景和发展空间。本系统设计的主要目标是设计一个面向中小型酒店的简单易用的酒店管理系统。前台以Visual C+ 为开发工具, 设计软件的界面和各个功能模块; 后台使用SQLServer 2000 进行系统数据库的连接和管理。本系统已基本实现了中小型酒店常用的点菜、订菜、结算等功能, 帮助酒店建立了菜谱数据库和销售存根数据库, 可以方便地进行查询, 并在系统的易用性和安全性两方面进行了相应的完善。关键词: Visual C+; 安全性; 数据库中图分类

3、号: TP315 文献标识码: A 文章编号: 1009- 3044(2007)19- 40023- 03The Des ignment and Implementation of Res taurant Management Sys temGAN Chao- Song1, XIA Rong2(1.School of Computing, Jiangxi City Vocational Institute, Nanchang 330004, China; 2.Science and Technology College of NCHU, Nanchang330034, China)Abs tr

4、act:This paper mainly introduces the management system of restaurant developed with Microsoft Visual C+. With the developmentof software and database technology, the domestic corporations and the oversea corporations already begin to make full use of all kinds of systemmanagement software to manage

5、lots of interior things, such as vendition information、production information、employee information and so on.Computer- aided management has lots of merits compared with traditional management mode, such as high efficiency and high security. It alsosupplies more wide foreground and developing space f

6、or the development of system management software. The main aim of this system is to designa easily- using management system of restaurant for petty restaurant. Front end uses Visual C+ as developing tool, designs main interfaceand function modules; background use SQL Server 2000 for connecting and m

7、anaging system database. This system basicly actualized functionsin common use of order dishes、prearrangement、settle accounts for petty restaurant, and help restaurant to set up database of bills of fare and venditioninformation. They can expediently be queryed and strengthen the easily- using and s

8、ecurity of system.Key words :Visual C+; security; database234 设计要点与注意事项4.1 设计要点图形化界面尽量做到美观简洁;充分考虑到系统的安全性;通过使用map 类快速保存和检索数据集结果;通过使用数据绑定技术优化代码。4.2 注意事项系统运行前数据库要进行正确配置;算法应简单明了, 有较高的时空效率;注意学习使用数据绑定等新技术;设计登录模块时注意增强安全性。5 关键技术5.1 数据库的连接将SQL Server 默认的数据库设置为酒店管理系统所在的RMS 后, 就可以在程序中使用DSN 来访问SQL Server 数据库了。C

9、RMSDlg:OnInitDialog()中连接数据库部分的代码如下:trym_DBCnt.CreateInstance(_uuidof(Connection);m_DBCnt - ConnectionString = DSN =RMS;UID =fdd;PWD =121;m_DBCnt- Open(, , - 1);catch(_com_error& e)AfxMessageBox(e.ErrorMessage();this- EndDialog(0);return TRUE;其中DSN=后面即为酒店管理系统所用的数据库的名称, 可根据实际情况进行更改。5.2 菜谱管理模块菜谱对话框的设计采

10、用一个列表框控件显示读取的数据记录, 并在CDlgViewCP:OnInitDialog()中对这个控件(m_list)进行初始化(分割列, 设置列宽, 设置风格等), 其中m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);这一行代码使单击列表框时选中其中的一整行, 而不是其中的某一格。在单击并选中某一行的时候,程序处理这个单击事件, 并将这一行的数据在下面的列表框中显示出来, 利用函数CDlgViewCP:OnClickListCp 来实现这一点:int i = m_list.GetSelectionMark();m_no = m_list.GetI

11、temText(i,0);m_name = m_list.GetItemText(i,1);m_kind = m_list.GetItemText(i,2);m_price = (float)atof(m_list.GetItemText(i,3);m_detail = m_list.GetItemText(i,4);UpdateData(FALSE);*pResult = 0;另外在菜谱管理模块中还要同时实现菜谱查询功能, 即由用户选择查询目标(编号,菜名,种类), 再填入所要查询的内容就可在菜谱中查询到符合条件的菜。如果没有输入任何查询条件, 那么就列出菜谱中所有的菜。void CDlgV

12、iewCP:RefreshData(LPCTSTR qry)m_list.DeleteAllItems();m_list.SetRedraw(FALSE);_RecordsetPtr pRst = NULL;IADORecordBinding *picRs = NULL; /Interface Pointer declared.(VC+ Extensions)CCPRs rs;try _bstr_t strSQL = qry;TESTHR(pRst.CreateInstance(_uuidof(Recordset);pRst = m_DBCnt- Execute(strSQL, NULL, a

13、dCmdText);/数据绑定(Data Binding)TESTHR (pRst - QueryInterface (_uuidof (IADORecordBinding),(LPVOID*)&picRs);TESTHR(picRs- BindToRecordset(&rs);int i = 0;char buf128;while (! pRst- adoEOF)m_list.InsertItem(0, rs.m_sz_no);m_list.SetItemText(i, 1, rs.m_sz_name);m_list.SetItemText(i, 2, rs.m_sz_kind);sprin

14、tf(buf, %f, rs.m_f_price); m_list.SetItemText(i, 3, buf);m_list.SetItemText(i, 4, rs.m_sz_detail);/移到下一条记录pRst- MoveNext();picRs- Release();Close();catch(_com_error&m_list.SetRedraw(TRUE);return;在上面的这段RefreshData 函数的代码中, 由于使用了ADO2.0 for Visual C+ Extensions 所提供的新特性Data Binding (数据绑定)技术, 所以代码显得比较简洁。5

15、.3 登录管理模块在未登录的时候, 主对话框中的按钮, 除了登录, 退出, 帮助,关于等项, 全是不可用的。为了达到这一效果, 在CRMSDlg:OnInitDialog()中加入如下代码:GetDlgItem(IDC_BTN_UPDPWD)- EnableWindow(FALSE);GetDlgItem(IDC_BTN_DC)- GetDlgItem(IDC_BTN_JS)- GetDlgItem(IDC_BTN_CP)- GetDlgItem(IDC_BTN_VIEWDC)- 若登录成功后, 只需将FALSE 换成TRUE, 则所有按钮都变为可用。将进行登录验证的SQL 代码加入到主对话框

16、的事件处理函数CRMSDlg:OnBtnLogin()中, 用来处理登录事务:sql_.Format (SELECT 值班员FROM ZBY WHERE 值班员=%s AND 密码=,dlg.m_name, dlg.m_pswd);这里并没有取出值班员表中的所有字段(值班员和密码), 然后把密码字段和用户的输入作比较来决定登录成功与否; 而是只取出了值班员名字(值班员), 密码的校验放在数据库服务器端进行, 这主要是基于安全的考虑。如果没有确实的需要, 就尽量不从数据库里取用户密码这种敏感数据, 以免产生安全漏洞, 削弱系统的安全性。修改密码部分的处理代码和登录部分类似, 只是不但要进行旧密码

17、的验证, 还要确认两次输入的新密码一致, 如旧密码错误或两次输入的新密码不一致则需要给出相应的提示。另外还要利用SQL 语句向数据库中写入新密码: sql_.Format (Update ZBYSET 密码=% s WHERE 值班员=,dlg.m_newpswd, dlg.m_name); 密码修改成功后则给出密码已修改成功的提示。5.4 点菜模块在这个模块里可以根据顾客的需要逐项输入菜谱中的菜肴,并可对已经做出的选择进行删除和修改。待最终决定之后单击提交按钮就会将结果保存到数据库中。点菜订菜操作首先要在桌号编辑框中输入桌号, 然后在编号选择框中通过选择菜谱中的编号来选择菜肴。这样顾客只需说

18、出所需菜肴在菜谱上的编号, 值班员就可以很快地找到顾客所需要的菜, 而不必让顾客报出菜名,提高服务效率, 降低出错率。为了使编号选择框中包含所有的菜谱号, 在CDlgDC:OnInitDialog()中应包含如下代码:try_bstr_t strSQL(SELECT * FROMCP);cpmap.clear(); / 清空cpmapm_nos.AddString(rs.m_sz_no);/向cpmap 中添加一个菜谱号- 菜名映射cpmap.insert (CPMap:value_type (string (rs.m_sz_no), string(rs.24m_sz_name);上面代码中的

19、cpmap 变量用于保存一组菜谱号- 菜名的映射, 这样在用户选中某一个菜谱编号是能迅速的由编号找到对应的菜, 而不用去读取数据库.值班员在编号选择框中选中一个编号的事件为CBN_CLOSEUP, 这个事件的处理函数为CDlgDC:OnCloseupComboDcnos():void CDlgDC:OnCloseupComboDcnos()char buf128;m_nos.GetWindowText(buf, 128);CPMap:const_iterator it = cpmap.find(string(buf);if (it! =cpmap.end()string name = (*it

20、).second;GetDlgItem(IDC_EDIT_DCNAME)- SetWindowText(name.data();cpmap 的定义在DlgDC.cpp 的开头:#pragma warning(disable: 4786) 4503)#include stringusing namespace std;typedef map CPMap;CPMap cpmap;这里定义的CPMap 类建立了一个从字符串到字符串的映射, 就是从map 和string 模板类来的, CPMap 是一个STL(StandardTemplate Library)类, 而cpmap 则是CPMap 型的全

21、局变量。另外由于使用了模板, 会在类的内部产生相当长的类型名, 从而在编译时出现C4787 警告, 提示指示类型名长度超过255 个字符, 所以用“#pragma warning(disable: 4786)”来关掉这个警告。值班员在订餐模块中修改、删除和增加菜肴都不会对数据库作修改, 而是先在列表框控件m_list 中进行这些操作。只有在单击提交按钮之后, 才会向数据库中提交数据。每向数据库中加入一条, 就会自动清除列表框中相应的输入。全部添加成功后, 列表框才会被全部清空。如果中途出现错误, 则停止添加。列表框中剩下的项就是没有成功添加的项, 值班员可对其进行修改后再进行添加。这部分的主要

22、代码如下:TESTHR(pRst.CreateInstance(_uuidof(Recordset);DC,_variant_t(IDispatch *) m_DBCnt, true),adOpenKeyset, adLockOptimistic, adCmdTable);/逐项读取,逐项提交while (m_list.GetItemCount()0)m_list.GetItemText(0,0,rs.m_sz_desk,sizeof(rs.m_sz_desk);m_list.GetItemText(0,1,rs.m_sz_no,sizeof(rs.m_sz_no);m_list.GetIte

23、mText(0,2,rs.m_sz_name,sizeof(rs.m_sz_name);rs.m_f_number=(float)atof(m_list.GetItemText(0,3);m_list.GetItemText(0,4,rs.m_sz_date,sizeof(rs.m_sz_date);COleSafeArray vaFieldlist, vaValuelist;rs.FillFieldsArray(vaFieldlist,vaValuelist);/提交一条菜谱记录TESTHR(pRst- AddNew(vaFieldlist, vaValuelist);/从列表控件中删除已成

24、功添加的菜m_list.DeleteItem(0);在将数据添加到数据库后将显示操作完成的提示。5.5 结算模块开始结算时, 将先出现要求输入桌号和折扣率的对话框, 为符合实际情况, 需要在ClassWizard 里限制折扣率一项的输入在0.1- 1.0 之间。如未输入桌号就点击确定, 则会给出要求输入桌号的提示。下面是处理单击结算按钮事件的函数:void CRMSDlg:OnBtnJs()CDlgBeginJS dlg1;ShowWindow(SW_HIDE);dlg1.DoModal();if (dlg1.m_desk.GetLength()CDlgJS dlg2;dlg2.Setup(m

25、_DBCnt, dlg1.m_desk, dlg1.m_dz);dlg2.DoModal(); elseMessageBox(请输入桌号! ShowWindow(SW_SHOW);在上面的代码中, 读取了桌号和折扣率的信息之后, 程序把这两个信息传给一个CDlgJS 对话框对象, 然后显示这个对话框。程序读出指定桌号的订餐信息, 计算出总金额, 并根据打折情况计算出结算金额, 这部分工作在OnInitDialog 中完成:float CDlgJS:GetPrice(LPCTSTR no)_RecordsetPtr pRst = NULL;rs.m_f_price = 0.0;CString sql_;sql_.Format(SELECT * FROMCP WHERE 编号=, no);_bstr_t strSQL = sql_;if (pRst- adoEOF) _com_issue_error(0x80000000);TESTHR(pRst - QueryInterface (_uuidof(IADORecordBinding),return rs.m_f_price;结算完成后单击保存帐单按钮, 程序将在结算表中添加一条记录, 并删除已经结算过的订菜信息。由于涉及到两个相互关联的操作, 所以必须使用ADO 的事务功能。在添加操作之前调用Connection 对象的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1