同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的以下功能:


正常餐品结算和找零。
基本套餐结算和找零。
使用优惠劵购买餐品结算和找零。
可在一定时间段参与店内活动(自行设计或参考官网信息)。
模拟打印小票的功能(写到文件中)。


用到的设计模式有抽象工厂模式,工厂模式,策略模式等。抽象工厂模式用来产生套餐,策略模式用来实现不同活动下实现不同价格的算法。
1. 抽象工场模式下包括一个食物基类baseFood,以及一个食物接口IFood,还有四种具体食物抽象类。
食物基类包含食物的种类,价格以及数量,还有总价函数和计算价格函数:

//基础食物类
public  class **baseFood** implements MemberStrategy{public String kind;//食物种类public int num;//食物数量public float price;//价格public float calcPrice(float foodPrice) {return this.num*this.price;}//总价(原价)public float totalPrice() {return this.num*this.price;}}

IFood接口:

public interface IFood {/*打印输出食物信息*/
void printMessage();
}

汉堡抽象类:

/** 汉堡基类*/
public abstract class Hamburg extends baseFood implements IFood{//方法重构public void printMessage() {System.out.println("--"+this.kind+"汉堡\t 单价:"+this.price+"数量"+this.num/*+"合计"+this.totalPrice()*/);}
}

鸡翅抽象类:

public abstract class ChickenWings extends baseFood implements IFood{public void printMessage() {System.out.println("--"+this.kind+"鸡翅\t 单价:"+this.price+"数量"+this.num/*+"合计"+this.totalPrice()*/);}
}

薯条抽象类:

public abstract class FrenchFires extends baseFood implements IFood{public void printMessage() {System.out.println("--"+this.kind+"薯条\t 单价:"+this.price+"数量"+this.num/*"合计"+this.totalPrice()*/);}
}

饮品抽象类:

public abstract class Drink extends baseFood implements IFood{public void printMessage() {System.out.println("--"+this.kind+"饮料\t 单价:"+this.price+"数量"+this.num/*+"合计"+this.totalPrice()*/);}
}

抽象工厂类:

public interface IKFCFactory {// 生产汉堡public Hamburg createHamburg(int num1);// 生产薯条public FrenchFires createFrenchFries(int num2);// 生产鸡翅public ChickenWings createChickenWings(int num3);// 生产饮料public Drink createBeverage(int num4);
}

工厂实现类:

public  class KfcFactory implements IKFCFactory {//生产汉堡public Hamburg createHamburg(int num) {// TODO Auto-generated method stubreturn new ChinaHanburm(num);}//生产薯条public FrenchFires createFrenchFries(int num) {// TODO Auto-generated method stubreturn new ChinaFrenchFries(num);}//生产鸡翅public ChickenWings createChickenWings(int num) {// TODO Auto-generated method stubreturn new ChinaChickenWings(num);}@Overridepublic Drink createBeverage(int num) {// TODO Auto-generated method stubreturn new IDrink(num);}
}
  1. 策略模式下有MemberStrategy接口,接口的实现类Activity,baseStrategy和Price类。
    MemberStrategy接口:
/*策略模式,分出四种计算价格的算法* 1.有优惠券,无活动* 2.有活动,有优惠券* 3.无活动,无优惠劵* 4.有活动+有优惠券*/
public interface MemberStrategy {/*** 计算餐品的价格* @param booksPrice    餐品的原价* @return    计算出打折后的价格*/public float calcPrice(float foodPrice);

Price类:

//两个实例private MemberStrategy strategy;@SuppressWarnings("unused")private MemberStrategy strategy1;/*** 构造函数,传入一个具体的策略对象* @param strategy    具体的策略对象*/public Price(MemberStrategy strategy){this.strategy = strategy;this.strategy1=strategy;    }/*** 计算餐品的价格* @param foodPrice    餐品的原价* @return    计算出打折后的价格*/public float quote (float foodPrice ){return this.strategy.calcPrice(foodPrice);}
}

baseStrategy类:

/** 优惠券*/
public class baseStrategy  implements MemberStrategy{public float calcPrice(float foodPrice) {//重写计算价格方法return foodPrice-10;//10元的优惠券}
}

Activity类:

//活动
/** 店家有活动时所有商品打85折*/
public class Activity implements MemberStrategy{public float calcPrice(float foodPrice) {//重写计算价格方法return foodPrice*0.85f;}
}

设计类图如下:

界面如下:

点餐系统(设计模式)相关推荐

  1. 小郡肝火锅点餐系统——项目文档

    小组成员:李靖 李凤莲 课程设计报告 学        号           201610411111 姓        名           李  靖 班        级           ...

  2. kfc扫描点餐系统java_Java实现KFC点餐系统过程解析

    这篇文章主要为大家详细介绍了java实现KFC点餐系统,模拟肯德基快餐店的收银系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信 ...

  3. 基于android点餐系统需求分析,基于Android的点餐系统的设计及实现

    内容简介: 基于Android的点餐系统的设计及实现,毕业论文,共58页,20083字,附开题报告.答辩文稿.源程序. 摘 要 随着无线网络(如4G.3G.GPRS)及无线网络技术与移动操作系统的不断 ...

  4. KFC宅急送点餐系统开发 MFC动态树形控件使用

    本文写于该系统开发完成后的第二年,那时候博主大2,有一门名为<程序设计方法学>的课程,老师上课很幽默风趣,也经常给我们带来一些时事新闻.当然,课余也会给我们布置一些作业.其中"K ...

  5. Java实现简单的KFC点餐系统(未实现可视化)

    一.实现功能预览 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时间段参与店内活动. 5.模拟打印小票的功能(写到文件中). 餐品有: (1)香辣 ...

  6. (Java)模拟肯德基点餐系统

    问题描述 参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4. ...

  7. 在线点餐系统(SSM毕业设计)

    项目大致介绍:本系统是一个适用于毕业设计项目的源码,主要是在线点餐,用户可以在线点餐,而管理员可以设置商家账号,由商家进行在线提供餐品给用户进行点餐. 项目类型:SSM项目(B/S架构)(毕业设计项目 ...

  8. 用C++模拟KFC点餐系统

    一.题目名称:模拟肯德基收银系统 二.题目内容: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2 ...

  9. 基于Android的点餐系统的设计及实现

    本系统的服务器端主要有菜品管理.用户管理.订单管理等几个模块组成:客户端主要有注册登录.开桌查桌.点餐.结算评价等几个功能模块组成.本系统的总功能模块图如图所示. v 本系统服务器端在eclipse环 ...

  10. 基于nodejs+vue二维码在线点餐系统 python点餐码 java php

    本在线点餐系统以express作为框架,nodejs语言,B/S模式以及MySql作为后台运行的数据库.本系统主要包括以下功能模块:用户.菜品信息.点餐码.订单信息等模块,通过这些模块的实现能够基本满 ...

最新文章

  1. Java(21)_ ^、|、运算符
  2. 03 - const static extern
  3. 使用libbpf-bootstrap构建BPF应用程序
  4. JAVA编写的一个简单的Socket实现的HTTP响应服务器
  5. 服务器解析请求的基本原理
  6. 《工业元宇宙白皮书 2022年 》(附免费pdf下载地址)
  7. contos7 方舟私服搭建
  8. 推荐七个逆天神器APP,让你分分秒秒变优秀
  9. 京东商城逆势融资B2C成投资热土
  10. 网络工程师证书难考吗?
  11. 介绍java 8 的 Period 和 Duration 类
  12. cygwin使用apt-cyg
  13. 遗传算法学习笔记01
  14. 英特尔再遭反垄断围剿 或面临38亿美元罚款
  15. 微信小程序幻灯片效果实现
  16. ffmpeg加水印、logo等
  17. 彻底读懂行为经济学名著《思考,快与慢》
  18. 谁说小P只是玩伴-巧用PSP及RSS资源提高英语听力
  19. SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
  20. 一段代码实现WordPress彩色标签云

热门文章

  1. 基于Cookie-Editor与curl实现跨设备的文件下载
  2. 继续教育计算机考试试题,第四批继续教育计算机考试试题.doc
  3. 遥感影像识别-成像合成
  4. java中获取日期 日期和字符串互转
  5. uniapp苹果打包(需使用苹果电脑)
  6. 《刷新》精髓:微软第三任CEO萨提亚•纳德拉重新发现微软灵魂的传奇历程,给了我们普通人哪些启示?
  7. java8新特性之lambda表达式--超级详细版本
  8. Android scheme链接打开本地应用
  9. 完犊子了,微软已禁止俄罗斯人下载 Windows
  10. 【量子力学】国际象棋与量子国际象棋Quantum Chess游戏规则