java实现简单点餐系统

一.题目分析:
模拟肯德基快餐店的收银系统实现:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
我觉得用工厂方法模式和抽象工厂模式来实现简单的点餐系统比较合适。工厂方法模式用来实现单品的点餐,抽象工厂模式用于实现套餐。
二、算法设计
类图:java实现简单点餐系统_第1张图片
java实现简单点餐系统_第2张图片
java实现简单点餐系统_第3张图片 菜单:java实现简单点餐系统_第4张图片
首先定义一个product接口,创建Hamburger和Beverage来实现继承。汉堡类下有chhamburger类和Humtype类,饮品类下有Cola类和coffee类来实现接口。分别建立2个接口类Hamburgerfactory和Beveragefactory,通过四个具体的类chhamburger、hamburger、Cola和coffee来实现接口。套餐的实现利用抽象工厂的方法,建立一个抽象工厂类abstractfactory,再创建combine1和combine2。
三、调试测试及运行结果
测试: switch(foodchoose){
case 1:
Hamburgerfactory fac1=new Hamtypefactory();
Hamtype cheese1=(Hamtype)fac1.factorymethod(“鲜虾堡”,2);
System.out.println(cheese1);
write(cheese1.toString()+"\n");
money=money+22.5;
break;
case 2:
Hamburgerfactory fac2=new chhamburgerfactory();
chhamburger crab=(chhamburger)fac2.factorymethod(“鸡腿堡”,2);
System.out.println(crab);
write(crab.toString()+"\n");
money=money+25;
break;
default:
System.out.println(“没有此类餐品”);
}
switch(drinkchoose){
case 1:
Beveragefactory fac1=new colafactory();
Cola cola=(Cola)fac1.factorymethod(“可乐”,1);
System.out.println(cola);
write(cola.toString()+"\n");
money=money+8;
break;
case 2:
coffeefactory fac2= new coffeefactory();
Coffee coffee=(Coffee)fac2.factorymethod(“咖啡”,2);
System.out.println(coffee);
write(coffee.toString()+"\n");
money=money+10;
break;
default:
System.out.println(“没有此类餐品”);
}
System.out.println(“请问您有几折劵”);
int count=scanner.nextInt();
System.out.println(“您本次一共消费”+Money(money, count));
write(“您本次一共消费”+Money(money, count)+"\n"); }
else if(choose==2)
{ System.out.println("-----------------------------------");
System.out.println(" 请选择您要点的套餐 “);
System.out.println(“套餐A:鸡腿堡+可乐 价格:¥30”);
System.out.println(“套餐B:鲜虾堡+咖啡 价格:¥33”);
System.out.println(“1.套餐A 2.套餐B”);
System.out.println(”-----------------------------------");
int choose2=scanner.nextInt();
switch (choose2)
{
case 1:
Combine1 fa1=new Combine1();
Hamburger ham1=fa1.hamburgerfactory();
Beverage cl1=fa1.Beveragefactory();
System.out.println(ham1);
System.out.println(cl1);
write(ham1.toString()+" "+cl1.toString());
System.out.println("请选择支付方式:1.正常支付 2:优惠券 “);
int count1=scanner.nextInt();
switch (count1)
{case 1: System.out.println(“您本次一共消费30元”);
write(“您本次一共消费30元\n”); break;
case 2: System.out.println(“您本次一共消费”+Money(30, 9));
write(“您本次一共消费”+Money(30,9));
break;
}
break;
case 2:
Combine2 fa2=new Combine2();
Hamburger ham2=fa2.hamburgerfactory();
Beverage cl2=fa2.Beveragefactory();
System.out.println(ham2);
System.out.println(cl2);
write(ham2.toString()+” "+cl2.toString());
System.out.println("请选择支付方式:1.正常支付 2:优惠券 ");
int count2=scanner.nextInt();
switch (count2)
{case 1: System.out.println(“您本次一共消费33元”);
write(“您本次一共消费33元\n”); break;
case 2: System.out.println(“您本次一共消费”+Money(33, 9));
write(“您本次一共消费”+Money(32,9));
break;
运行结果:
四、心得体会
最初学习之时,对简单工厂、工厂方法、抽象工厂模式三个分不清楚,经过这次作业的练习,我明白了它们三者的区别和具体使用情况。打印小票时要存入文件,通过查阅资料我攻克了知识点。因为时间原因没能优化打折的算法和视图实现,这些会在后期逐渐优化。

你可能感兴趣的:(java实现简单点餐系统)