餐厅预定管理的设计与实现.doc_第1页
餐厅预定管理的设计与实现.doc_第2页
餐厅预定管理的设计与实现.doc_第3页
餐厅预定管理的设计与实现.doc_第4页
餐厅预定管理的设计与实现.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学能力拓展训练报告说明书餐厅预定管理的设计与实现1系统描述 1.1问题说明如今智能化的管理已经深入各行各业,我们经常见到或者听到例如网上购物,网上订票等业务。在生活中人们还经常去某个餐厅订餐,而餐厅需要派出专门的业务员来对客户进行服务(介绍菜色,提供可用餐桌以及可用日期供客户选择,办理预定手续,登记预定信息等)如果这个业务可以在网上实现,那么就可以让顾客足不出户,对于餐厅则可以减少人员开销,提高订餐效率,减少经营成本。本系统所实现的就是这样的功能。1.2数据需求分析系统分为两类用户:一种是管理员,一种是顾客。顾客需要看到菜单,而在菜单上需要反映出:菜名,单价,菜色介绍等数据,并且顾客也应该可以看到空余的餐桌号,当选定了某个餐桌号后,应该还可以呈现出这个餐桌可以预定的所有日期。当用户进行了选择并且提交后成一个账单,这个账单包括如下信息,菜色编号,菜名,单价,份数,总份数,总价,预定餐桌号,预定就餐日期,账单信息需要保存,方便后来的发票打印以及餐厅的账目管理。但是考虑到对账单信息来说,人们可能更习惯的是这样得到信息:首先看到一级账单列表,显示账单的总体信息(账单号,餐桌号,消费日期,总价);而后针对具体的某一账单去查找相应的菜色信息。管理员需要维护的数据主要有菜色信息,包括:菜色编号,菜名,单价,点菜频率(让餐厅很方便的看到菜色受顾客的欢迎程度,根据这些信息来进行材料的采购和准备工作,这样方便统计,目标明确,提高经营效率,做到有的放矢),详情(详细介绍本菜色,从用料到特色,以及其它就餐者的评价等)。1.3功能需求分析系统应该具有两大功能:满足顾客的预定;给管理员提供系统的管理接口。针对顾客,提供给用户一个简介明了的界面,给用户列出所有的菜色信息(菜名,单价,介绍),可以填写每个菜色的份数,然后选中该菜色; 显示目前可用的餐桌信息,当选中了某个餐桌后,会再显示出此餐桌的可预定日期,如果顾客对所选择的信息不满意可以取消选择,重新预定,当顾客选择完毕并且确认无误后,可以提交。顾客提交后,应当显示出账单,会打印出顾客已经预定的所有菜色的信息(菜名,单价,份数),并且显示出菜色的总份数、总价格、餐桌号和预定日期。当然,在后台还要实现一些重要的功能:将账单信息写入账单数据库(方便以后顾客用餐当天菜色的准备,用餐后发票的打印、结账,管理餐厅的账目等),把每个被点菜的份数加入相应的点菜频率记录中,更新相应的餐桌信息和对应的日期信息(例如:餐桌0001的2009年8月29日被预定了,那么本餐桌当天的可用记录便为“否” )。针对管理员,赋予管理员一些特殊的权限,这些权限来自系统所设计的功功能接口,而管理员不可以直接通过数据库服务器操作数据库,这样是为了让数据库对管理员透明,从而保证敏感数据(尤其是账单信息)的安全。管理员有一个自己配套的用户名和密码来进行登陆,当登陆成功后,他可以对菜色信息进行增加,删除和更改。因为这些菜色信息是经常变动的(例如:价格会随着季节的不同而改动,菜色会存在增加和撤销)添加:管理员可以添加新的菜色信息,添加成功后会提供选择继续添加和返回首页的选择。删除:管理员可以把某些选中的菜色信息记录给删除了。更改:管理员可以对某些菜色信息进行更改,当选中了要更改的菜色记后,就会进入修改界面,在此界面,会把要修改的菜色的所有信息给列出,管理员根据这些信息,直接在需要更改的记录项中填入替换信息便可。在此功能模块,我认为列出要修改的菜色信息的当前记录是很有必要的,因为首先管理员应该很清楚的看到被修改的菜色的当前所有信息这样他方便进行修改,另外有些信息需要更改,而有些不需要更改,这样他只需要替换需要更改的信息便可。2系统设计2.1 模块设计 根据以上的需求分析本系统可以分为两大模块:顾客预定模块和系统管理模块。顾客预定模块实现需求分析中提供给顾客的订餐接口。系统管理模块则实现需求分析中提供给管理员的系统管理接口,它还可以细分为:菜色增加模块、菜色删除模块、菜色更改模块。2.2数据库设计根据数据需求部分来进行数据库的设计。 2.2.1 表设计 menu(dishid,dishname,unitprice,times,introduce,selected,nowtimes) 说明:用来记录菜单信息。dishid是菜色的编号,dishname是菜色的名字,unitprice是菜色的单价,times记录该菜色历史上一共被选择了多少此,intorduce是菜色的介绍,selected是表明当前客户是否选中了此菜色,nowtimes用来记录如果当前客户选择此菜色的份数。 deskinformation(deskid,today,secondday,thirdday) 说明:用来记录餐桌信息。 deskid表示餐桌号,系统设计的是可以提前两天预定,today用来记录本餐桌今天是否可用,secondday用来记录本餐桌第二天是否可用,thirdday用来记录本餐桌第三天是否可用,如果本餐桌某一天被预定,那么在相应字段处进行标记。 bill(billid,deskid,billdate,totalprice) 说明:用来记录账单信息。 billid表示账单号,deskid记录就餐的餐桌号,billdate记录就餐日期,totalprice记录消费额。 billdetail(billid,dishid,times) 说明:用来记录账单的详细信息(账单的菜色信息),billid 账单号,dishid菜色编号,times本菜色所点份数。 2.2.2 列表说明如下: 其中在是否为主码项y表示主码,y(0)表示几个记录项合起来构成主码 menu 字段名数据类型是否主码说明dishidint(4)y菜色编号dishnamechar(50)n菜名unitpricefloat(8)n单价timesint(4)n被点次数introducechar(200)n介绍selectedbit(1)n当前是否被选nowtimesint(4)n当前被点份数 deskinformation 字段名数据类型主码描述deskidchar(4)y账单编号todaybit(1)n当天被选记录seconddaybit(1)n第二天被选记录thirddaybit(1)n第三天被选记录 bill字段名数据类型主码描述billidint(4)y账单标号deskidchar(4)n餐桌号billdatechar(20)n账单生成日totalpricefloat(8)n消费额 billdetail字段名数据类型主码描述billidchar(4)y(0)账单编号dishidbit(1)y(0)菜色编号timesbit(1)n菜色被点份数 2.2.3 关系图 2.3 输入输出设计 2.3.1 用户逻辑部分数据流图 菜单图2.3.1 顾客数据流图 菜色记录1显示菜单菜色信息3生成账单并更新点菜频率和餐桌信息点菜信息 账单记录账单点菜频率2预定处理餐桌号和就餐日期 餐桌记录餐桌信息说明进入餐厅预定系统后,系统将菜单信息、餐桌信息显示给顾客,用户进行点菜,然后选择自己预定的餐桌号,当选择了餐桌号后,系统输出该餐桌可以预定的日期,顾客选择完毕并且确认无误后可以提交,系统会给出账单信息以及更新相应的数据库。2.3.2 管理员逻辑部分 增加菜色图2.3.2 管理员数据流图增加信息4操作分类删除菜色60删除菜色处理50增加菜色处理修改菜色 菜色记录删除信息70更新菜色处理操作类型增加的菜色信息 菜色记录删除的菜色信息修改的菜色信息菜色记录修改结果说明进入管理逻辑部分后,系统提供给管理员操作选择,管理员选择操作类型,进入操作子程序。如果是增加菜色操作,那么管理员提供新增加的菜色信息,系统将信息添加到数据库。如果是更新菜色操作,管理员选择要更新的菜色记录,而后提供更新数据,系统将信息更新到数据库。如果是删除菜色操作,管理员选择要删除的菜色记录,系统将相应的记录从数据库删除。2.4 用户界面设计 2.4.1 登陆界面 因为本预定系统涉及到两种身份的用户:管理员和顾客,所以就涉及到身份认证功能模块。对管理员而言,有一个用户名和密码,当用户名和密码正确了才能进入管理界面,顾客预定界面不需要用户名和密码可以直接进入 界面如下: 2.4.2 顾客逻辑部分设计 提供给顾客一个友好清晰的界面,再界面左部显示出菜单信息,给顾客选择,再菜单中列出所有的菜色的菜名、单价、介绍等信息并且可以让顾客填写份数,选择菜色,当然要提供“取消”的选项,因为顾客的选择是经常改变的;提供餐桌信息,客户可以选择自己中意的餐桌号,而后,列表显示出这个餐桌可以预定的日期信息,用户选择完毕并且确定后提交,然后在界面的右部对比显示出账单信息,再账单中,列出一下各项:各个菜色编号、菜名、单价、份数;所点的总分数,总价格,预定的餐桌号和就餐日期。这样菜单和账单分列界面的左右部,数据清晰,方便顾客从菜单中对比和确认账单信息是否有误。界面如下:预定信息提交前:仅仅列出了菜单信息和餐桌信息 预订信息提交后:在界面右部显示出了账单信息2.4.3 管理员逻辑部分界面设计 管理员可以对菜色信息进行添加、删除和更改,当然,管理员也应该可以进行餐厅预定的功能。 主界面 添加菜色信息界面 更新菜色信息界面 删除菜色信息界面 删除菜色信息界面就是在主界面进行的,在菜单中选择要删除的菜色,然后单击右下角的“删除”按钮即可。 2.5 处理过程设计 处理过程1 名称:显示菜单输入: 菜色信息 输出: 菜单 说明: 从菜色数据库中读出数据,然后将所有菜色的菜名、单价、介绍给显示出来,并且可以进行份数的选择。应用一个gridview控件,将数据库的查询结果绑定到控件中,菜色的份数以一个文本框来接受,是否选择则以一个checkbox来表示。具体代码如下 前台代码: 后台代码 显示餐桌信息: string sqlstr0; sqlconnection sqlcon = new sqlconnection(server=(local);database=canting;uid=sa;pwd=123456); sqlcommand sqlcom; sqlcon.open(); sqlstr0 = select * from deskinformation where today=1 or secondday=1 or thirdday=1 ; sqlcom = new sqlcommand(sqlstr0, sqlcon); sqldatareader dr = sqlcom.executereader(); while (dr.read() dropdownlist1.items.add(drdeskid.tostring(); sqlcon.close(); 说明:这段代码放在page_load()函数里,因为预定系统页面出现后就要显示餐桌信息,以供选择。处理过程2 名称:预定处理输入: 菜单信息,餐桌信息 输出: 菜色份数、菜色、预定的餐桌号、预定的日期说明: 菜色份数是通过填写textbox实现的,菜色的选择是通过checkbox实现的,这些都再前台完成,在后台完成的有以下处理。 点击“全选”按钮: protected void button2_click(object sender, eventargs e) for (int i = 0; i = gridview1.rows.count - 1; i+) checkbox cbox = (checkbox)gridview1.rowsi.findcontrol(checkbox1); cbox.checked =true; 点击“取消”按钮: protected void button3_click(object sender, eventargs e) for (int i = 0; i = gridview1.rows.count - 1; i+) checkbox cbox = (checkbox)gridview1.rowsi.findcontrol(checkbox1); cbox.checked = false; 选择餐桌号后 : 将餐桌号相应的可用日期在另外一个下拉框中显示出来 protected void dropdownlist1_selectedindexchanged(object sender, eventargs e) string str,sqlstr; str=dropdownlist1.selecteditem.tostring(); /dropdownlist2.items.add(请选择); sqlconnection sqlcon = new sqlconnection(server=(local);database=canting;uid=sa;pwd=123456); sqlcon.open (); sqlstr = select today ,secondday,thirdday from deskinformation where deskid= + str + ; sqlcommand sqlcom = new sqlcommand(sqlstr, sqlcon); sqldatareader dr = sqlcom.executereader(); dr.read(); dropdownlist2.items.clear(); if (convert.toint32 (drtoday) = 1) datetime datetime = datetime.now; dropdownlist2.items.add(datetime.tostring(yyyy - mm - dd); if (convert.toint32 (drsecondday) = 1) datetime datetime = datetime.now; dropdownlist2.items.add(datetime.adddays(1).tostring(yyyy - mm - dd); if (convert.toint32 (drthirdday) = 1) datetime datetime = datetime.now; dropdownlist2.items.add(datetime.adddays(2).tostring(yyyy - mm - dd); 处理过程3名称:生成账单并更新点菜频率和餐桌信息输入: 菜色份数、菜色、预定的餐桌号、预定的日期输出: 账单 说明: 当顾客选择好菜色、餐桌号和日期后,就可以点击“提交”按钮将预定信息提交,这时,后台需要进行一系列处理:更新菜色信息(主要是将被选菜色的点菜次数做相应增加)、更新餐桌信息(被预定的餐桌的被预定日期要变为不可用)、显示账单、计算总价格和总分数、更新账单数据库。 后台代码:略处理过程5 名称:增加菜色处理输入: 新的菜色信息输出: 增加结果 说明: 对于管理员而言,他最关心的是增加的菜色的名称、单价、介绍和被点次数,而像菜色编号dishid不应该让管理员来添加,因为他并不知道当前菜色排到了哪个号码,如果随意填入的话就有可能填入和以前重复的号码,于是dishid采用自动增长,增长步长为1;并且将selected和nowtimes字段均设置为默认值0。 代码: 略处理过程6名称:删除菜色处理输入: 菜单输出: 删除结果说明: 删除操作不仅可以进行单独一个记录的删除应该还可以进行批量的除,所以我就想到用checkbox来提供选择,先在菜单中列出所有的菜色信息,在每一行最后一列是一个checkbox,来提供选择(带有“全选”和“取消”的按钮),当将所有要删除的信息都选择了后就可以点击“删除” 按钮,后台代码执行操作,将菜色数据库中相应项目删除。 代码: 略处理过程7名称:更新菜色处理输入: 更新信息输出: 更新结果说明: 在更新菜色时,为了便于查找,就以列表的形式显示菜单信息,如要更新某个菜色的信息,就选中此菜色信息,选中后,会列出除了此菜色dishid外所有的信息,因为在很多情况下,并不是这个菜色的所有信息都需要更改的,另外,在更改信息前列出以前信息也是很有必要的。至于为什么不列出dishid信息有两方面原因:一、dishid信息并不是管理员或者顾客感性却的信息,他对用户作用不大,一般不许更改;二、dishid在更新数据库时是作为一个查找条件来使用的,因此不能改变。 代码 :略 3 系统测试 3.1 测试方法的描述 测试主要分为两大方面,顾客部分逻辑功能的测试和管理员部分逻辑功能的测试。 在顾客部分,主要的测试方面有以下几点:(1) 进入界面后,菜单信息和餐桌信息是否正确的显示。(2) 确认了预订信息并且提交后,账单是否显示正确(3) 数据库是否更新正确。在管理员部分,主要测试方面又以下几点:(1) 增加菜色功能是否正确。(2) 删除菜色功能是否正确。(3) 更改菜色功能是否正确。 只要按照以上方面进行测试用例的设计并进行设计,便可以知道系统功能是否正确和完善。 3.2 测试用例的描述 3.2.1 顾客部分 (1)首先登陆,观察菜单显示以及餐桌信息是否正确。 (2)随意选择几份菜,并且选择餐桌信息,选择0002号餐桌,然后在日期下拉列表框中选择一个日期,提交。 3.2.2 管理员部分 (1)增加如下一条记录 (满汉全席,2000,0,无) (2)删除刚才新增加的记录和菜名为“武昌鱼”的记录 (3)更改菜名为“佛跳墙”的记录,将单价更改为“1200”,介绍更改为“味道相当不错”。 3.3 测试结果分析 3.3.1 顾客部分 预定前 预定后1 预定后2 结果分析:进入预定系统后,所显示的菜单信息和餐桌信息都是正确的,随着餐桌的选择,预定日期下拉列表框中的数据也会随着改变,它所显示的就是当前餐桌的可用日期。点完菜,并且预定好餐桌和日期后,单击“提交”按钮,得到 预定1 图示的结果,比对左边的预定信息,得到右边的账单信息是正确的。而右边的账单信心反映的就是账单数据库中的信息,说明账单数据库跟新正确,查看menu数据库中的信息,发现其中的times信息也更新正确。在浏览器中再次输入网址,重新进入预定系统,展开预定餐桌下拉列表框,结果如 预定2 图示,发现0002号餐桌的信息已经被移除。因为在预定0002号餐桌的时候它只有唯一的一天2009年8月31日没被预定,预定之后,这个餐桌已经非空了。餐桌信息数据库也更新正确。3.3.2管理员部分 3.3.2.1 增加菜色 菜色信息增加前 菜色信息增加后 结果分析:对比添加前和添加后的图示结果,得到所添加的信息成功的在菜单中显示了出来。而菜单中的数据就是来自menu数据库,所以,所添加的信息成功的写入了数据库,添加成功。3.3.2.2 删除菜色信息 删除前 删除后 结果分析:观察删除后的菜单,发现刚才所选定的两个菜色记录都被删除了,因为菜单记录是从menu数据库直接读出来的,所以说明,选择删除后,数据库更新正确,实现了批量删除的功能。3.3.2.3 更改菜色信息 更改前 更改后 结果分析:进入删除菜色信息的界面后,可以看到系统将所有的菜色信息给列了出来,在每个菜色后面有一个“选择”连接,点击了“选择”后,被选择行就高亮显示,并且在上面的文本框中将此菜色信息给显示出来,只用填写需要更改的字段即可,对比 更改后 图示,可以看到所更改的信息写入了菜色数据库中。更改成功。4 设计的特点、不足、收获与体会 4.1 设计的特点和不足 本预定系统分为两类用户:管理员和顾客,功能模块也就主要有两个。管理员登陆管理模块需要用户名和密码,而预定模块可以直接登陆。在预定模块,顾客可以进行点菜、餐桌预定和日期预定。餐桌和日期信息都是以下拉列表框显示的,清晰便于选择,当顾客选定了餐桌后,此餐桌可用的日期就会在预定日期下拉列表框中显示。用户提交后,账单信息会在界面的右部显示出来,方便和左部的菜单信息进行对比。而管理员模块,可以进行菜色信息的添加、删除和更改,并且在细节上做了一些尝试,例如:每个分页面都有“返回主页”的连接,对顾客或者管理员不感兴趣的信息进行屏蔽(例如菜色编号),而在“更改菜色”部分,先把总菜单给显示出来,以供管理员选择需要编辑的记录,如果某条记录被选择了,那么这条记录会高亮显示,并且它的信息会显示在上部的编辑窗口中,管理员只需更改需要更新的信息即可。 但是也有一些不足之处。主要有一下几点:一、可以在菜单界面给每道菜做个连接,链接到这道菜的具体介绍,包括用料、特色、图片、顾客评价等

温馨提示

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

评论

0/150

提交评论