设计模式课程大作业之订餐系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计模式文档

-订餐系统

姓名:

班级: 1113班

学号: 2011

小组:第11组

大连理工大学

Dalian University of Technology

一需求陈述

饭店点餐系统,包括三个部分,顾客点餐单元,厨师管理单元,管理员统计单元,服务员查看单元。主要面向用户为顾客,厨师,管理员。有助于节省人力,方便管理。

首先是顾客登录,这里分为普通顾客和VIP顾客,结账时普通顾客付全款而VIP顾客根据餐厅规定来进行相应的折扣。

顾客点餐主要放置在餐桌上,厨师管理模块在厨房,管理员统计模块在经理办公室,服务员查看模块摆放在大厅,所有模块访问同一台系统。

在顾客餐桌点餐模块,此模块供顾客使用,进入餐厅的用户选择某一空闲餐桌,餐桌上有点菜桌面,提供客户挑选菜肴,进入详细的菜品介绍模块后,可以在此菜品上根据个人喜好添加佐料,如加辣子、醋等,还可以添加不同的份数,将菜品加入菜单后可以编辑订单,详细地订单页面显示列用户当前所有的订餐和应付的钱数。当用户确定订单后可以呼叫服务员,服务员输入自己的编号,收银,确认并打印订单。

在厨师管理模块,厨师可以查看订菜列表,按照列表做菜,对于已做好的菜的状态进行修改为已制作。厨师还可以通过此模块向系统中添加新的菜色。

服务员查看已做好的菜及对应的桌号,送餐,并且将菜的状态置为已提供。

管理员模块,管理员可以统计总收入,可以统计每种菜的销量,可以估计用户的口味喜好。

与此同时我们的菜单还可以给出推荐搭配,优惠活动等。

同时订餐系统还要满足一定的性能需求,首先系统的反应速度应较快,系统界面应美观大方,风格统一,突出特色,功能设计应体现人性化思想,方便用户操作。顾客注册后需要登录系统需输入口令才能进行订餐服务。

对于管理员,在其查询订单的时候,可针对各种组合条件进行查询,而且查询效率要求高,能够及时相应查询请求。

另外,系统还应当满足信息的完整性以及系统的可扩展性。

二概要设计

由于项目是对订餐系统的模拟主要体现设计模式的思想,所以设计时并没有用到数据库,也没有相应的数据库设计。

首先是用例图,如下:

从图中可以知道顾客主要事件是编辑订单,确认订单和呼叫服务员;服务员主要负责收银,响应呼叫等;管理员在餐厅中制定活动,VIP折扣,推出优惠活动。

类图如下:

状态图如下:

显示餐厅主页显示菜单点击菜单列表

顾客选菜显示顾客订单返回

收银确认并打印订单

显示某种菜详细信

厨师查看界面刷新显示未完成菜列表(按提交时间

排序)

厨师修改菜的状态

添加新菜界面

服务员登陆状态

服务员更改订单状态为完成

更新系统销售数额

将新订单中的菜添加入未完成菜列表

将订单中菜置为已完成

返回

服务员退出

顾客

服务

系统

更新销售量

三个人任务描述

本次系统主要实现了五中设计模式:

food文件夹完成了装饰着模式;

ConnClient.Handle类完成了代理模式;

OrderList.DishLish类完成了单例模式;

CLient中的VIPUser和NorUser完成了访问者模式;

只要是有虚类,继承他的类基本都算是工厂模式比如说Client.TheClient;

在设计阶段我主要负责类图的设计(见概要设计),使用Visio 2013工具画图;代码实现阶段主要负责界面设计及实现和装饰着模式,完成了三个界面和food 类的编写;

登录界面和菜单详情界面如下:

菜单列表界面:

由于没有使用数据库,菜单列表和详细地数据读取都在界面代码中进行了实现,使用了C#中的Dictonary类进行列表项的添加,菜单类和菜品详情类如下,Dictionary dic=new Dictionary();

Dictionary content = new Dictionary();

直接在里面添加成员如content.Add("香辣鸡", "我国特产,风味十足.........");

当程序运行时可以直接读取。

Food类装饰者模式实现体现在对一种食物用户可以选择调味品,如加酱油,加辣子等,具体食物都继承自抽象的食物类体现了工厂模式,食物对象对象接受所有来自客户端的请求,它把这些请求转发给真实的对象。食物类如下:

public abstract class Dish

{

public abstract void Operation();

}

所有食物都继承自Dish这个类如Material ,这里不再列举其他,

public class Material : Dish {

private string name;

public Material(string name){

= name;}

public override void Operation(){

DishName.SetNull();

DishName.MessStr = name;}

}

相同的调味品继承自Sauce这个类,而醋,辣子又继承这个调味品类同时完成对食物类的装饰。

public abstract class Sauce : Dish{

protected Dish dish;

public void setDish(Dish dish)

{

this.dish = dish;

}

public override void Operation()

{

if (dish != null)

{

dish.Operation();

}

}

相关文档
最新文档