利用设计模式实现肯德基点餐系统

作者:无*
时间:2019-5-10
一.题目分析:
结合这一章所学的设计模式,利用至少两种设计模式实现肯德基点餐功能,这次的作业我采用了java编程语言来实现基本的点餐功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动
5.模拟打印小票的功能(写到文件中)。
分析了基本功能后,我主要是采用了两种设计模式:工厂方法和抽象工厂;通过抽象工厂来实现肯德基套餐类,工厂方法来实现肯德基的单点功能。在编写过程中通过分包使程序更加分明,通过一个主类显示菜单界面并实现点餐功能,最后打印小票(即将信息写入文本文档之中)
二.算法设计
1.定义product接口类,创建接口汉堡类Hamburger和饮品类Beverage来实现继承。
2.汉堡类下有两种类型的汉堡类(chhamburger类和Humtype类),饮品类下也有可乐和咖啡两个饮品类(Cola类和coffee类)来实现接口。
3.分别建立2个接口类(汉堡工厂类Hamburgerfactory和饮品工厂类Beveragefactory),通过四个具体的类(汉堡1类工厂,汉堡2类工厂,可乐工厂,咖啡工厂)来实现接口.
4.套餐的实现利用抽象工厂的方法,建立一个抽象工厂类abstractfactory,再创建具体套餐类combine1和combine2
三.类图
四.关键代码
1.定义product接口类,创建汉堡类Hamburger和饮品类Beverage来实现继承
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2.特定时间的优惠活动
在这里插入图片描述
3.不同的支付方式选择
在这里插入图片描述
4.文件的写入

static void write(String str){ try { FileWriter fw = new
FileWriter(new File(“note.txt”),true);
fw.write("-------------------------" + “\r\n”); fw.write(str);
fw.flush(); fw.close(); } catch (IOException e) {
e.printStackTrace(); } }

五.调试测试及运行结果
1.调试结果:
在这里插入图片描述
2.测试截图及其代码
1.饮品咖啡的测试代码:
coffeefactory df= new coffeefactory();
Coffee cs=(Coffee) df.factorymethod(“MilkCoffee”,3);
System.out.println(cs);
在这里插入图片描述
2.汉堡的测试代码:
Hamburgerfactory fac=new chhamburgerfactory();
Hamburger cheese=fac.factorymethod(“虾堡”,2);
System.out.println(cheese);
3.套餐的测试代码
Combine1 fa=new Combine1();
Hamburger ham=fa.hamburgerfactory();
Cola cl=(Cola)fa.Beveragefactory();
System.out.println(ham);
System.out.println(cl);
在这里插入图片描述
3.运行结果截图:
(1)单点截图
在这里插入图片描述
(2)套餐截图:
正常支付
在这里插入图片描述
优惠券支付(九折优惠)
在这里插入图片描述
(3)支付方式:分为正常支付和优惠券支付
在这里插入图片描述
(4)特定时间优惠
在这里插入图片描述
(5)写入文件
在这里插入图片描述
六.经验归纳和心得
经验归纳:
*文件的写入

import java.io.FileWriter; //核心代码
BufferedWriter bw= new
BufferedWriter(new FileWriter(“E:/address.txt”));
bw.write(“第一行!”);
bw.newLine();
bw.write(“第二行!”);
bw.newLine();
.flush();
bw.close();
*获取当前时间
public class GetCurrentTime { /获得当前时间/
public static String getCurrentTime(){ Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd
HH:mm:ss”); String dateString = formatter.format(currentTime);
return dateString;

}
}

心得:
这次的编程主要是对设计模式的一个掌握,在此次作业中我主要应用了两种设计模式,工厂方法和抽象工厂模式从而实现了基本的点餐功能,查阅了相关设计模式的资料并参考官网和网上的代码,最后设计出了类图,实现了基本功能。其中,还用到了JAVA中获取当前时间的方法和文件的写入,让我对这两个知识点有了进一步的掌握。在此次编程中还可以用到策略模式来实现不同方式的支付,由于时间关系我只利用了普通的选择语句实现了支付方式的选择,后续会再进行优化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值