点餐系统需求1(1)

上传人:无*** 文档编号:157148671 上传时间:2022-09-28 格式:DOC 页数:16 大小:612.50KB
收藏 版权申诉 举报 下载
点餐系统需求1(1)_第1页
第1页 / 共16页
点餐系统需求1(1)_第2页
第2页 / 共16页
点餐系统需求1(1)_第3页
第3页 / 共16页
资源描述:

《点餐系统需求1(1)》由会员分享,可在线阅读,更多相关《点餐系统需求1(1)(16页珍藏版)》请在装配图网上搜索。

1、点菜系统文档I 系统设计一、系统设计目标1、通过一个模拟点菜系统,使企业的餐饮管理电子化、人性化、便捷化、自动化,从而提高企业管理效率及企业形象;2、系统开发的总体任务是实现餐饮管理电子化、人性化、自动化。二、 开发设计思想1、尽量采用现有的软硬件环境,及陷阱的管理系统开发方案,从而达到充分利用公司现有资源,提高系统公开发水平和应用效果的目的。2、 系统应符合餐饮管理的规定,满足企业日常经营工作需要,并达到操作过程中的直观、方便、实用、安全等要求。3、系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户点菜界面、提供点菜功能,访问数据库服务器;服务器端父子提供数据服务及管理功能。4、 系统

2、采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。5、 系统应具备数据库维护功能,及时根据用户需求进行数据的添加、修改、删除、备份等操作。三、系统功能分析系统功能分析是在系统开发总体任务的基础上完成的。系统将要完成的功能主要有:1、前台主要负责点菜,其具体功能为:l 点菜 点菜时设备显示每个菜的介绍,含有菜名,分类,菜价,图片信息l 菜单下载l 订菜信息上传2、后台主要负责菜单维护功能,具体主要功能有:l 楼面管理,主要查看桌子的当前状态。包含桌号、状态信息l 菜色管理,包含名称、种类、价格、图片等信息l 权限管理,该模块可以随身定制权限,其权限

3、主要包括:订单管理,员工管理,菜色分类管理及菜色管理等四种权限l 员工管理,包含姓名密码权限性别等信息四、系统功能模块设计在系统功能分析的基础上,得到如图1的功能结构图。图1 功能结构图II 数据库设计数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程的实现方法等。在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。一、数据库分析通过上述系统功能模块分析,设计相应的数据项及数据结构如下:1、 员工基本情况:2、二

4、、数据库概念结构设计这一设计阶段是在需求分析的基础上而进行的,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本系统根据上面设计规划出来的实体有: 桌子:菜品:类别:订单:权限管理:权限分类实体间的关系图如下:三、数据库逻辑结构设计在上面的实体之间的关系的基础上,形成数据库中的表格以及各个表格之间的关系。点菜系统数据库中各个表格的设计结果如下面的几个表格所示。各个表格表示在数据库中的一个表。表1 员工表EmployeInfo列名数据类型可否为空说明EmployeIDnchar(10)否员工号(主键)Namenchar(10)可以姓名AgeInt可以年龄Pwd

5、nchar(10)可以密码PurviewIDnchar(3)否权限号表2 桌子表TableInfo列名数据类型可否为空说明TableIDnchar(10)否桌号(主键)TableStateInt可以状态表3 菜品表DishInfo列名数据类型可否为空说明DishIDnchar(10)否菜号(主键)Namenchar(10)可以菜名SortIDnchar(10)可以菜类号Demontext可以备注Pricemoney否价格Picturenchar(50)可以图片位置表4 分类表DishSort列名数据类型可否为空说明SortIDnchar(10)否类别号(主键)Namenchar(10)可以类别

6、名订单表OrderInfo列名数据类型可否为空说明OrderIDnchar(10)否订单号(主键)OrderTimedatetime可以下单时间TableIDnchar(10)可以桌号DishIDnchar(10)可以菜号Feemoney可以费用FeeStateint可以收费状态EmployeIDnchar(10)可以员工ID表5 权限表PurviewManage列名数据类型可否为空说明PurviewIDnchar(3)否权限号(主键)EmployeManageInt可以员工管理OrderManageInt可以订单管理SortManageInt可以分类管理DishManageInt可以菜色管理

7、表6 权限分类PurviewSort列名数据类型可否为空说明PurviewIDnchar(3)否权限号(主键)Namenchar(10)可以权限名四、数据库结构实现在需求分析、概念结构设计的基础上得到数据库逻辑结构后,就可以在数据库系统中实现该逻辑结构。具体生成过程参看SQL教程。IV 创建应用程序此系统采用MFC ADO方法开发,工程的创建步骤如下:(1)选择菜单“File|New”中的”新建项目”选项卡中“MFC appwizard(exe)”,设置合适的目录和项目名,如“D:临时资料AustOrder”目录下的“RestManagement”项目。(2)创建一个对话框应用程序,选择“Di

8、alog based”选项,然后单击“Next”按钮。(3)再接连单击“Next”按钮,然后单击“Finish”按钮就完成了应用程序的创建。III 数据库操作的准备一、数据库连接A)在stdafx. H文件中加入#import C:Program FilesCommon FilesSystemadomsado15.dllno_namespace rename(EOF,adoEOF)B)在RestManagement.h文件中加入class CRestManagementApp : public CWinApppublic:CRestManagementApp();CRestManagement

9、App();_ConnectionPtr m_pConnection;。;C)在RestManagement.cpp文件BOOL CRestManagementApp:InitInstance()中加入BOOL CRestManagementApp:InitInstance()。AfxOleInit(); /初始化ADOAfxEnableControlContainer();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistr

10、yKey(_T(应用程序向导生成的本地应用程序);m_pConnection.CreateInstance(_uuidof(Connection);/m_pConnection-Open(Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DishOrder;Data Source=HUGUOXIONG-PC,adModeUnknown); /设置数据源,即数据库连接字段try / 打开本地sql库m_pConnection-Open(Provider=SQLOLEDB

11、.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DishOrder;DataSource=HUGUOXIONG-PCSQLEXPRESS,adModeUnknown); catch(_com_error e) AfxMessageBox(_T(数据库连接失败,确认数据库DishOrder.mdb是否在当前路径下!); return FALSE; 。D)在系统退出时要在RestManagement.cpp文件中加入:int CRestManagementApp:ExitInstance(void)m_

12、pConnection=NULL;return CWinApp:ExitInstance();二、数据库添加、删除、插入、查询操作 经过上面操作,已经成功和数据库连接上,下面将要通过记录集对象进行数据库的添加操作。具体操作如下:1、在每个对话框类的头文件中添加如下语句:class CPurviewsort : public CDialog。public:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;_CommandPtr m_pCommand;。;2、在需要加入的地方写上如下语句:sqlStr.Format(_T(Insert

13、into PurviewSort (PurviewID,Name) values (%s,%s),m_strPurID,m_strPurName);theApp.m_pConnection-Execute(_bstr_t)sqlStr,NULL,adCmdText);/*记录集指针执行SQL语句*/ 对于数据库其他的诸如删除、查询、插入等操作与添加操作类似。IV 登陆窗口的设计 由于此应用程序采用的是基于对话框开发,因此该应用程序的登录窗口应该在主对话框(即运行应用程序后出现的对话框)之前出现。该窗口的设计如下图所示。 该窗口放置了2个静态文本框(Static)空间,在窗口的相应位置显示文字。

14、放置了2个编辑框(Edit)空间,一个供用户输入登录的用户名(strName),另一个供用户输入口令(strPwd),这一编辑框Password属性要设置成TRUE。输入的值存放在编辑框控件对应的变量中。另外还放置了2个按钮(Button)控件,一个是登陆控件,一个是退出控件。为了数据库使用的安全,允许的用户和口令都预先存在数据库中,如果要加入新的用户,必须修改数据库中对应的表。单击“登录”按钮后,应用程序先执行一次数据库的查询,看输入的用户名和口令是不是在数据库的EmployeInfo表中存在,如果存在则且密码正确就查询相应权限,并打开系统主对话框;如果用户名不存在或密码错误,则登录失败,从

15、新输入。下面是实现这些功能的代码,写在“登录”按钮的单击事件函数中:void CDiaLogin:OnBnClickedButOk()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CString SQL;/SQL.Format(_T(select Name,Pwd,PurviewID from EmployeInfo);SQL.Format(_T(select RTRIM(Name),RTRIM(Pwd),PurviewID from EmployeInfo); /*声明相应的SQL语句*/ m_pRecordset=theApp.m_pConnection-E

16、xecute(_bstr_t)SQL,NULL,adCmdText);/*记录集指针执行SQL语句*/int Counter=0; if(!(m_pRecordset-BOF)/若记录集指针未指向数据库中的首元素 bool t=FALSE; m_pRecordset-MoveFirst();/则将其指向首元素位置 while (!m_pRecordset-adoEOF)/若记录集指针未指向数据库中的尾元素,则循环永远不会结束 Name=(char*)(_bstr_t)m_pRecordset-GetCollect(long)0); Pwd=(char*)(_bstr_t)m_pRecordse

17、t-GetCollect(long)1); if(strName=Name)&(strPwd=Pwd) Purview=(char*)(_bstr_t)m_pRecordset-GetCollect(long)2);EndDialog(IDOK);t=TRUE;break; m_pRecordset-MoveNext(); if(t=FALSE):MessageBox(NULL,_T(请确认用户名和密码,注意大小写!请重新输入。),_T(认证失败), MB_OK);strName.SetString(_T();strPwd.SetString(_T();UpdateData(FALSE);Ge

18、tDlgItem(IDC_EDIT_LOG)-SetFocus(); 对话框上的“退出”按钮为退出整个应用程序,其代码如下:void CDiaLogin:OnBnClickedButExit()/ TODO: 在此添加控件通知处理程序代码EndDialog(IDCANCEL);V 建立主窗口 系统的应用程序的各个不同功能是通过选择窗口菜单实现的。每个功能模块由一个或多个对话框实现。 主窗口菜单如下图所示:具体菜单设计如下表:菜单名称ID系统管理权限管理权限分配ID_PURMAN权限类别ID_PURSORT员工管理ID_ID_EMPMAN退出ID_APP_EXIT订单管理订单查看ID_MENUO

19、RDER菜色管理类别管理ID_SORTMANA菜色管理ID_DISHINFO帮助关于 RestManagemenID_APP_ABOUT把菜单添加到主对话框中,在RestManagementDlg.cpp文件中加入BOOL CRestManagementDlg:OnInitDialog()。/ TODO: 在此添加额外的初始化代码m_Menu.LoadMenu(IDR_MAINFRAME); SetMenu(&m_Menu);。主窗口图片加载,在RestManagementDlg.cpp文件中加入void CRestManagementDlg:OnPaint()if (IsIconic()。e

20、lseCPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP_MAIN); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rec

21、t.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);CDialog:OnPaint();VI 类别管理的设计与实现类别管理模块主要完成菜的分类管理,包括对分类信息的添加删除等操作。窗口由一个List Control控件和若干个Edit Control控件组成。具体如下图所示:其各控件参数设计如下表:控件类型ID成员变量说明List ControlIDC_LIST_SORTm_ListCtrlSortMana类别显示Static TextIDC_STATIC无类别号Static TextIDC_STATIC无类别名Edit

22、ControlIDC_EDIT_SORTstrSortNum类别号Edit ControlIDC_SORT_NAMEstrSortName类别名ButtonIDC_BTN_ADD无添加按钮ButtonIDC_BTN_DEL无删除按钮ButtonIDC_BTN_ALT无修改按钮1、对于该模块的触发,是由主界面中的“类别管理”菜单单击而得到的,具体代码:在RestManagementDlg.cpp文件中的菜单响应函数中输入:void CRestManagementDlg:OnSortmana()/ TODO: 在此添加命令处理程序代码CSort dlgSort;dlgSort.DoModal();

23、2、 添加对List Control控件标题栏的添加在sort.cpp文件中加入:BOOL CSort:OnInitDialog()CDialog:OnInitDialog();/ TODO: 在此添加额外的初始化/建立列表控件的列表头m_ListCtrlSortMana.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_ListCtrlSortMana.InsertColumn(1,_T(类别号),LVCFMT_LEFT,180);m_ListCtrlSortMana.InsertColumn(2,_T(类别名),LVCFMT

24、_LEFT,180);ReadList();return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回FALSE其中ReadList()函数是对List Control控件的操作的。具体代码:void CSort:ReadList()UpdateData(); m_ListCtrlSortMana.DeleteAllItems();/首先将ListControl中已有的数据清空,而后重新从数据库读入,以实现刷新效果 CString SQL,Columnname1,Columnname2; /*

25、通过以下两句代码即可实现实质上的以SQL语句操控数据库*/ SQL.Format(_T(select SortID,Name from DishSort); /*声明相应的SQL语句*/ m_pRecordset=theApp.m_pConnection-Execute(_bstr_t)SQL,NULL,adCmdText);/*记录集指针执行SQL语句*/ int Counter=0; if(!(m_pRecordset-BOF)/若记录集指针未指向数据库中的首元素 m_pRecordset-MoveFirst();/则将其指向首元素位置 while (!m_pRecordset-adoEO

26、F)/若记录集指针未指向数据库中的尾元素,则循环永远不会结束 Columnname1=(char*)(_bstr_t)m_pRecordset-GetCollect(long)0); Columnname2=(char*)(_bstr_t)m_pRecordset-GetCollect(long)1); /. m_ListCtrlSortMana.InsertItem(Counter,_T(); m_ListCtrlSortMana.SetItemText(Counter,0,Columnname1);/其中的Counter为行号;为列号即字段号 m_ListCtrlSortMana.SetI

27、temText(Counter,1,Columnname2);/同上 /. m_pRecordset-MoveNext(); Counter+; UpdateData(false); 3、 对其添加操作直接在窗口下方的两个编辑窗口中输入要添加的内容值,然后点添加按钮即可。代码如下:void CSort:OnBnClickedBtnAdd()/ TODO: 在此添加控件通知处理程序代码CString strSQL;UpdateData(TRUE);if(strSortNum!=)CString sqlStr;sqlStr.Format(_T(Insert into DishSort (SortI

28、D,Name) values (%s,%s),strSortNum,strSortName);theApp.m_pConnection-Execute(_bstr_t)sqlStr,NULL,adCmdText);/*记录集指针执行SQL语句*/ ReadList(); strSortNum=;strSortName=;UpdateData(FALSE);4、 修改操作双击List Control控件中想要修改的项,在下方的编辑框中进行修改后,单击修改按钮即可。代码如下:void CSort:OnBnClickedBtnAlt()/ TODO: 在此添加控件通知处理程序代码CString st

29、rSQL;UpdateData(TRUE);if(strSortNum!=)CString sqlStr;sqlStr.Format(_T(delete from DishSort where SortID=%s),strSortNumAmd);theApp.m_pConnection-Execute(_bstr_t)sqlStr,NULL,adCmdText);/*记录集指针执行SQL语句*/sqlStr.Format(_T(Insert into DishSort (SortID,Name) values (%s,%s),strSortNum,strSortName);theApp.m_p

30、Connection-Execute(_bstr_t)sqlStr,NULL,adCmdText);/*记录集指针执行SQL语句*/ ReadList(); strSortNum=;strSortName=;UpdateData(FALSE);5、 删除操作双击List Control控件中想要修改的项,单击删除按钮即可。代码如下:void CSort:OnBnClickedBtnDel()/ TODO: 在此添加控件通知处理程序代码int i,iState; int nItemSelected = m_ListCtrlSortMana.GetSelectedCount();/所选表项数int

31、 nItemCount = m_ListCtrlSortMana.GetItemCount();/表项总数if(nItemSelected =0;i-) iState=m_ListCtrlSortMana.GetItemState(i,LVIS_SELECTED); if(iState!=0) CString str = m_ListCtrlSortMana.GetItemText(i,0); CString sqlStr; sqlStr.Format(_T(delete from DishSort where SortID=%s),str);theApp.m_pConnection-Exec

32、ute(_bstr_t)sqlStr,NULL,adCmdText); m_ListCtrlSortMana.DeleteItem(i); ReadList();6、 双击List Control控件操作代码如下:void CSort:OnNMDblclkListSort(NMHDR *pNMHDR, LRESULT *pResult)/ TODO: 在此添加控件通知处理程序代码*pResult = 0;CString str;int nId;/首先得到点击的位置POSITION pos=m_ListCtrlSortMana.GetFirstSelectedItemPosition();if(

33、pos=NULL)MessageBox(_T(请至少选择一项),_T(提示信息),MB_ICONEXCLAMATION);return;/得到行号,通过POSITION转化nId=(int)m_ListCtrlSortMana.GetNextSelectedItem(pos);/得到列中的内容(表示第一列,同理,2,3.表示第二,三,四.列)UpdateData(TRUE);str=m_ListCtrlSortMana.GetItemText(nId,0);strSortNum=str;strSortNumAmd=str;str=m_ListCtrlSortMana.GetItemText(nId,1);strSortName=str;UpdateData(FALSE);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!