一、作业说明
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
二、代码实现
1.Client.java
package kfc;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Client {
private String s[] =new String[6];
private KFCfactory factory_1;
//构造方法将抽象工厂传入
public Client(KFCfactory factory_1){
this.factory_1 = factory_1;
}
public void showbill() throws IOException{
BufferedWriter r=new BufferedWriter(new FileWriter("show.txt",true));
r.write("---------------------账单如下---------------------");
r.newLine();
for(int i=0;i<5;i++){
r.write(s[i]);
r.newLine();
r.flush();
// r.close();
}
}
public double orderHamburgers(int num,int kind) throws IOException
{
//获得不同种类的汉堡
Hamburger hamburger = factory_1.createHamburger(num, kind);
//输出订购信息
System.out.println(hamburger.printMesage());
s[0]=hamburger.printMesage();
System.out.print("\n");
//返回总价
return hamburger.totalPrice();
}
public double orderFrenchFries(int num,int kind){
FrenchFries frenchfries = factory_1.createFrenchFries(num, kind);
//输出订购信息
System.out.println(frenchfries.printMesage());
s[1]=frenchfries.printMesage();
System.out.println("\n");
//返回总价
return frenchfries.totalPrice();
}
public double orderDrink(int num,int kind){
Drink drink = factory_1.createDrink(num, kind);
//输出订购信息
System.out.print(drink.printMesage());
s[2]=drink.printMesage();
System.out.println("\n");
//返回总价
return drink.totalPrice();
}
public double orderDessert(int num,int kind)