Kfc点餐
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
- 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
- 实现功能测试代码,确保程序的健壮性。
- 画出使用的设计模式图。
提高要求:
- 实现可视化界面(使用MFC)。
- 实现会员储值卡功能,完成储值卡消费。
- 实现当天营业额和餐品销量计算和统计,用数据库记录。
一、题目分析
此次作业,我用到了设计模式中的工厂方法模式和抽象工厂模式。建立接口Food,抽象产品AbatractFood,具体产品Hamburger、Chicken、Drinks、Combo,然后建立产品的实现类,建立抽象工厂AbstractFactory,具体工厂KfcFactory。一个具体工厂专门负责一类食物的创建:汉堡类工厂生产汉堡类产品,鸡腿类工厂生产鸡腿类产品,饮料类产品生产饮料类产品,套餐类工厂生产套餐类产品。系统根据顾客的点单信息将信息传给工厂生产相对应的产品。
具体实现:
- 建立抽象产品AbstractFood
- 建立具体产品Hamburger、Chicken、Drinks、Combo
- 建立具体产品的实现类OrleansHamburger、CrayHamburger、ZingerHamburger、SpicyChickenWing、PopcornChicken、OrleansRoastedWing、Kola、Milky、Coffee、ChildrenCombo、ParentChidCombo、StarCombo.
- 建立抽象类工厂AbstractFactory生产不同种类的食物
- 建立具体类工厂KfcFactory
- 建立Client类实现顾客的选择,将工厂作为参数提示工厂生产相应产品。
二、类图设计
三、运行结果
测试类:
运行结果:
调试结果:
- 经验总结
此次作业在上次上机作业的基础上,我加深了对设计模式的进一步理解。由于对其他几种模式还没有掌握,此次还是运用了工厂方法模式和抽象工厂模式。
其次对类图的设计也不是特别熟悉,此次掌握了对关联关系,聚合关系,合成关系等的掌握。
1.关联关系:实线箭头
2.聚合关系:空心菱形+实线箭头,其中菱形指向整体
3.合成关系:实心菱形+实线箭头,其中菱形指向整体
4.继承关系:空心三角形+实线
5.实现接口:空心三角形+虚线
6.依赖关系:虚线箭头,其中箭头指向被依赖者
其次,刚开始价格设置成了double型,造成运行结果零钱等价格显示不太符合我们的习惯,如下图所示。因此最后还是改成了float型。
在实现模拟打印小票功能,保存文件的功能时,总是会抛出异常,经过和同学讨论后才得以解决。
由于自身能力的不足,此次只是完成了基本要求,并没有实现可视化界面等要求,后面争取实现还没有实现功能,做出可视化界面。
参考博客:https://blog.****.net/Mr__Cat_/article/details/83448749