KFC收银系统简单工厂模式

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。

package kfc;

public class KFC {
    private String name;
    private int price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}


package kfc;

public class Factory {

    private Factory(){}
    public static KFC creat(String name){
        if (name.equals("汉堡包")) {
            return new Humberger();
        }else if(name.equals("可乐")) {
            return new Cola();
        }else if(name.equals("套餐1")) {
            return new TC1();
        }else if(name.equals("套餐2")){
            return new TC2();
        }else{
            return null;
        }
    }
}

package kfc;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

import javax.print.attribute.standard.PrinterLocation;


public class DOS {
    private ArrayList<KFC> aa = new ArrayList<>();
    private int yhq = 0;
    public DOS() throws IOException{
        zhuJieMain();
    }
    public void zhuJieMain() throws IOException{
        System.out.println("欢迎来到KFC");
        System.out.println("1.点餐--------2.领取优惠券-------3.结账");
        show();
    }
    public void jieZhang() throws IOException{
        Scanner sc = new Scanner(System.in);
        Collect c = new Collect();
        c.setKfc(aa);
        c.setYhq(yhq);
        c.print();
        int x1 = sc.nextInt();
        c.setMoney(x1);
        c.printXiaopiao();
    }
    public void show() throws IOException{
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        if(x==1){
            diancan();
        }
        else if(x==2){
            youhuiquan();
        }else if(x==3){
            jieZhang();
        }
        else{
            System.out.println("输入错误");
        }
    }
    public void diancan() throws IOException{
        System.out.println("本店推出以下产品:1.汉堡:10/个");
        System.out.println("本店推出以下产品:2.可乐:8/杯");
        System.out.println("---------------3.套餐1:可乐+鸡翅+薯条:20/份");
        System.out.println("---------------4.套餐2:汉堡+可乐+薯条:30/份");
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        xuanze(x);
    }

    private void xuanze(int x) throws IOException {
        KFC a = null;
        Scanner sc = new Scanner(System.in);
        while (true) {

            if (x == 1) {
                a = Factory.creat("汉堡包");
            } else if (x == 2) {
                a = Factory.creat("可乐");
            }else if (x == 3) {
                a = Factory.creat("套餐1");
            } else if (x == 4) {
                a = Factory.creat("套餐2");
            } else {
                System.out.println("没有该套餐");
            }
            aa.add(a);
            System.out.println("继续y,或返回上一页x");
            String s = sc.next();
            while(true){
            if (s.equals("x")){
                zhuJieMain();
                break;
            }else if(s.equals("y")){
                diancan();
                break;
            }else {
            	System.out.println("请重新输入");
            	break;
            }
            }
        }
    }
    public void youhuiquan() throws IOException{
        System.out.println("------1.满20减5,2.满50减20(只能持有一张)");
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        if(x==1){
            yhq=20;
        }else if(x==2){
            yhq=50;
        }else{
            System.out.println("没有该操作");
        }
        System.out.println("你现有"+yhq+"元优惠券");
        System.out.println("返回y");
        String s = sc.next();
        if (s.equals("y")){
            zhuJieMain();
        }else{
            System.out.println("你还不想结账?");
        }
    }
}


package kfc;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class Collect {
	Date date = new Date();
	Calendar calender = Calendar.getInstance();
	int day = calender.get(calender.DAY_OF_WEEK);
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private ArrayList<KFC> aa;
    private int money;
    private int yhq=0;
    public Collect(){
    }
    public void setKfc(ArrayList<KFC> aa) {
        this.aa = aa;
    }
    public void setYhq(int yhq) {
        this.yhq = yhq;
    }
    public void setMoney(int money) {
        this.money = money;
    }
    public int judge(){
        int i=0;
        int sum=0;
        for(KFC kfc:aa){
        		sum+=kfc.getPrice();
        }
        if(day==7){
        	sum-=5;
        	if(sum<0){
        		sum = 0;
        	}
    	}
        if(sum<20){
        	i = money - sum;
        }
        if(sum>=20&& sum<50){
            if(yhq==20) {
                i = money-sum + 5;
            }else{
                i = money-sum;
            }
        }
        if(sum>=50){
            if(yhq==20) {
                i = money-sum + 5;
            }
            else if(yhq==50) {
                i = money-sum + 20;
            }else{
                i = money-sum;
            }
        }
        return i;
    }
    public void print(){
        System.out.println("本次消费如下:");
        int sum=0;
        StringBuffer s = new StringBuffer();
        for(KFC kfc : aa){
            sum+=kfc.getPrice();
            if(aa.indexOf(kfc)!=aa.size()-1) {
                s.append(kfc.getName() + ",");
            }else{
                s.append(kfc.getName());
            }
        }

        System.out.println("您点了"+s);
        System.out.println("共消费"+sum+"元");
        System.out.println("付钱:");
    }
    public void printXiaopiao() throws IOException{
    	File file = new File("out.txt");
    	if(!file.exists()){
    		file.createNewFile();
    	}
    	FileWriter fw = new FileWriter("out.txt",false);
    	PrintWriter pw = new PrintWriter(fw);
        System.out.println("本次消费如下:");
        int sum=0;
        StringBuffer s = new StringBuffer();
        for(KFC kfc : aa){
            sum+=kfc.getPrice();
            if(aa.indexOf(kfc)!=aa.size()-1) {
                s.append(kfc.getName() + ",");
            }else{
                s.append(kfc.getName());
            }
        }
        System.out.println("消费时间为:"+sdf.format(date));
        pw.println("消费时间为:"+sdf.format(date));
    	pw.flush();
        System.out.println("您点了"+s);
        pw.println("您点了"+s);
    	pw.flush();
        if(day==7){
    		System.out.println("恭喜你,星期六为活动日,所有用户消费任意金额可减免5元");
    		pw.println("恭喜你,星期六为活动日,所有用户消费任意金额可减免5元");
        	pw.flush();
    		sum-=5;
    	}
        if(sum<0){
        	sum=0;
        }
        System.out.println("共消费"+sum+"元");
        pw.println("共消费"+sum+"元");
    	pw.flush();
        System.out.println("您支付了"+money+"元");
        pw.println("您支付了"+money+"元");
    	pw.flush();
        if((sum>=20 && sum<50 )&& yhq==20){
            System.out.println("您使用了优惠券满20减5");
            pw.println("您使用了优惠券满20减5");
        	pw.flush();
        }
        if(sum>=50 && yhq==50){
            System.out.println("您使用了优惠券满50减20");
            pw.println("您使用了优惠券满50减20");
        	pw.flush();
        }
        if(sum>=50 && yhq==20){
            System.out.println("您使用了优惠券满20减5");
            pw.println("您使用了优惠券满20减5");
        	pw.flush();
        }
        System.out.println("找您"+judge()+"元");
        pw.println("找您"+judge()+"元");
    	pw.flush();
    }
}

package kfc;

public class Cola extends KFC{

    private int price = 8;
    private String name = "可乐";

    public int getPrice() {
        return price;
    }

    @Override
    public String getName() {
        return name;
    }
}

package kfc;

public class Humberger extends KFC{

    private int price = 10;
    private String name = "汉堡包";

    public int getPrice() {
        return price;
    }

    @Override
    public String getName() {
        return name;
    }
}


package kfc;

public class TC1 extends KFC {
    private String name = "套餐1:可乐+鸡翅+薯条";
    private int price=20;

    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getPrice() {
        return price;
    }
}

package kfc;

public class TC2 extends KFC {
    private String name = "套餐2:汉堡+可乐+薯条:30/份";
    private int price=30;

    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getPrice() {
        return price;
    }
}

package kfc;

import java.io.IOException;

public class text {
public static void main(String[]args) throws IOException{
DOS a= new DOS();
}
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值