KFC快餐店的收银系统
程序实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4..模拟打印小票的功能。
设计模式主要采用了抽象工厂模式和建造者模式。
设计抽象基类AbstractFood,供生成食物。
public abstract class AbstractFood {
protected String foodname;
protected int num;
protected float price;
public Float money() {
return num * price;
}
}
设计饮料类、汉堡类、薯条类,供顾客选择。
public abstract class Drink extends AbstractFood implements FoodMessage {
public String getMessage() {
return (this.foodname + " " + this.num + " " + this.price + " ");
}
}
public class AppleJuice extends Drink {
protected double money;
public AppleJuice(){
this.money=6.00f;
}
public AppleJuice(int num) {
this.foodname = "鲜榨苹果汁";
this.num = num;
this.price = 6.00f;
}
public double getMoney(double money){
return money;
}
}
其余两类类似食物类。
食物是工厂的成员,在食物工厂中创建。
//创建具体的KFC工厂,生成具体事物
public class FoodFatory implements Fctory {
@Override
public Drink createAppleJuice(int num) {
// TODO Auto-generated method stub
return new AppleJuice(num);
}
@Override
public BeefHamburger createBeefHamburger(int num) {
// TODO Auto-generated method stub
return new BeefHamburger(num);
}
@Override
public PotatoChips createPotatoChips(int num) {
// TODO Auto-generated method stub
return new PotatoChips(num);
}
}
建造者模式将KfcBuilder设为Director的成员。
public class Director {
//套餐1的应用
private static KfcBuilder firstSetmeal = new FirstSetmeal();
//套餐2的应用
private static KfcBuilder secondSetmeal = new SecondSetmeal();
//生产套餐一
public static Setmeal getFirstSetmeal() {
return firstSetmeal.getSetmeal();
}
//生产套餐二
public static Setmeal getSecondSetmeal() {
return secondSetmeal.getSetmeal();
}
}
public abstract class KfcBuilder {
protected final Setmeal kfcpackage = new Setmeal();
//套餐的种类
public void setKind(String kind) {
this.kfcpackage.setKind(kind);
}
//套餐的价格
public void setPrice(double price) {
this.kfcpackage.setPrice(price);
}
//套餐的数量
public void setNum(int num) {
this.kfcpackage.setNum(num);
}
//构造一个完整的套餐
public abstract Setmeal getSetmeal();
}
public class FirstSetmeal extends KfcBuilder {
public Setmeal getSetmeal() {
super.kfcpackage.setKind("深海鳕鱼汉堡、香辣鸡翅、薯条、橙汁、原味冰欺凌");
super.kfcpackage.setNum(1);
super.kfcpackage.setPrice(99.0);
return super.kfcpackage;
}
}
Discount类实现优惠券的设置
import java.util.Scanner;
public class Discount {
protected double discount;
//Scanner in = new Scanner(System.in);
public double getDiscount(){
System.out.println("活动一:1,活动二 :2,活动三:3");
Scanner in = new Scanner(System.in);
int num = in.nextInt();
switch(num){
case 1:
discount=0.9;
return discount;
case 2:
discount=0.8;
return discount;
case 3:
discount=0.75;
return discount;
}
return discount;
}
}
主函数在顾客类中,主要实现三种方式金额的结算和找零。
import java.util.Scanner;
public class Costom {
private FoodFatory kfcFactory;
public Costom(FoodFatory kfcFactory) {
this.kfcFactory = kfcFactory;
}
public Costom(){}
public void getBill(){
System.out.println("订购套餐1,参与优惠活动2,以上都没有3");
Scanner bill = new Scanner(System.in);
int number = bill.nextInt();
switch(number){
case 1:
System.out.println("本店提供的套餐如下:");
Setmeal firstSetmeal = Director.getFirstSetmeal();
System.out.println("套餐一:");
System.out.println(firstSetmeal.getKind());
System.out.println("价格:"+firstSetmeal.getPrice());
//生产套餐二
Setmeal secondSetmeal = Director.getSecondSetmeal();
System.out.println("套餐二:");
System.out.println(secondSetmeal.getKind());
System.out.println("价格:"+secondSetmeal.getPrice());
Scanner scan = new Scanner(System.in);
System.out.println("请选择是否订购套餐,是请输入9,否则输入0");
int num = scan.nextInt();
if(num == 9) {
System.out.println("请选择你选则的套餐:1:套餐一 2:套餐二");
int number1 = scan.nextInt();
if( number == 1) {
System.out.println("------------------账单------------------");
System.out.println(firstSetmeal.getKind());
System.out.println("价格:"+firstSetmeal.getPrice()+"\t 数量:"+firstSetmeal.getNum());
//System.out.println("累计消费:"+(salesclerk.orderAppleJuice(1)+salesclerk.orderBeefHamburger(1))+"元");
System.out.println("----------------------------------------");
System.out.println("用户支付金额:");
int money = scan.nextInt();
System.out.println("找零钱"+(money-firstSetmeal.getPrice())+"元");
}
else{
System.out.println("------------------账单------------------");
System.out.println(secondSetmeal.getKind());
System.out.println("价格:"+secondSetmeal.getPrice()+"\t 数量:"+secondSetmeal.getNum());
System.out.println("累计消费:"+(secondSetmeal.getPrice())+"元");
System.out.println("----------------------------------------");
System.out.println("用户支付金额:");
int money = scan.nextInt();
System.out.println("找零钱"+(money-(secondSetmeal.getPrice()))+"元");
}
}
break;
case 2:
System.out.println("请选择是否参与优惠活动:是输入8,否输入0");
Scanner numer = new Scanner(System.in);
int s = numer.nextInt();
if(s==8){
System.out.println("------------------账单------------------");
Discount dis = new Discount();
dis.getDiscount();
Fctory factory = new FoodFatory();
Salesclerk salesclerk = new Salesclerk(factory);
salesclerk.orderPotatoChips(3);
salesclerk.orderAppleJuice(2);
salesclerk.orderBeefHamburger(1);
System.out.println(salesclerk.getMessage());
System.out.println("累计消费:"+((salesclerk.orderPotatoChips(3)+salesclerk.orderAppleJuice(2)+salesclerk.orderPotatoChips(3)))*dis.discount+"元");
System.out.println("----------------------------------------");
System.out.println("用户支付金额:");
int money = numer.nextInt();
System.out.println("找零钱"+(int)(money-((salesclerk.orderPotatoChips(3)+salesclerk.orderAppleJuice(2)+salesclerk.orderPotatoChips(3)))*dis.discount)+"元");
}
break;
case 3:
System.out.println("------------------账单------------------");
Fctory factory = new FoodFatory();
Salesclerk salesclerk = new Salesclerk(factory);
salesclerk.orderPotatoChips(3);
System.out.println(salesclerk.getMessage());
System.out.println("累计消费:"+(salesclerk.orderPotatoChips(3))+"元");
System.out.println("----------------------------------------");
System.out.println("用户支付金额:");
Scanner in =new Scanner(System.in);
int money = in.nextInt();
System.out.println("找零钱"+(money-(salesclerk.orderPotatoChips(3)))+"元");
}
}
public static void main(String[] args) {
Costom costom = new Costom();
costom.getBill();
}
}
KFC快餐店的收银系统相关推荐
- 用java实现KFC收银:请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统
一.题目要求: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: ...
- 模拟肯德基快餐店的收银系统
题目要求 模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品 ...
- Java模拟肯德基快餐店的收银系统
1.题目名称 模拟肯德基快餐店的收银系统 要求:结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时 ...
- 肯德基快餐店的收银系统
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结 ...
- 使用java来简单模拟肯德基快餐店的收银系统实现一些功能
一.题目要求 请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算 ...
- python点餐系统早餐_python+pyqt5实现KFC点餐收银系统
本文实例为大家分享了python实现KFC点餐收银系统的具体代码,供大家参考,具体内容如下 这个kfc收银系统我实现了的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购 ...
- 简单的javaweb版kfc点餐收银系统
简单的javaweb版kfc点餐收银系统,包含单例模式与工厂模式详解 说明:本次作业实现为简单的网页版,由 两人组队 共同完成. 基本需求: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使 ...
- java实现肯德基快餐店的收银系统
注:本文仅用于程序设计作业记录,如有错误欢迎指正,代码太多了,不想往里面写了,还要排版 其实我只是想要本文一个博客链接而已 题目内容 模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的 ...
- 基于MFC的肯德基快餐店的收银系统
基于MFC的肯德基点餐收银系统 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现 ...
最新文章
- matlab函数 size()函数和waterfal()l函数,三维图形,矩阵
- 重构:一项常常被忽略的基本功
- EigenUbuntu下的配置
- CTFshow php特性 web141
- 中国版“Twilio”何在?
- hamcrest详细介绍
- C++ STL 三大组件(容器|算法|迭代器) 初步使用01
- 使用delphi 开发多层应用(十三)使用Basic4android 直接访问kbmMW server
- JavaScript从入门到放弃 -(二)继承
- EMS1.0.0项目的敏捷实践
- 真就卖爆了!两分钟破万台:1999元实在无敌
- 2019年知乎已发布两款App:短视频“即影”和男生种草“CHAO”
- 微软中文论坛2010新年Party手记
- ArcGIS Bathymetry 管理水深数据的方法
- html基础:基本标签
- 框架基础---动态代理
- 2021-09-24
- java一般用来开发什么_Java能做什么
- Adobe Photoshop CS5 12.0 Extend 绿色免安装版
- 【本科生科研入门】英文科技论文写作-绘图篇
热门文章
- Android AccessibilityService无障碍服创建 与 权限判断
- centos根分区扩容,扩展磁盘
- WIN10桌面图标开机后一种变乱问题解决的一种方法
- 微信公众号开发JSSDK上传图片(多图上传)
- NC65 查询模板参照字段启用参照是否包含下级
- (转)Deep Learning深度学习相关入门文章汇摘
- 论文笔记-Digging Into Self-Supervised Monocular Depth Estimation
- 百度地图大数据可视化(柱状图)
- 复合型自适应步长的Gauss型求积(附代码)
- 绝地求生要java吗_《和平精英》还是《绝地求生》的手游吗?光子早就和我们说了答案...