KFC点餐系统

一。题目要求
同学们应该都去麦当劳或肯德基吃过快餐吧?
请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
二.类图
在这里插入图片描述
在这里插入图片描述
三.源程序

1.抽象食物——AbstractFood
package KFC;
public abstract class AbstractFood {
protected String kind;
protected int num;
protected float price;
public float totalPrice() {
return this.num*this.price;
}

}
2.食物接口——Food
package KFC;
public interface Food {
void printMessage();
}

3.抽象基类:
package KFC;

public abstract class HamBean extends AbstractFood implements Food {
@Override
public void printMessage() {
// TODO Auto-generated method stub
System.out.println(this.kind+"\n"+“单价 :”+this.price+"\n"+“数量:”+this.num+"\n"+“合计:”+this.totalPrice());
}
}

package KFC;

public abstract class ChickenBean extends AbstractFood implements Food{
public void printMessage() {
// TODO Auto-generated method stub
System.out.println(this.kind+"\n"+“单价 :”+this.price+"\n"+“数量:”+this.num+"\n"+“合计:”+this.totalPrice());
}
}

package KFC;

public abstract class Dessert extends AbstractFood implements Food {
@Override
public void printMessage() {
// TODO Auto-generated method stub
System.out.println(this.kind+"\n"+“单价 :”+this.price+"\n"+“数量:”+this.num+"\n"+“合计:”+this.totalPrice());
}

}
package KFC;

public abstract class Drink extends AbstractFood implements Food{
public void printMessage() {
// TODO Auto-generated method stub
System.out.println(this.kind+"\n"+“单价 :”+this.price+"\n"+“数量:”+this.num+"\n"+“合计:”+this.totalPrice());
}
}
package KFC;

public abstract class Combo extends AbstractFood implements Food{

public void printMessage() {
	// TODO Auto-generated method stub
	System.out.println(this.kind+"单价 :\n"+this.price+"数量\n"+this.num+"合计\n"+this.totalPrice());
}

}
4.具体食物:
package KFC;

public class XiangLaHam extends HamBean{
public XiangLaHam(int num) {
this.kind=“香辣堡”;
this.price=15f;
this.num=num;
}
}
package KFC;

public class NiuRouHam extends HamBean {
public NiuRouHam(int num) {
this.kind=“牛肉堡”;
this.price=17f;
this.num=num;
}
}
package KFC;

public class XiaHam extends HamBean{
public XiaHam(int num) {
this.kind=“虾堡”;
this.price=16f;
this.num=num;
}
}
package KFC;

public class KaoChi extends ChickenBean{
public KaoChi(int num) {
this.kind=“烤翅”;
this.price=6f;
this.num=num;
}

}
package KFC;

public class KaoJiTui extends ChickenBean{
public KaoJiTui(int num) {
this.kind=“烤鸡腿”;
this.price=12f;
this.num=num;
}

}package KFC;

public class JiMiHua extends ChickenBean{
public JiMiHua(int num) {
this.kind=“鸡米花”;
this.price=10f;
this.num=num;
}

}
package KFC;

public class Chips extends Dessert {
public Chips(int num) {
// TODO Auto-generated constructor stub
this.kind=“薯条”;
this.price=8f;
this.num=num;
}

}
package KFC;

public class EggTart extends Dessert {
public EggTart(int num) {
// TODO Auto-generated constructor stub
this.kind=“蛋挞”;
this.price=4f;
this.num=num;
}

}
package KFC;

public class Sundae extends Dessert{
public Sundae(int num) {
// TODO Auto-generated constructor stub
this.kind=“圣代”;
this.price=6f;
this.num=num;
}

}
package KFC;

public class Cole extends Drink{
public Cole(int num) {
this.kind=“可乐”;
this.price=7f;
this.num=num;
}

}
package KFC;

public class Coffee extends Drink{
public Coffee(int num) {
this.kind=“咖啡”;
this.price=9f;
this.num=num;
}

}
package KFC;

public class NaiCa extends Drink{
public NaiCa(int num) {
this.kind=“奶茶”;
this.price=10f;
this.num=num;
}

}

package KFC;

public class OneCombo extends Combo {
public OneCombo(int num) {
// TODO Auto-generated constructor stub
this.kind=“单人套餐”;
this.price=33f;
this.num=num;
}
}
package KFC;

public class TwoCombo extends Combo {
public TwoCombo(int num) {
// TODO Auto-generated constructor stub
this.kind=“双人套餐”;
this.price=54f;
this.num=num;
}
}

package KFC;

public class ThreeCombo extends Combo{
public ThreeCombo( int num) {
// TODO Auto-generated constructor stub
this.kind=“三人套餐”;
this.price=109f;
this.num=num;
}

}

5.抽象工厂
package KFC;

 public interface KFCFactory {
  public interface factory {
   public HamBean createHamburger(int num);
   public ChickenBean createChicken(int num);
   public Dessert createDessert(int num);
   public Drink createDrinks(int num);	
 }
public HamBean createXiangLaHam(int num);
public HamBean createNiuRouHam(int num);
public HamBean createXiaHam(int num);

public ChickenBean createKaoChi(int num);
public ChickenBean createKaoJiTui(int num);
public ChickenBean createJiMiHua(int num);
public Dessert createChips(int num);
public Dessert createEggTart(int num);
public Dessert createSundae(int num);
public Drink createNaiCa(int num);
public Drink createCole(int num);
public Drink createCoffee(int num);
public Combo createOneCombo(int num);
public Combo createTwoCombo(int num);
public Combo createThreeCombo(int num);

}
6.具体工厂
package KFC;

public class Factory implements KFCFactory{

@Override
public HamBean createXiangLaHam(int num) {
	// TODO Auto-generated method stub
	return new XiangLaHam(num);
}

@Override
public HamBean createNiuRouHam(int num) {
	// TODO Auto-generated method stub
	return  new NiuRouHam(num);
}

@Override
public HamBean createXiaHam(int num) {
	// TODO Auto-generated method stub
	return new XiaHam(num);
}

@Override
public ChickenBean createKaoChi(int num) {
	// TODO Auto-generated method stub
	return new KaoChi(num);
}

@Override
public ChickenBean createKaoJiTui(int num) {
	// TODO Auto-generated method stub
	return new KaoJiTui(num);
}

@Override
public ChickenBean createJiMiHua(int num) {
	// TODO Auto-generated method stub
	return new JiMiHua(num);
}

@Override
public Dessert createChips(int num) {
	// TODO Auto-generated method stub
	return new Chips(num);
}

@Override
public Dessert createEggTart(int num) {
	// TODO Auto-generated method stub
	return new EggTart(num);
}

@Override
public Dessert createSundae(int num) {
	// TODO Auto-generated method stub
	return new Sundae(num);
}

@Override
public Drink createNaiCa(int num) {
	// TODO Auto-generated method stub
	return new NaiCa(num);
}

@Override
public Drink createCole(int num) {
	// TODO Auto-generated method stub
	return new Cole(num);
}

@Override
public Drink createCoffee(int num) {
	// TODO Auto-generated method stub
	return new Coffee(num);
}

@Override
public Combo createOneCombo(int num) {
	// TODO Auto-generated method stub
	return new OneCombo(num);
}

@Override
public Combo createTwoCombo(int num) {
	// TODO Auto-generated method stub
	return new TwoCombo(num);
}

@Override
public Combo createThreeCombo(int num) {
	// TODO Auto-generated method stub
	return new ThreeCombo(num);
}

}
7:客户类
package KFC;

public class Customer {
private KFCFactory factory;

public Customer(KFCFactory factory) {
	this.factory=factory;
}


public float orderXiangLaHam(int num) {
	HamBean XiangLaHam=factory.createXiangLaHam(num);
	XiangLaHam.printMessage();
	return XiangLaHam.totalPrice();
}
public float orderNuiRouHam(int num) {
	HamBean NuiRouHam=factory.createNiuRouHam(num);
	NuiRouHam.printMessage();
	return NuiRouHam.totalPrice();
}
public float orderXiaHam(int num) {
	HamBean XiaHam=factory.createXiaHam(num);
	XiaHam.printMessage();
	return XiaHam.totalPrice();
}


public float orderKaoChi(int num) {
	ChickenBean KaoChi=factory.createKaoChi(num);
	KaoChi.printMessage();
	return KaoChi.totalPrice();
}
public float orderKaoJiTui(int num) {
	ChickenBean KaoJiTui=factory.createKaoJiTui(num);
	KaoJiTui.printMessage();
	return KaoJiTui.totalPrice();
}

public float orderJiMiHua(int num) {
	ChickenBean JiMiHua=factory.createJiMiHua(num);
	JiMiHua.printMessage();
	return JiMiHua.totalPrice();
}

public float orderChips(int num) {
	Dessert Chips=factory.createChips(num);
	Chips.printMessage();
	return Chips.totalPrice();
}
public float orderEggTart(int num) {
	Dessert EggTart=factory.createEggTart(num);
	EggTart.printMessage();
	return EggTart.totalPrice();
}
public float orderSundae(int num) {
	Dessert Sundae=factory.createSundae(num);
	Sundae.printMessage();
	return Sundae.totalPrice();
}
public float orderCole(int num) {
	Drink Cole=factory.createCole(num);
	Cole.printMessage();
	return Cole.totalPrice();
}
public float orderCoffee(int num) {
	Drink Coffee=factory.createCoffee(num);
	Coffee.printMessage();
	return Coffee.totalPrice();
}
public float orderNaiCa(int num) {
	Drink NaiCa=factory.createNaiCa(num);
	NaiCa.printMessage();
	return NaiCa.totalPrice();
}

public float orderOneCombo(int num) {
	Combo OneCombo=factory.createOneCombo(num);
	OneCombo.printMessage();
	return OneCombo.totalPrice();
}
public float orderTwoCombo(int num) {
	Combo TwoCombo=factory.createTwoCombo(num);
	TwoCombo.printMessage();
	return TwoCombo.totalPrice();
}
public float orderThreeCombo(int num) {
	Combo ThreeCombo=factory.createThreeCombo(num);
	ThreeCombo.printMessage();
	return ThreeCombo.totalPrice();
}

}
8.测试类
package KFC;
import java.util.Scanner;;
public class Client {
public static void main(String[] args) {
KFCFactory factory=new Factory();

	Customer customer=new Customer(factory);
	
	//点餐
	Scanner input =new Scanner(System.in);
	 float money=0;
    //界面
    System.out.println("欢迎光临!\n"
    		+"********************菜单**********************\n"
    		+"汉堡:\n"
    		+"1、香辣汉堡--15元   2、牛肉汉堡--17元  3、全虾汉堡--16元\n"
    		+"鸡肉类:\n"
    		+"4、烤鸡翅 - -6元   5、烤鸡腿 --12元    6、鸡米花 --10元\n"
    		+"甜点:\n"
    		+"7、薯条-8元  8、蛋挞----4元     9、圣代---6元\n"
    		+"饮料:\n"
    		+"10、可乐---7元       11、咖啡----9元      12、奶茶--10元\n"
    		+"套餐类:\n"
    		+"13.单人套餐--33元\n"
    		+ "  1个香辣鸡腿堡+1个烤鸡腿+1包薯条+1杯可乐/奶茶(任点)\n"
    		+"14.双人套餐:--54元\n"
    		+ "  1个香辣鸡腿堡+1个奥尔良烤鸡腿堡/超级牛肉堡/全虾堡(任点)\n"
    		+ "  1对奥尔良烤翅+2个蛋挞+2杯可乐/奶茶(任点)\n"
    		+"15.三人套餐--109元\n"
    		+ "  3个奥尔良烤鸡腿堡/超级牛肉堡/全虾堡(任点)\n"
    		+ "  1对奥尔良烤翅+1个烤鸡腿+1包鸡米花\n"
    		+ "  1包薯条+2杯圣代+2杯可乐/奶茶(任点)+1杯咖啡\n"
    		+"*********************************************\n");
  
	while(true) {
		//价格初始化
		float XiangLaHam=0;
		float NiuRouHam=0;
		float XiaHum=0;
		float KaoJiTui=0;
		float KaoChi=0;
		float JiMiHua=0;
		float Chips=0;
		float EggTart=0;
		float Sundae=0;
		float Cole=0;
		float Coffee=0;
		float NaiCa=0;
		float OneCombo= 0;
        float TwoCombo= 0;
        float ThreeCombo = 0;
       
    	System.out.println("请选择序号点餐");
    	int a=input.nextInt();
    	System.out.println("请选择数量");
    	int b=input.nextInt();
    	switch(a) {
    	case 1:XiangLaHam=customer.orderXiangLaHam(b);break;
    	case 2:NiuRouHam=customer.orderNuiRouHam(b);break;
    	case 3:XiaHum=customer.orderXiaHam(b);break;
    	case 4:KaoChi=customer.orderKaoChi(b);break;
    	case 5:KaoJiTui=customer.orderKaoJiTui(b);break;
    	case 6:JiMiHua= customer.orderJiMiHua(b);break;
    	case 7:Chips=customer.orderChips(b);break;
    	case 8:EggTart=customer.orderEggTart(b);break;
    	case 9:Sundae=customer.orderSundae(b);break;
    	case 10:Cole=customer.orderCole(b);break;
    	case 11:Coffee=customer.orderCoffee(b);break;
    	case 12:NaiCa=customer.orderNaiCa(b);break;
    	case 13:OneCombo=customer.orderOneCombo(b);break;
    	case 14:TwoCombo=customer.orderTwoCombo(b);break;
    	case 15:ThreeCombo=customer.orderThreeCombo(b);break;
    	}
    	float money1=XiangLaHam+NiuRouHam+XiaHum;
        float money2=KaoChi+KaoJiTui+JiMiHua;
        float money3=Chips+EggTart+Sundae;
        float money4=Cole+NaiCa+Coffee;
        float money5=OneCombo+TwoCombo+ThreeCombo;
        money=money+money1+money2+money3+money4+money5;
    	System.out.println("请选择是否继续点餐   1.是   2.否 ");
    	int c=input.nextInt();
    	if(c!=1) {
    		break;
    	}
    }
	
      System.out.println("此次点餐共计:"+money);
    
      System.out.println("是否使用优惠卷    1.是    2.否");
      int b=input.nextInt();
      if(b==1) {
    	  System.out.println("请输入要使用的优惠卷");
    	  int YOUHUI=input.nextInt();
    			  
    	  money=money-YOUHUI;
      }  
      System.out.println("请输入实付金额"); 
      int e=input.nextInt();
      float changes=e-money;
      System.out.println("找零:"+changes);
      System.out.println("祝你用餐愉快!");
      input.close();
   
}

}

四。测试与调试
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
程序有些功能未能实现
1。打印小票
2.活动
有待改进

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值