1、餐饮管理系统系统设计与测试学号: 姓名:陈 炀年级:2023 级 专业:软 件 工 程 专 业 班级:软 件 工 程 一 班 指导教师:巫 宗 宾 成绩:第一章 设计31.1需求分析31.1.1概要31.1.3功能需求分析41.1.4运营需求41.1.5其他需求51.1.6系统的数据字典51.2 系统设计6系统登录退出模块:7菜单信息管理模块:8订餐信息管理模块:8员工信息管理模块:81.2.2 经理权限模块划分8经理权限划分如图1.2.2所示:8图1.2.2 经理权限模块图9经理使用本系统将能使用系统的所有功能。91.2.3 员工权限模块划分9员工(领班和营业员)权限划分如图1.2.3所示:
2、9图1.2.3 员工(领班和营业员)权限模块图91.2.4 系统流程分析9系统流程分析如图1.2.4所示:9图1.2.4 系统流程分析101.3 具体设计101.3.1 数据库101.3.2系统的登录12第二章 测试计划202.1 项目背景202.1.1编写目的202.1.2开发背景202.2项目环境202.2.1硬件环境202.2.2软件环境202.2.3人力资源212.3 测试周期21第三章 测试报告223.1测试内容223.2测试具体设计223.2.1用户登录模块测试:223.2.2顾客开台模块273.2.3员工注册模块30第四章 总结 35第一章 设计1.1需求分析1.1.1概要近年来
3、,随着人民的生活水平的不断提高,餐饮的消费连续增长,竞争愈来愈剧烈。然而,传统餐饮公司的平常工作还是要靠人工管理,从原材料入库到客人点单,再到结账基本由人工完毕记录,这样做不仅花费人力资源并且容易导致记录丢失或反复等错误,导致管理水平低下。作为传统的餐饮公司更是存在这些问题,进货库存有人工管理,客人点单需服务员记录并送至厨房,客人结账由于手工记录,人力花费大,客人等待时间长,管理效率低下,这就迫切需要标准的、高效率的计算机管理方式发展,通过计算机管理公司的平常动作,给管理者以决策参考模型,来不断完善管理水平,提高工作效率。 当今世界已进入了在计算机信息管理领域中剧烈竞争的时代,应用计算机已经变
4、得十分普遍了。我们应当认可,谁掌握的知识多,信息量大,信息解决速度快,批量大,谁的效率就高,谁就可以在各种竞争中立于不败之地。作为计算机的一部分,使用计算机对餐饮公司信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点可以极大地提高信息管理的效率,也是公司的科学化、正规化管理与世界接轨的重要条件。 通过度析,本系统运用了Microsoft SQL 为后台数据库,以Microsoft Visual C+ 6.0为前端开发工具,系统实现了前台管理,桌台信息的查询、开台信息、点菜、收银、桌台信息管理、员工管理、菜单维护、消费查
5、询、赚钱信息查询等功能。本系统具有良好的用户接口,使用方便。具有完善的查询,对维护系统起到辅助决策的作用,能及时、方便、灵活地进行查询、修改、删除等维护性操作。餐饮管理系统有足够的存储容量,满足餐馆每日营业的变动,此外,对于操作用户有一定的管理,并对用户的权限有一定的设立。 1.1.2系统性能分析1、多层结构设计 严格意义上的三层结构设计,其程序逻辑结构分为用户界面层、业务逻辑解决层和数据存储层。本系统采用的上有三层结构进一步扩展而成的多层结构。 2、面向对象设计 在系统中将菜品类型、员工等都封装成相应的类,同时每个类都有自己相应的集合类和操作类,从而再次提高了对数据库操作的安全性和程序的可扩
6、展性。 3、指导经营的功能 进销存管理系统并不仅仅能代替传统的书面操作,更重要的是它提供了信息分析的功能,只要单击一个按钮就可以查到目前销售最佳的商品或是库存最多的商品,从而起到指导经营的作用。 4、技术可行性分析 由于该系统具有和谐的人机互操作界面,操作人员只要进行少量的培训,系统的功能和使用方法就基本上可以是系统顺利运营。 5、经济可行性分析 该系统带来的经济效益明显的,其最重要的表现就是减少了公司管理费用和人力开支,不仅节省了大量的时间,还为公司的各项决策提供了宝贵的资料,为公司带来巨大的经济效益。同时该系统可以提高我们餐厅的销售效率,即提高了餐厅的经济效益,所以从经济上完全是可行的。
7、6、操作可行性分析 本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最和谐的交互界面,简介明了,不需要对数据库进行进一步的了解。 综上,该系统的操作是可行的,开发该系统可行。1.1.3功能需求分析 通过对系统的需求分析,本系统将实现餐饮系统的系统化、规范化、自动化。本系统有三种操作权限,其中,营业员只可以执行开台、点菜、买单及查询日收入操作;领班可以执行开台、点菜、买单、添加新员工、日收入及月收入查询等操作;经理具有最高权限,除了领班及营业员的操作权限外,还可以设立员工权限、添加商品信息及菜式信息、
8、备份与恢复数据库及初始化数据等操作。 1.功能划分功能划分功能划分功能划分 (1) 前台管理功能; (2) 后台管理功能; (3)员工管理功能。 2. 功能描述功能描述功能描述功能描述 (1) 前台管理功能:可以登录页面,查看空余桌位,安顿顾客于空闲桌位。输入顾客点菜信息,可以对消费客户进行结账,可以删除和重新输入顾客点菜信息(对客户已结账已经保存的信息无法改动),注册、查看客户,可以查看已保存的菜谱、消费情况等信息。 (2) 后勤管理功能:登陆软件页面,查看仓库库存情况,修改库存清单,修改菜谱中的欠缺情况(对于菜谱其他信息无法修改),查看录入进货详单等。 (3)员工管理功能:可以行使一切管理
9、功能,并可以增添删除和修改员工,可以查看并更改已保存的信息,改动菜单的信息(菜价、名称等),添加菜单信息,删减菜单信息。本功能只限于经理操作。1.1.4运营需求1 用户界面用户界面用户界面用户界面 本软件是基于windows平台下的窗口图形界面软件,运营主界面为Windows的经典运营界面,采用多文档界面,从而可以使程序更加美观,整齐有序,简易操作。 2.硬件接口 DVD光驱,打印机等。 3.软件接口 软件运营基于windows平台上的1998 ,2023,NT,XP,Vista等。 4故障解决故障解决故障解决故障解决 在用户的输入有错误的情况下,对于用户的输入错误应给出适当的改正提醒。若运营
10、时碰到不可恢复的系统错误,也必须保证数据库完好无损。 1.1.5其他需求1安全保密安全保密安全保密安全保密增长用户登录验证,保证信息安全性。 2可维护性可维护性可维护性可维护性应具有改正性维护、适应性维护、扩充与完善性维护等。 3可移植性可移植性可移植性可移植性软件可以安装于windows下的各种流行版本。 1.1.6系统的数据字典餐桌状态表 名字:餐桌状态表 别名: 描述:记录餐桌当前状态的信息 定义:餐桌状态表=餐桌号+状态+备注位置: 桌号 桌号名字:桌号别名: 描述:唯一标记系统中唯一的餐桌 定义:桌号 位置:餐桌状态表 财务收入表名字:财务收入表 别名: 描述:财务收入表=收入金额+
11、收入日起 名字:账单表 别名: 描述:描述顾客消费明细信息 定义:账单表=桌号+菜单+数量+价格账单表 菜名名字:菜名 别名: 描述:能具体描述没种菜的信息 定义:cainame char 价格 名字:价格 别名: 描述:描述没种菜的价格信息 定义:caiprice double 员工表名字:员工表别名: 描述:描述每个经营管理者的具体信息 定义:员工表=姓名+密码+权限 菜单表名字:菜单表 别名: 描述:描述餐厅所有菜单的信息 定义:菜单表=编号+菜名+价格 1.2 系统设计 1.2.1系统功能结构图此系统的功能结构图如下图1.2.1餐饮信息管理系统功能模块图所示:餐饮管理系统系统管理退出帮
12、助基础信息前台管理后台管理权限管理关于我们员工信息桌台信息退出系统商品信息员工管理进货开台顾客结账加菜减菜本日结算菜式信息 1.2.1餐饮信息管理系统功能模块图系统登录退出模块:本模块是被用于用户登录,注销和退出。模块根据用户的不同类型赋予用户不同的管理权限。低等级的用户不可访问高等级用户的个别功能,而高等级用户可以使用低等级用户的所有系统功能。低档用户类似领班和营业员,高级用户类似经理。 菜单信息管理模块:本模块将餐厅的菜品信息通过标准化的管理操作加以整合,使得菜品的价格、配料、功效和图片可以完全呈现在客户面前,使得客户可以方便地选择自己想要的食物。本模块的分权限设计将限制普通员工对菜单信息
13、加以修改,以防止菜单价格被恶意修改,以此保证餐厅正常可靠的运营。并且后台进货管理仅限于经理账户操作其他如领班和营业员无权操作。 订餐信息管理模块:通过订餐模块使得传统餐饮订餐过程变得轻松方便,订餐信息管理模块会在客户订餐的同时核对客户所预定的餐桌的使用情况,避免传统订餐易出现的预定重合问题。并且本模块在客户订餐的同时会给出已预定的菜品价格,帮助客户开心合理地消费。模块中包含的打折服务是本模块的一大特色。它将参考客户以往的消费情况和管理员设定的折扣限度对客户进行打折服务。而不是传统餐饮打折中的没有规律和凭据以询。后台的厨房通过本系统可以清楚地知道客户预定的菜品,这样就节省了大量用于菜品核对的时间
14、,提高了厨房的效率,缩短了厨房上菜的时间。减少了不必要的人力物力财力资源的消耗,减少餐厅的运营成本,使餐厅以更好性价比服务于消费者,消费者可以得到更好的消费体验。 员工信息管理模块:本模块只限于经理使用,经理使用它,可以添加删除用户。用户类型分为领班和营业员。经理删除用户时,假如要删除的是营业员及领班,系统将直接执行命令,假如要删除的是经理账户,系统会先查看剩下的经理账户数量,最少保存一个经理账户,以便下次的登录。1.2.2 经理权限模块划分经理权限划分如图1.2.2所示:经理权限系统登录退出餐桌信息管理菜单信息管理充值结算管理进货信息管理员工信息管理帮助系统维护管理图1.2.2 经理权限模块
15、图经理使用本系统将能使用系统的所有功能。1.2.3 员工权限模块划分员工(领班和营业员)权限划分如图1.2.3所示:员工权限系统登录退出顾客信息管理餐桌信息查询结账管理帮助预定信息管理 图1.2.3 员工(领班和营业员)权限模块图员工使用本系统可以使用除了菜单信息编辑、后台信息管理模块和员工信息管理模块之外的所有功能。1.2.4 系统流程分析系统流程分析如图所示:用户登录员工经理客户添加维护客户信息添加客户的预定信息客户买单钞票账户余额账户充值客户结账收款钞票金额增长财政收支餐桌管理菜品管理员工管理图系统流程分析流程图简介:员工登录系统后为客户添加基本信息,客户可以根据需要在开通的账户里充值(
16、增长用户的收款金额)。客户用完餐后来到服务台买单,用户可以选择使用钞票或者从用户余额里扣除,支付成功会增长客户的已消费金额。若余额局限性,系统将会提醒,那么客户只能使用钞票支付。使用钞票支付的话会增长用户的收款金额。经理登录的话可以使用员工的所有功能,并且可以进行后台管理类似员工管理,商品进货管理,菜式信息管理及其他普通员工都可进行的操作1.3 具体设计1.3.1 数据库数据库的链接为了便于用户使用和维护,我们将与数据库的连接,单独写出来并进行编译,这样系统在新的环境使用时,只需改动一处数据库连接代码,即可立即使用,连接关键代码如下:Public Shared constr As String
17、 = Data Source=*SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True其中Public Shared constr As String = Data Source=WWW-3C702F2C1C8SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True是数据库连接语句Is_SQL_Cmd方法方法Is_SQL_Cmd是判断数据是否存在,当系统登录和添加客户需要验证数据库中是否存在提交的数据时会用到它。其重要代码如下: Public Functio
18、n Is_SQL_Cmd(ByVal cmdstr As String) As Boolean SqlConn = New SqlConnection(constr) SqlConn.Open() SqlCmd = New SqlCommand(cmdstr, SqlConn) Try SqlDr = SqlCmd.ExecuteReader() If SqlDr.HasRows Then Return True Else Return False End If Catch ex As Exception Return False Finally SqlConn.Close() End Try
19、End FunctionSQL_Ada方法方法SQL_Ada是为了查询数据库,并将查询到的结果存放在内存中的datatable表中,餐饮信息管理系统中使用到的组件DataGridView再从datatable表中得到数据。 Public Function SQL_Ada(ByVal adastr As String) As DataTable SqlConn = New SqlConnection(constr) SqlConn.Open() SqlAda = New SqlDataAdapter(adastr, SqlConn) ds = New DataSet Try SqlAda.Fil
20、l(ds) Return ds.Tables(0) Catch ex As Exception Return New DataTable Finally SqlConn.Close() End Try End FunctionExecCmd过程ExecCmd是为系统中的添加、删除、修改服务,系统里的客户、菜单和员工的添加、删除和修改都用到了该过程。 Public Sub ExecCmd(ByVal cmdstr As String) SqlConn = New SqlConnection(constr) SqlConn.Open() SqlCmd = New SqlCommand(cmdstr
21、, SqlConn) SqlCmd.ExecuteNonQuery()End Sub1.3.2系统的登录 用户登陆模块的实现 用户登录界面图本图为经理登录操作,用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,一方面要进入的就是身份验证界面,只有在密码对的的情况下才干进行以后的操作,假如输入的密码不对的,则不能进行登录对系统进行操作。假如用户以职工的身份进入系统,则只能进行顾客信息管理、菜单信息查询、预定信息管理和结算管理,而菜单信息管理、员工管理这些功能将被屏蔽,假如用户以经理身份登录,系统的所有功能都将可以使用。本系统登录类型只限账号密码
22、而定,没有具体的经理、领班和营业员之分。以下是“登录”按钮的代码:void CLogindlg:OnOK() UpdateData(); if(!m_Uname.IsEmpty()|!m_Upasswd.IsEmpty()CString sql=SELECT * FROM Login WHERE Uname=+m_Uname+ and Upasswd=+m_Upasswd+;trym_pRs.CreateInstance(ADODB.Recordset);m_pRs-Open(_variant_t)sql,theApp.m_pCon.GetInterfacePtr(),adOpenDynami
23、c,adLockOptimistic,adCmdText);if(m_pRs-adoEOF)AfxMessageBox(用户名或密码错误!);m_Uname=;m_Upasswd=;i+;UpdateData(false);if(i=3)OnCancel(); elsetheApp.name=m_Uname;theApp.pwd=m_Upasswd;CDialog:OnOK();return; catch(_com_error e)CString temp;temp.Format(连接数据库错误信息:%s,e.ErrorMessage(); AfxMessageBox(temp); retur
24、n; else AfxMessageBox(用户名密码不能为空); 顾客开台模块实现此为餐馆内部人员都能进行操作(经理、领班、营业员)。客户只能选取空闲的餐桌进行就餐。代码如下:void CKaitaidlg:OnButtonOk() UpdateData();if(m_ZhuoHao.IsEmpty()AfxMessageBox(桌号不能为空);elseCString Str=select * from TableUSE where TableUSEID=1;m_pRs=theApp.m_pCon-Execute(_bstr_t)Str,NULL,adCmdText);while(!m_pR
25、s-adoEOF)Value=(char*)(_bstr_t)m_pRs-GetCollect(桌号);if(m_ZhuoHao=Value)AfxMessageBox(有人了);m_ZhuoHao=;UpdateData(false);return;m_pRs-MoveNext();m_pRs=NULL;CString Str1=select * from TableUSE where 桌号=+m_ZhuoHao+;m_pRs=theApp.m_pCon-Execute(_bstr_t)Str1,NULL,adCmdText);if(m_pRs-adoEOF)AfxMessageBox(没有
26、这种餐台);m_ZhuoHao=;UpdateData(false);return;m_pRs=NULL;CDiancaidlg dlg;dlg.m_ZhuoHao = m_ZhuoHao;dlg.DoModal();CDialog:OnOK();菜品选择模块的实现 此部分为餐桌点菜部分代码如下:BOOL CJiacaidlg:OnInitDialog() CDialog:OnInitDialog();SetIcon(LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_diancai),TRUE);CString Sql=selec
27、t * from caishiinfo;m_CaidanList.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_CaidanList.InsertColumn(0,菜名,LVCFMT_LEFT,100,0);m_CaidanList.InsertColumn(1,菜价(元),LVCFMT_LEFT,100,1);m_pRs=theApp.m_pCon-Execute(_bstr_t)Sql,NULL,adC
28、mdText);while(!m_pRs-adoEOF)CString TheValue,TheValue1;TheValue=(char*)(_bstr_t)m_pRs-GetCollect(菜名);TheValue1=(char*)(_bstr_t)m_pRs-GetCollect(菜价);m_CaidanList.InsertItem(0,);m_CaidanList.SetItemText(0,0,TheValue);m_CaidanList.SetItemText(0,1,TheValue1);m_pRs-MoveNext();m_CaidanCheck.SetExtendedSty
29、le(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_CaidanCheck.InsertColumn(0,菜名,LVCFMT_LEFT,100,0);m_CaidanCheck.InsertColumn(1,数量(盘),LVCFMT_LEFT,100,1);Sql=select distinct 桌号 from paybill;m_pRs=theApp.m_pCon-Execute(_bstr_t)Sql,NULL,adCmdText);w
30、hile(m_pRs-adoEOF=0)CString zhuohao=(char*)(_bstr_t)m_pRs-GetCollect(桌号);m_ZhuohaoCombo.AddString(zhuohao);m_pRs-MoveNext();员工注册模块的实现员工注册部分管理仅限于经理权限使用领班及营业员只有经理才有权进行新员工账号密码载入。领班和营业员只能对自己的账号进行密码修改功能。代码如下:void CZhucedlg:OnButtonOk() UpdateData();if(m_Name.IsEmpty()|m_Pwd.IsEmpty()|m_Pwd1.IsEmpty()AfxM
31、essageBox(用户名密码不能为空);return;if(m_Pwd!=m_Pwd1)AfxMessageBox(密码不一致);return;m_pRs=theApp.m_pCon-Execute(_bstr_t)(select * from Login where Uname=+m_Name+),NULL,adCmdText);if(m_pRs-adoEOF)theApp.m_pCon-Execute(_bstr_t)(insert into Login(Uname,Upasswd,power)values(+m_Name+,+m_Pwd+,2),NULL,adCmdText);AfxM
32、essageBox(注册成功);CDialog:OnOK();else AfxMessageBox(用户名已存在);return; 顾客买单界面模块是实现代码如下:BOOL CJiezhangdlg:OnInitDialog()CDialog:OnInitDialog();SetIcon(LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_pay),TRUE);CString TheValue;m_pRs=theApp.m_pCon-Execute(_bstr_t)(select * from TableUSE where Tabl
33、eUSEID=1),NULL,adCmdText);if(m_pRs-GetRecordCount()=0)return true;if(m_pRs-GetRecordCount()=1)TheValue=(char*)(_bstr_t)m_pRs-GetCollect(桌号);m_Combo.AddString(TheValue);return true;while(!m_pRs-adoEOF)TheValue=(char*)(_bstr_t)m_pRs-GetCollect(桌号);m_Combo.AddString(TheValue);m_pRs-MoveNext();m_pRs=NUL
34、L;m_MingXi.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_MingXi.InsertColumn(0,菜名,LVCFMT_LEFT,100,0);m_MingXi.InsertColumn(1,数量,LVCFMT_LEFT,100,1);m_MingXi.InsertColumn(2,消费(元),LVCFMT_LEFT,120,1);res = FALSE;return true;第二章 测试计划
35、2.1 项目背景2.1.1编写目的该测试分析报告文档有助于实现以下目的:“民以食为天”,随着人民生活水平的提高,餐饮业在服务行业中的地位越来越重要。从剧烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目的。了解软件的具体功能,作为软件开发人员开发的重要过程,对软件的功能、性能、接口、数据结构等功能的具体测试结果与预期的规定进行分析,为完善及改善软件的功能提供依据。本软件测试计划说明的读者对象是软件设计人员、测试人员。2.1.2开发背景1)待开发系统软件名称:餐饮管理系统;2)本项目的是对于现今竞争剧烈的餐饮业,便于其实现网络化系统化得设计。3)测试环境:本系统属于餐饮管理模块,实现的是网络管
36、理系统中关于餐饮管理的子功能,通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和VC+的使用能力。2.2项目环境2.2.1硬件环境操作系统用途说明软件&版本预计空间联想5320Win7旗舰版运营软件Microsoft Visual VC+6.0100M联想5320Win7旗舰版运营软件Microsoft SQL Server 2023100M2.2.2软件环境软件名称用途说明Microsoft Visual VC+6.0进行页面布局设计,系统框架设计,功能控件设计。Microsoft SQL Server 2023载入员工餐品数据2.2.3人力资源角色姓名职责开发人员开发软
37、件测试人员陈炀软件测试2.3 测试周期测试阶段开始时间结束时间资源是否里程碑测试用例编写2023-11-172023-11-18测试用例评审2023-11-182023-11-18单元测试2023-11-182023-11-18集成测试2023-11-182023-11-19系统测试2023-11-202023-11-20系统测试报告编写2023-11-202023-11-20第三章 测试报告3.1测试内容测试内容有:用户登陆模块、顾客开台模块以及员工注册模块模块。3.2测试具体设计3.2.1用户登录模块测试:数据流程图:登录表中是否有记录输入用户账号密码显示账号密码错误结束进入餐饮管理页面允
38、许用户登录进入登录界面 s a 账号密码错误 c 账号密码对的 b d e f白盒测试:语句覆盖Error! No bookmark name given.、鉴定覆盖、条件覆盖、鉴定/条件覆盖:测试用例输入途径输入预期输出输出结果s-a-c-b输入错误用户或者错误密码提醒账号密码错误s-a-c-d-e-f输入对的用户和对的密码进入餐饮管理系统 条件组合覆盖:输入途径输入预期输出输出结果s-a-c-b输入错误用户与错误密码提醒账号密码错误s-a-c-b输入对的用户与错误密码提醒账号密码错误s-a-c-d-e-f输入对的用户与对的密码进入餐饮管理页面点覆盖、边覆盖、途径覆盖:程序图: s a b c d e f测试用例输入途径输入预期输出输出结果s-a-c-b输入错误用户与错误密码提醒账号密码不对的s-a-c-d-e-f输入对的用户与对的密码进入餐饮管理系统黑盒测试:等价类划分输入条件有效等价类无效等价类员工账号1-8位空的账号英文字母、数字、汉字组合多于8位组合中具有除英文字母、数字、汉字之外的其他字符密码1-8位空的密码英文字母、数字、汉字组合多于8位组合中具有除英文字母、数字、汉字之外的其他字符登录窗口除了要验证员工的账号密码的有效性,还要验证各个功能之间的对的性,因此,再应用决策表。登录窗口相应的决策表如下所示。登录窗口的决策表选项规则1234567条件C1:用户名对的?