一、题目要求
请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用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