KFC简易点餐系统作业
KFC点餐系统作业说明:
思路:用了两种设计模式,一种是工厂模式,一种是抽象工厂。
工厂模式:用来创建汉堡,饮料对象。
抽象工厂:用来创建套餐。
首先创建一个食物接口,再创建一个汉堡和饮料接口继承食物接口。
然后创建具体的汉堡类,和饮料类实例化接口。
运用工厂模式创建汉堡和饮料对象。
运行抽象工厂创建套餐对象。
将点餐记录在文件中,并打印。
类:
抽象工厂:
工厂模式:
运行结果:
public class Function {
/**
* @param args
*/
static double Money(double money,int count)
{
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat ("hh:mm");
int datecount=10;
try{
Date dt1 = ft.parse("6:00");//将字符串转换为date类型
Date dt2 = ft.parse("10:00");
Date dt3=ft.parse(ft.format(dNow));
if(dt3.getTime()>dt1.getTime()&&dt3.getTime()<dt2.getTime())
datecount=8;
}catch(Exception e)
{
e.printStackTrace();
}
return money/10*count/10*datecount;
}
static void write(String str){
try {
FileWriter fw = new FileWriter(new File("D:note.txt"),true);
fw.write(str);
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
double money=0;
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat ("hh:mm");
System.out.println("当前时间为: " + ft.format(dNow));
Scanner scanner =new Scanner(System.in);
System.out.println("请您选择单点或者套餐-----1.单点 2.套餐");
int choose=scanner.nextInt();
if(choose==1){
System.out.println("-----------------------------------");
System.out.println(" 请输您要选择的餐品 ");
System.out.println("汉堡系列:1.田园鸡腿堡 ¥18 2.香辣鸡腿堡 ¥25");
System.out.println("-----------------------------------");
int foodchoose=scanner.nextInt();
System.out.println("-----------------------------------");
System.out.println("请问您要什么口味的汉堡");
String burgertaste=scanner.next();
System.out.println("-----------------------------------");
System.out.println(" 请选择您需要点的饮品 ");
System.out.println("饮品系列:1.可乐 ¥10 2.咖啡 ¥15");
int drinkchoose=scanner.nextInt();
System.out.println("-----------------------------------");
System.out.println("请问您要大杯中杯还是小杯");
System.out.println("-----------------------------------");
String drinktype=scanner.next();
//foodchoose drinkchoose分别代表选择的汉堡和饮品
//您点的餐品:
switch(foodchoose){
case 1:
hamburgerfactory fac1=new PastoralChickenFactory();
PastoralChicken pc=(PastoralChicken)fac1.factoryMethod(burgertaste);
System.out.println(pc);
write(pc.toString());
money=money+18;
break;
case 2:
hamburgerfactory fac2=new SpicyChickenFactory();
SpicyChicken sc=(SpicyChicken)fac2.factoryMethod(burgertaste);
System.out.println(sc);
write(sc.toString());
money=money+25;
break;
default:
System.out.println("没有此类餐品");
}
switch(drinkchoose){
case 1:
drinksfactory fac1=new ColaFactory();
Cola cola=(Cola)fac1.factoryMethod(drinktype);
System.out.println(cola);
write(cola.toString());
money=money+10;
break;
case 2:
drinksfactory fac2=new CoffeeFactory();
Coffee coffee=(Coffee)fac2.factoryMethod(drinktype);
System.out.println(coffee);
write(coffee.toString());
money=money+15;
break;
default:
System.out.println("没有此类餐品");
}
System.out.println("请问您有几折卷");
int count=scanner.nextInt();
System.out.println("您本次一共消费"+Money(money, count));
write("您本次一共消费"+Money(money, count));
}
else if(choose==2)
{
System.out.println("-----------------------------------");
System.out.println(" 请选择您要点的套餐 ");
System.out.println("套餐A:田园鸡腿堡+可乐 价格:¥25");
System.out.println("套餐B 香辣鸡腿堡+咖啡 价格:¥45");
System.out.println("1.套餐A 2.套餐B");
System.out.println("-----------------------------------");
int choose2=scanner.nextInt();
switch (choose2) {
case 1:
ConcreteFactoryA fa=new ConcreteFactoryA();
hamburger ham=fa.hamburgerfactory();
drink cl=fa.drinksfactory();
System.out.println(ham);
System.out.println(cl);
write(ham.toString()+" "+cl.toString());
System.out.println("请问您有几折卷");
int count1=scanner.nextInt();
System.out.println("您本次一共消费"+Money(25, count1));
write("您本次一共消费"+Money(25, count1));
System.out.println("请输入您的付款金额");
int pay1=scanner.nextInt();
System.out.println("找零:"+(pay1-Money(25, count1)));
write("找零:"+(pay1-Money(25, count1)));
break;
case 2:
ConcreteFactoryB fa2=new ConcreteFactoryB();
hamburger ham2=fa2.hamburgerfactory();
drink cl2=fa2.drinksfactory();
System.out.println(ham2);
System.out.println(cl2);
write(ham2.toString()+" "+cl2.toString());
System.out.println("请问您有几折卷");
int count2=scanner.nextInt();
System.out.println("您本次一共消费"+Money(35, count2));
write("您本次一共消费"+Money(35, count2));
System.out.println("请输入您的付款金额");
int pay2=scanner.nextInt();
System.out.println("找零:"+(pay2-Money(25, count2)));
write("找零:"+(pay2-Money(25, count2)));
break;
}
}
}
}