模拟肯德基收银系统

题目

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

算法构造

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

算法构造

  • AFactory (抽象工厂类)
/*
 * 抽象工厂类
 * 被ChickenFactory,ChipsFactory,CokeFactory,FiveFactory,
 * HamFactory,JiliuFactory,TwoFactory继承
 */
public abstract class AFactory {
	 abstract Food create(int num);
}

  • ChickenFactory
public class ChickenFactory extends AFactory{
	
	public Chicken create(int num) {
		Chicken ch=new Chicken();
		ch.setPrice();
		ch.setNum(num);
		return ch;		
	}
}

  • ChipsFactory
public class ChipsFactory {
	public Chips create(int num) {
		 Chips ch=new  Chips();
		ch.setPrice();
		ch.setNum(num);
		return ch;		
	}
}

  • CokeFactory
public class CokeFactory {
	public Coke create(int num) {
		Coke ch=new Coke();
		ch.setPrice();
		ch.setNum(num);
		return ch;	
	}
}
  • FiveFactory
public class FiveFactory {
	public Five create(int num) {
			Five ch=new Five();
			ch.setPrice();
			ch.setNum(num);
			return ch;
		
	}
}

  • HamFactory
public class HamFactory extends AFactory{


	public Ham create(int numHam) {
		
		Ham  ch=new Ham ();
		ch.setPrice();
		ch.setNum(numHam);
		return ch;
	}

	
	
}
  • JiliuFactory

public class JiliuFactory {
   public Jiliu create(int num) {
   	Jiliu  ch=new Jiliu ();
   	ch.setPrice();
   	ch.setNum(num);
   	return ch;
   }
}

  • TwoFactory
public class TwoFactory {
	public Two create(int num) {
		Two  ch=new Two ();
		ch.setPrice();
		ch.setNum(num);
		return ch;
	}
}

上边是抽象工厂类及其具体子工厂类,具体子工厂类有方法调用生成 食物对象
下边是食物类

  • Food(抽象父类)
/*
 * 抽象食物类
 * 被Chicken,Chips,Coke,Five,Ham,Jiliu,Two,继承
 */
public abstract class Food{
	 
		public String name;
		public int num=0;		//食物数量
		public float price; //食物价格
		
		void display()	
		{
			System.out.println(this.name+" : "+this.num+"份"+ "	单价:"+this.price+"元/份");
		}
		public float total()
		{
			String s=String.format("%.1f", (num*price));
			
			float f=Float.parseFloat(s);
			return f;
		}		
	}

  • Chicken
public class Chicken extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = 4.8f;
	}
	
	
		public float total()
	{
		String s=String.format("%.1f", (num*price));
		
		float f=Float.parseFloat(s);
		return f;
	}
	
	public Chicken(int i)
	{
		this.num=i;
	}
	 public Chicken()
		{
			this.num=0;
		}
	 
	 
	 
	 
}

  • Chips

public class Chips extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = (float) 9.9;
	}
	Chips(int i)
	{
		this.num=i;
	}
	public Chips()
	{this.num=0;}
	public float total()
	{
		String s=String.format("%.1f", (num*price));
		
		float f=Float.parseFloat(s);
		return f;
	}
}

  • Coke

public class Coke extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = (float) 9.5;
	}
	Coke(int i)
	{
		this.num=i;
	}
	public Coke()
	{
		this.num=0;
	}
	public float total()
	{
		String s=String.format("%.1f", (num*price));
		
		float f=Float.parseFloat(s);
		return f;
	}
}

  • Five

public class Five extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = 80f;
	}
	 Five(int i)
	{
		this.num=i;
	}
	 public  Five()
		{
			this.num=0;
		}
		public float total()
		{
			String s=String.format("%.1f", (num*price));
			
			float f=Float.parseFloat(s);
			return f;
		}
}
  • Ham

public class Ham extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = 19;
	}
	Ham(int i)
	{
		this.num=i;
	}
	public Ham()
	{
		this.num=0;
	}
	public float total()
	{
		String s=String.format("%.1f", (num*price));
		
		float f=Float.parseFloat(s);
		return f;
	}

}

  • Jiliu

public class Jiliu extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = 15;
	}
	Jiliu(int i)
	{
		this.num=i;
	}
	public Jiliu()
	{
		this.num=0;
	}
	public float total()
	{
		String s=String.format("%.1f", (num*price));
		
		float f=Float.parseFloat(s);
		return f;
	}
}

  • Two

/*
 * 双人套餐类
 * 将双人套餐和其他基础食物一样处理
 */
public class Two extends Food{
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice() {
		this.price = 40f;
	}
	 Two(int i)
	{
		this.num=i;
	}
	 
	 public Two()
		{
			this.num=0;
		}
		public float total()
		{
			String s=String.format("%.1f", (num*price));
			
			float f=Float.parseFloat(s);
			return f;
		}
}

上边是使用了工厂方法设计模式,设计出来
还有三个图形界面类没有列举出来,利用java的swing和awt包实现了图形化界面。
… … … … … … … … … … … … … … … … …
调用时只需使用生产工厂中的方法new出实现类:
ham=new HamFactory().create(numHam)
c=new ChickenFactory().create(numChic)
co=new CokeFactory().create(numCoke)
… … … … … … … … … … … … … …

结果

界面一选择食物:
在这里插入图片描述
选择好之后点击结账进入界面2和3,(左为界面2,右为界面3)

在这里插入图片描述
折扣输入错误:
在这里插入图片描述
界面3:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值