一、题目要求

请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
程序设计风格良好,控制台界面友好,最多两人一组完成任务。
实现功能测试代码,确保程序的健壮性。
画出使用的设计模式图。
提高要求:
实现可视化界面(使用MFC)。
实现会员储值卡功能,完成储值卡消费。
实现当天营业额和餐品销量计算和统计,用数据库记录。

二、程序分析

1.程序结构
肯德基点餐-编程知识网

2.当程序刚运行时,可以出现一张模拟肯德基的菜单的图片
肯德基点餐-编程知识网

3.定义KFC菜单的接口
肯德基点餐-编程知识网

4.KFC菜单的接口的实现类
肯德基点餐-编程知识网

5.在FoodOrder类中,通过传入的数字,得到相应的食物

肯德基点餐-编程知识网

6.在FoodMoney类中,通过传入的数字,得到相应食物的价格
肯德基点餐-编程知识网

7.Today类来记录——某一天,有多少销售额,有多少销售量

8.创建属性为天数、销售额、销售量的数据库表

肯德基点餐-编程知识网
9.Dao层
肯德基点餐-编程知识网

10.Dao的实现类
肯德基点餐-编程知识网

11.mapper映射文件
肯德基点餐-编程知识网

12.mybatis映射文件
肯德基点餐-编程知识网

13.MyTest类向数据库写入天数、销售额、销售量
肯德基点餐-编程知识网

14 . 最后,模拟小票功能,将内容保存至文件
肯德基点餐-编程知识网

三、UML图

KFCOrder实现了IKFCOder接口
肯德基点餐-编程知识网

Picture类继承Jframe类
肯德基点餐-编程知识网

Applettext类实现ActionListener类,继承Applet类
肯德基点餐-编程知识网

四、测试

用Junit4测试,数据存入数据库
肯德基点餐-编程知识网
肯德基点餐-编程知识网

用Junit4测试KFCOrder对IKFCOder接口的实现
肯德基点餐-编程知识网
肯德基点餐-编程知识网
肯德基点餐-编程知识网

对显示当前时间代码的测试

肯德基点餐-编程知识网

五、运行结果

肯德基菜单,首先,以图片的形式显示菜单

肯德基点餐-编程知识网
选用优惠产品时

肯德基点餐-编程知识网
将计算出来今日订单数与营业额写入数据库中
today代表第几天营业
count代表订单数
money代表营业额

肯德基点餐-编程知识网

结果写入文件

肯德基点餐-编程知识网

选用简约套餐时

肯德基点餐-编程知识网
肯德基点餐-编程知识网
肯德基点餐-编程知识网
将计算出来今日订单数与营业额写入数据库中
today代表第几天营业
count代表订单数
money代表营业额

肯德基点餐-编程知识网

结果写入文件

肯德基点餐-编程知识网

六、总结

  • 遇到的问题及解决

开始写程序时,只想将销售量与营业额写入数据库,count设置为主码,若连续两天的销售量时相同的,则不能写入数据库,因为主码不能重复,为了实现将销售量与营业额写入数据库,则修改以定义好的表,加入一个属性today,设为主码。
肯德基点餐-编程知识网
肯德基点餐-编程知识网

  • 学习使用java中的Applet(小应用程序)显示图片。

1.Applet的编写
新建一个类,该类必须是public且继承Applet,文件名与类名一样

3.Applet类中方法的执行顺序与生命周期
① 先执行构造方法
② 再执行init()进行一些数据,变量初始化
③ 再执行start()方法,start()方法会调用paint()方法进行图形的绘制与显示。一般重写paint()方法即可。

  • 对SSM框架中Mybatis框架的练习

SSM框架中的mybatis框架,可以通过程序,对数据库进行增删改查。mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

// 加载主配置文件InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");// 创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();// 相关操作
sqlSession.insert("insert",today);
sqlSession.commit();
  • 对github的使用

在这次作业中,第一次使用了github仓库来保存代码。在CSDN中学习了github的使用,这个是我学习的网址:https://blog.csdn.net/zuochao_2013/article/details/75948989

七、源代码

github仓库:https://github.com/Andyadore/kfc#kfc