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

建立三个结构分别为Burger(汉堡),Snack(小吃),Drink(饮品),不同种类的汉堡,小吃,饮品都实现这三个结构,建立三种食物的工厂类。
Burger接口和实现它的类:

public interface Burger {
	public int getPrice(); 
	public String getName();
}


//芝士汉堡
class CheeseBurger implements Burger{

	public int getPrice() {
		// TODO Auto-generated method stub
		return 15;
	}
	public String getName() {
		return "芝士汉堡";
	}
}

//鸡肉汉堡
class ChickenBurger implements Burger{

	public int getPrice() {
		// TODO Auto-generated method stub
		return 18;
	}
	public String getName() {
		return "鸡肉汉堡";
	}
}

Snack接口和实现它的类:

public interface Snack {
	public int getPrice();
	public String getName();
}

//薯条
class Chips implements Snack{

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 8;
	}
	public String getName() {
		return "薯条";
	}
}

//鸡翅
class ChickenWings implements Snack{
	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 10;
	}
	public String getName() {
		return "鸡翅";
	}
}

Drink接口和实现它的类:

public interface Drink {
	public int getPrice();
	public String getName();
}


//可乐
class Coke implements Drink{

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 4;
	}
	public String getName() {
		return "可乐";
	}
}

//牛奶
class Milk implements Drink{

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 6;
	}
	public String getName() {
		return "牛奶";
	}	
}

汉堡工厂类实现代码:

public class BurgerFactory {
	
	public static Burger createBurger(int type) {
		Burger burger = null;
		if (1==type) {
			burger = new CheeseBurger();
			System.out.println("芝士汉堡制作中");
		}
		else {
			burger = new ChickenBurger();
			System.out.println("鸡肉汉堡制作中");
		}
		return burger;
	}
}

小吃工厂类代码:

public class SnackFactory {
	public static Snack createSnack(int type) {
		Snack snack = null;
		if (1==type) {
			snack = new Chips();
			System.out.println("薯条制作中");
		}else {
			snack = new ChickenWings();
			System.out.println("鸡翅制作中");
		}
		return snack;
	}
}

饮品工厂类实现:

public class SnackFactory {
	public static Snack createSnack(int type) {
		Snack snack = null;
		if (1==type) {
			snack = new Chips();
			System.out.println("薯条制作中");
		}else {
			snack = new ChickenWings();
			System.out.println("鸡翅制作中");
		}
		return snack;
	}
}

通过优惠券购买,计算收费信息:

public class Coupons {

	public static int calculateMoney(int coupouType) {
		return TotalPrice.totalPrice - coupouType;
	}
	public static void retMoney(int payMoney,int coupouType) {
		System.out.println("你成功付款" + payMoney + "元");
		System.out.println("找零" + (payMoney-calculateMoney(coupouType))+ "元");
		System.out.println("欢迎下次光临!");
	}
}

运行截图: