程序实现系统的以下功能:

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快餐店的收银系统相关推荐

  1. 用java实现KFC收银:请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统

    一.题目要求: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: ...

  2. 模拟肯德基快餐店的收银系统

    题目要求 模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品 ...

  3. Java模拟肯德基快餐店的收银系统

    1.题目名称 模拟肯德基快餐店的收银系统 要求:结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时 ...

  4. 肯德基快餐店的收银系统

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

  5. 使用java来简单模拟肯德基快餐店的收银系统实现一些功能

    一.题目要求 请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算 ...

  6. python点餐系统早餐_python+pyqt5实现KFC点餐收银系统

    本文实例为大家分享了python实现KFC点餐收银系统的具体代码,供大家参考,具体内容如下 这个kfc收银系统我实现了的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购 ...

  7. 简单的javaweb版kfc点餐收银系统

    简单的javaweb版kfc点餐收银系统,包含单例模式与工厂模式详解 说明:本次作业实现为简单的网页版,由 两人组队 共同完成. 基本需求: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使 ...

  8. java实现肯德基快餐店的收银系统

    注:本文仅用于程序设计作业记录,如有错误欢迎指正,代码太多了,不想往里面写了,还要排版 其实我只是想要本文一个博客链接而已 题目内容 模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的 ...

  9. 基于MFC的肯德基快餐店的收银系统

    基于MFC的肯德基点餐收银系统 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现 ...

最新文章

  1. matlab函数 size()函数和waterfal()l函数,三维图形,矩阵
  2. 重构:一项常常被忽略的基本功
  3. EigenUbuntu下的配置
  4. CTFshow php特性 web141
  5. 中国版“Twilio”何在?
  6. hamcrest详细介绍
  7. C++ STL 三大组件(容器|算法|迭代器) 初步使用01
  8. 使用delphi 开发多层应用(十三)使用Basic4android 直接访问kbmMW server
  9. JavaScript从入门到放弃 -(二)继承
  10. EMS1.0.0项目的敏捷实践
  11. 真就卖爆了!两分钟破万台:1999元实在无敌
  12. 2019年知乎已发布两款App:短视频“即影”和男生种草“CHAO”
  13. 微软中文论坛2010新年Party手记
  14. ArcGIS Bathymetry 管理水深数据的方法
  15. html基础:基本标签
  16. 框架基础---动态代理
  17. 2021-09-24
  18. java一般用来开发什么_Java能做什么
  19. Adobe Photoshop CS5 12.0 Extend 绿色免安装版
  20. 【本科生科研入门】英文科技论文写作-绘图篇

热门文章

  1. Android AccessibilityService无障碍服创建 与 权限判断
  2. centos根分区扩容,扩展磁盘
  3. WIN10桌面图标开机后一种变乱问题解决的一种方法
  4. 微信公众号开发JSSDK上传图片(多图上传)
  5. NC65 查询模板参照字段启用参照是否包含下级
  6. (转)Deep Learning深度学习相关入门文章汇摘
  7. 论文笔记-Digging Into Self-Supervised Monocular Depth Estimation
  8. 百度地图大数据可视化(柱状图)
  9. 复合型自适应步长的Gauss型求积(附代码)
  10. 绝地求生要java吗_《和平精英》还是《绝地求生》的手游吗?光子早就和我们说了答案...