肯德基收银系统

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44712846/article/details/90142195

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
提高要求:
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
实现当天营业额和餐品销量计算和统计,用数据库记录。

/**@西安科技大学
  *@软工1702班
  *@author  侯明会
  *@JAVA
  */
package package1;
public class Food {
	public String name;//餐品名称
	public double price;//餐品价格
	public Food(String name,double price) {
		this.name=name;
		this.price=price;
	}
}

public class Taocan {
	String tc_name;
	double tc_price;
	Food[] food=new Food[3];
	public Taocan(String tc_name,Food f1,Food f2,Food f3) {
		this.tc_name=tc_name;
		food[0]=f1;
		food[1]=f2;
		food[2]=f3;
		tc_price=f1.price+f2.price+f3.price;
	}
}
//套餐结算与找零
import java.io.FileWriter;
import java.util.Date;
import java.util.Scanner;
interface SetMeal{
	Food[] zhucan= {new Food("奥尔良鸡腿堡",13.0),new Food("烤肉饭",13.0),new Food("墨西哥鸡肉卷",11.0)};
	Food[] fushi= {new Food("麦乐鸡块",9.0),new Food("劲爆鸡米花",9.0),new Food("大薯条",6.0)};
	Food[] drink= {new Food("可口可乐",9.0),new Food("拿铁咖啡",9.0),new Food("燕麦牛奶",6.0)};
	public double Price();
}
class Adult implements SetMeal{
	double pay;
	Taocan taocan=new Taocan("成人套餐",zhucan[1],fushi[0],drink[1]);
	public double Price() {
		System.out.println("您选择的套餐为:"+taocan.tc_name);
		pay=taocan.food[0].price+taocan.food[1].price+taocan.food[2].price;
		return pay;
	}
}
class Child implements SetMeal{
	double pay;
	Taocan taocan=new Taocan("儿童套餐",zhucan[0],fushi[2],drink[2]);
	public double Price() {
		System.out.println("您选择的套餐为:"+taocan.tc_name);
		pay=taocan.food[0].price+taocan.food[1].price+taocan.food[2].price;
		return pay;
	}
}
class Lovers implements SetMeal{
	double pay;
	Taocan taocan=new Taocan("情侣套餐",zhucan[2],fushi[1],drink[0]);
	public double Price() {
		System.out.println("您选择的套餐为:"+taocan.tc_name);
		pay=taocan.food[0].price+taocan.food[1].price+taocan.food[2].price;
		return pay;
	}
}
class AdultFactory{
	public static SetMeal getSetMeal(String type) {
		if(type.equals("Adult")) {
			return new Adult();
		}else{
	        System.out.println("找不到相应的套餐类型!");
	        return null;
	    }
	}
}
class ChildFactory{
	public static SetMeal getSetMeal(String type) {
		if(type.equals("Child")) {
			return new Child();
		}else{
	        System.out.println("找不到相应的套餐类型!");
	        return null;
	    }
	}
}
class LoversFactory{
	public static SetMeal getSetMeal(String type) {
		if(type.equals("Lovers")) {
			return new Lovers();
		}else{
	        System.out.println("找不到相应的套餐类型!");
	        return null;
	    }
	}
}
public class TaocanPrice {
	double pay=0;//顾客需支付的钱数
	double sumpay;//顾客给的总钱数
	double change=0;//找给顾客的钱数
	int tc_name;//顾客所选套餐序号
	public void taocan() {		
		System.out.println("----------------------------");
		System.out.println("----------KFC套餐:-----------\r\n"+
		                   "---1.成人套餐\r\n"+
				           "---2.孩童套餐\r\n"+
		                   "---3.情侣套餐");
		System.out.println("----------------------------");
		Scanner scanner=new Scanner(System.in);
		tc_name=scanner.nextInt();
		if(tc_name==1) {
			SetMeal adult=AdultFactory.getSetMeal("Adult");
			if(adult!=null) {
				pay=adult.Price();
			}
		}else if(tc_name==2) {
			SetMeal child=ChildFactory.getSetMeal("Child");
			if(child!=null) {
				pay=child.Price();
			}
		}else if(tc_name==3) {
			SetMeal lovers=LoversFactory.getSetMeal("Lovers");
			if(lovers!=null) {
				pay=lovers.Price();
			}
		}
		System.out.println("顾客给钱:");
		sumpay=scanner.nextDouble();//顾客给的总钱数
		change=sumpay-pay;
		System.out.println("顾客给的总钱数为:"+sumpay);
		System.out.println("需要支付的钱数为:"+pay);
		System.out.println("找零:"+change);	
	}
	public void note()throws Exception {
			Date date=new Date();
			FileWriter fileWriter=new FileWriter("note.txt");
			fileWriter.write("***********************************\r\n");
			fileWriter.write("订单时间:"+date);
			fileWriter.write("\r\n名称        单价        数量        价格\r\n");
			fileWriter.write(tc_name+"  "+pay+"  1  "+pay);
			fileWriter.write("\r\n总价为:"+pay);
			fileWriter.write("\r\n收钱:"+sumpay);
			fileWriter.write("\r\n找零:"+change);
			fileWriter.write("\r\n当前收银员:空空");
			fileWriter.write("\r\n欢迎下次光临!\r\n");
			fileWriter.write("***********************************");
			fileWriter.close();
		}
}

interface Meal{
	Food[] zhucan= {new Food("奥尔良鸡腿堡",13.0),new Food("烤肉饭",13.0),new Food("墨西哥鸡肉卷",11.0)};
	Food[] fushi= {new Food("麦乐鸡块",9.0),new Food("劲爆鸡米花",9.0),new Food("大薯条",6.0)};
	Food[] drink= {new Food("可口可乐",9.0),new Food("拿铁咖啡",9.0),new Food("燕麦牛奶",6.0)};
	public double Price(int i,int j,int k);
}
//正常餐品结算和找零
class NormalFood implements Meal{
	double pay;
	public double Price(int i,int j,int k) {
		try {
			pay=zhucan[i].price+fushi[j].price+drink[k].price;
		}catch(Exception e){
			System.out.println("Error!");
		}
		return pay;
	}
}

//优惠券结算和找零
class Coupon implements Meal{
	double pay;
	public double Price(int i,int j,int k) {
		try {
			pay=zhucan[i].price+fushi[j].price+drink[k].price;
		}catch(Exception e){
			System.out.println("Error!"+e.getMessage());
		}
		return 0.8*pay;
	}
}
//工厂1返回正常餐品对象或优惠券对象
public class Factory1 {
	public static Meal getMeal(String type) {
		if(type.equalsIgnoreCase("NormalFood")){
			System.out.println("正常餐品结算和找零:");
			return new NormalFood();
		} else if(type.equalsIgnoreCase("Coupon")){
			System.out.println("优惠券结算和找零:");
	        return new Coupon();
	    } else{
	        System.out.println("找不到相应的餐品类型!");
	        return null;
	    }
	}
}

import java.io.FileWriter;
import java.util.Date;
import java.util.Scanner;
public class Menu {
	Food[] zhucan= {new Food("奥尔良鸡腿堡",13.0),new Food("烤肉饭",13.0),new Food("墨西哥鸡肉卷",11.0)};
	Food[] fushi= {new Food("麦乐鸡块",9.0),new Food("劲爆鸡米花",9.0),new Food("大薯条",6.0)};
	Food[] drink= {new Food("可口可乐",9.0),new Food("拿铁咖啡",9.0),new Food("燕麦牛奶",6.0)};
	int i,j,k;
	double pay=0;//顾客需支付的钱数
	double sumpay;//顾客给的总钱数
	double change=0;//找给顾客的钱数
	//正常餐品结算和找零以及优惠券结算和找零
	public void menu() {		
		Scanner scanner=new Scanner(System.in);
		System.out.println("主餐:");
		System.out.println("0."+zhucan[0].name+"    价格:"+zhucan[0].price);
		System.out.println("1."+zhucan[1].name+"    价格:"+zhucan[1].price);
		System.out.println("2."+zhucan[2].name+"    价格:"+zhucan[2].price);
		System.out.println("副食:");
		System.out.println("0."+fushi[0].name+"    价格:"+fushi[0].price);
		System.out.println("1."+fushi[1].name+"    价格:"+fushi[1].price);
		System.out.println("2."+fushi[2].name+"    价格:"+fushi[2].price);
		System.out.println("饮料:");
		System.out.println("0."+drink[0].name+"    价格:"+drink[0].price);
		System.out.println("1."+drink[1].name+"    价格:"+drink[1].price);
		System.out.println("2."+drink[2].name+"    价格:"+drink[2].price);
		System.out.println("请选择主餐(0~2):");
		i=scanner.nextInt();
		System.out.println("请选择副食(0~2):");
		j=scanner.nextInt();
		System.out.println("请选择饮料(0~2):");
		k=scanner.nextInt();
		System.out.println("请选择是否使用优惠券(0-否   1-是):");
		int s=scanner.nextInt();
		if(s==1) {
			Meal m2=Factory1.getMeal("Coupon");
			if(m2!=null) {
				pay=m2.Price(i,j,k);
			}
		}
		else if(s==0) {
			Meal m1=Factory1.getMeal("NormalFood");
			if(m1!=null) {
				pay=m1.Price(i,j,k);
			}
		}
		System.out.println("顾客给钱:");
		sumpay=scanner.nextDouble();//顾客给的总钱数
		change=sumpay-pay;
		System.out.println("顾客给的总钱数为:"+sumpay);
		System.out.println("需要支付的钱数为:"+pay);
		System.out.println("找零:"+change);
	}
	public void note()throws Exception {
		Date date=new Date();
		FileWriter fileWriter=new FileWriter("note.txt");
		fileWriter.write("*********************************************\r\n");
		fileWriter.write("订单时间:"+date);
		fileWriter.write("\r\n名称                单价                数量                价格\r\n");
		fileWriter.write(zhucan[i].name+"    "+zhucan[i].price+"        1        "+zhucan[i].price+"\r\n");
		fileWriter.write(fushi[j].name+"    "+fushi[j].price+"        1        "+fushi[j].price+"\r\n");
		fileWriter.write(drink[k].name+"    "+drink[k].price+"        1        "+drink[k].price);
		fileWriter.write("\r\n总价为:"+pay);
		fileWriter.write("\r\n收钱:"+sumpay);
		fileWriter.write("\r\n找零:"+change);
		fileWriter.write("当前收银员:空空\r\n");
		fileWriter.write("欢迎下次光临!\r\n");
		fileWriter.write("*********************************************");
		fileWriter.close();
	}
}
//店内活动
package package1;
import java.io.FileWriter;
import java.util.Date;
import java.util.Scanner;
public class Activity {
	Food[] zhucan= {new Food("奥尔良鸡腿堡",13.0),new Food("烤肉饭",13.0),new Food("墨西哥鸡肉卷",11.0)};
	Food[] fushi= {new Food("麦乐鸡块",9.0),new Food("劲爆鸡米花",9.0),new Food("大薯条",6.0)};
	Food[] drink= {new Food("可口可乐",9.0),new Food("拿铁咖啡",9.0),new Food("燕麦牛奶",6.0)};
	double pay=0;//顾客需支付的钱数
	double sumpay;//顾客给的总钱数
	double change=0;//找给顾客的钱数
	int i,j,k;
	public  void activity() {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请选择主餐(0~2):");
		i=scanner.nextInt();
		System.out.println("请选择副食(0~2):");
		j=scanner.nextInt();
		System.out.println("请选择饮料(0~2):");
		k=scanner.nextInt();
		System.out.println("----------------------------");
		System.out.println("----------KFC活动:-----------\r\n"+
		                   "---1.春季大酬宾(全场8折)\r\n"+
				           "---2.疯狂星期四(饮料一律免费送)\r\n");
		System.out.println("----------------------------");
		System.out.println("请选择活动序号:");
		int a=scanner.nextInt();
		if(a==1) {
			try {
				pay=0.8*(zhucan[i].price+fushi[j].price+drink[k].price);
			}catch(Exception e) {
				
			}
		}
		if(a==2) {
			try {
				pay=zhucan[i].price+fushi[j].price;
			}catch(Exception e) {
				
			}			
		}
		System.out.println("顾客给钱:");
		sumpay=scanner.nextDouble();//顾客给的总钱数
		change=sumpay-pay;
		System.out.println("顾客给的总钱数为:"+sumpay);
		System.out.println("需要支付的钱数为:"+pay);
		System.out.println("找零:"+change);
		
	}
	public void note()throws Exception {
		Date date=new Date();
		FileWriter fileWriter=new FileWriter("note.txt");
		fileWriter.write("************************************************\r\n");
		fileWriter.write("订单时间:"+date);
		fileWriter.write("\r\n名称        单价        数量        价格\r\n");
		fileWriter.write(zhucan[i].name+"  "+zhucan[i].price+"  1  "+zhucan[i].price+"\r\n");
		fileWriter.write(fushi[j].name+"  "+fushi[j].price+"  1  "+fushi[j].price+"\r\n");
		fileWriter.write(drink[k].name+"  "+drink[k].price+"  1  "+drink[k].price+"\r\n");
		fileWriter.write("总价为:"+pay+"\r\n");
		fileWriter.write("收钱:"+sumpay+"\r\n");
		fileWriter.write("找零:"+change+"\r\n");
		fileWriter.write("当前收银员:空空\r\n");
		fileWriter.write("欢迎下次光临!\r\n");
		fileWriter.write("************************************************");
		fileWriter.close();
	}
}
//界面
package package1;
import java.util.Scanner;
public class KFC {
	public static void main(String[] args) {
		boolean t=true;
		Scanner scanner=new Scanner(System.in);
		while(t) {
			System.out.println("欢迎进入肯德基收银系统!");
			System.out.println("----------------------------------");
			System.out.println("---1.正常餐品或使用优惠券结算和找零。\r\n" + 
					           "---2.基本套餐结算和找零\r\n" + 
					           "---3.店内活动(自行设计或参考官网信息)\r\n" );
			System.out.println("----------------------------------");
			System.out.println("请选择活动序号:");
			int i;
			i=scanner.nextInt();
			switch(i)
			{
			case 1:
				Menu m=new Menu();
				m.menu();
				try {
					m.note();
				}catch(Exception e){
					System.out.println("Error!");
				}
				break;
			case 2:
				TaocanPrice tp=new TaocanPrice();
				tp.taocan();
				try {
					tp.note();
				}catch(Exception e){
					System.out.println("Error!");
				}
				break;
			case 3:
				Activity a=new Activity();
				a.activity();
				try {
					a.note();
				}catch(Exception e){
					System.out.println("Error!");
				}
				break;
			default:
				System.out.println("输入的序号错误!");
				break;
			}
			System.out.println("是否结束收银?(0-否   1-是)");
			int b=scanner.nextInt();
			if(b==0) {
				t=true;
			}else if(b==1) {
				t=false;
			}
		}
	}
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页