点餐系统(设计模式)
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(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);}
}
- 策略模式下有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;}
}
设计类图如下:
界面如下:
点餐系统(设计模式)相关推荐
- 小郡肝火锅点餐系统——项目文档
小组成员:李靖 李凤莲 课程设计报告 学 号 201610411111 姓 名 李 靖 班 级 ...
- kfc扫描点餐系统java_Java实现KFC点餐系统过程解析
这篇文章主要为大家详细介绍了java实现KFC点餐系统,模拟肯德基快餐店的收银系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信 ...
- 基于android点餐系统需求分析,基于Android的点餐系统的设计及实现
内容简介: 基于Android的点餐系统的设计及实现,毕业论文,共58页,20083字,附开题报告.答辩文稿.源程序. 摘 要 随着无线网络(如4G.3G.GPRS)及无线网络技术与移动操作系统的不断 ...
- KFC宅急送点餐系统开发 MFC动态树形控件使用
本文写于该系统开发完成后的第二年,那时候博主大2,有一门名为<程序设计方法学>的课程,老师上课很幽默风趣,也经常给我们带来一些时事新闻.当然,课余也会给我们布置一些作业.其中"K ...
- Java实现简单的KFC点餐系统(未实现可视化)
一.实现功能预览 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时间段参与店内活动. 5.模拟打印小票的功能(写到文件中). 餐品有: (1)香辣 ...
- (Java)模拟肯德基点餐系统
问题描述 参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4. ...
- 在线点餐系统(SSM毕业设计)
项目大致介绍:本系统是一个适用于毕业设计项目的源码,主要是在线点餐,用户可以在线点餐,而管理员可以设置商家账号,由商家进行在线提供餐品给用户进行点餐. 项目类型:SSM项目(B/S架构)(毕业设计项目 ...
- 用C++模拟KFC点餐系统
一.题目名称:模拟肯德基收银系统 二.题目内容: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2 ...
- 基于Android的点餐系统的设计及实现
本系统的服务器端主要有菜品管理.用户管理.订单管理等几个模块组成:客户端主要有注册登录.开桌查桌.点餐.结算评价等几个功能模块组成.本系统的总功能模块图如图所示. v 本系统服务器端在eclipse环 ...
- 基于nodejs+vue二维码在线点餐系统 python点餐码 java php
本在线点餐系统以express作为框架,nodejs语言,B/S模式以及MySql作为后台运行的数据库.本系统主要包括以下功能模块:用户.菜品信息.点餐码.订单信息等模块,通过这些模块的实现能够基本满 ...
最新文章
- Java(21)_ ^、|、运算符
- 03 - const static extern
- 使用libbpf-bootstrap构建BPF应用程序
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- 服务器解析请求的基本原理
- 《工业元宇宙白皮书 2022年 》(附免费pdf下载地址)
- contos7 方舟私服搭建
- 推荐七个逆天神器APP,让你分分秒秒变优秀
- 京东商城逆势融资B2C成投资热土
- 网络工程师证书难考吗?
- 介绍java 8 的 Period 和 Duration 类
- cygwin使用apt-cyg
- 遗传算法学习笔记01
- 英特尔再遭反垄断围剿 或面临38亿美元罚款
- 微信小程序幻灯片效果实现
- ffmpeg加水印、logo等
- 彻底读懂行为经济学名著《思考,快与慢》
- 谁说小P只是玩伴-巧用PSP及RSS资源提高英语听力
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
- 一段代码实现WordPress彩色标签云