一、实验内容
参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
二、问题分析
实现最基本的功能,即对每个商品对应的价格进行累加,然后进行折扣计算,最后把购买结果写入文件即可。
三、算法设计
首先定义一个商品的抽象类,它包含一个表示购买数目的int类型变量,包含一个商品名和价格的虚函数,同时包含获取商品名和价格的虚函数。实现抽象类,并且建立一个简单工厂来生产具体的商品。然后建立一个账单类,它用来记录一次购买的账目,因为一般一次只处理一个账单,所以它用到了单例设计模式。
四、程序实现
五、运行结果与部分调试截图
运行截图
写文件结果
对链表的运作进行调试
六、总结
因为个人能力的限制以及准备不足的原因,所以仅能实现最基本的功能。即使在这最基本的功能的实现过程中,也遇到了一些问题。我设想的是用链表来存每一次选择商品的结果,但是因为对链表使用的不熟悉,导致不断地有野指针的出现,影响运行。同时c++单例模式的实现与Java略有区别。同时对里氏原则有了更深的认识:在接口回调的时候,直接使用子类的变量,但是可以通过函数来返回我们需要的变量。