模拟KFC收银系统

KFC收银系统
一.实验内容
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
程序设计方法学第四章作业
二.算法设计思路
利用java模拟肯德基快餐店的收银系统,用到的设计模式有抽象工厂模式,工厂模式,策略模式等。抽象工厂模式用来产生套餐,策略模式用来实现不同活动下实现不同价格的算法。
抽象工厂模式下包括一个食物基类baseFood,以及一个食物接口IFood,还有四种具体食物抽象类。食物基类包含食物的种类,价格以及数量,还有总价函数和计算价格函数。其中有IFood食物接口,其中有抽象方法printMessage()用来打印食物的信息,具体实物类有Humburg、ChingWings、FrenchFires和Drink。其中还有IKFCFactory抽象工厂和Kfcfactory工厂实现类,抽象工厂中包含生产汉堡、鸡翅、薯条和饮料的函数。策略模式下有MemberStrategy接口,接口的实现类Activity,baseStrategy和Price类。
三.类图设计
1.简单工厂模式
在这里插入图片描述
2.策略模式
在这里插入图片描述
四.调试及运行结果
1.自主点餐
在这里插入图片描述

2.付款方式
在这里插入图片描述
3.选择套餐
在这里插入图片描述
五.经验归纳
这次设计KFC收银系统,使用了抽象工厂模式、工厂模式和策略模式进行程序设计,在设计过程中需要同时使用三种设计模式,在这个方面费了很大功夫。通过小组成员的合作,整合了三种设计模式,并且对这三种设计模式有了更深的理解。
1.1.抽象工厂模式优点:
(1)隔离了具体类的生成,使得客户端并不需要知道什么被创建
(2)当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象
(3)增加新的产品族很方便,无须修改已有系统,符合开闭原则
1.2.抽象工厂模式缺点:
增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了开闭原则
2.1.工厂方法模式优点:
(1)工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节
(2)能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部
(3)在系统中加入新产品时,完全符合开闭原则
2.2.工厂方法模式缺点:
(1)系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销
(2)增加了系统的抽象性和理解难度
3.1.策略模式优点:
(1)提供了对开闭原则的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为
(2)提供了管理相关的算法族的办法
(3)提供了一种可以替换继承关系的办法
(4)可以避免多重条件选择语句
(5)提供了一种算法的复用机制,不同的环境类可以方便地复用策略类
3.2.策略模式缺点:
(1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类
(2)将造成系统产生很多具体策略类
(3)无法同时在客户端使用多个策略类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值