Kfc点餐

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:

1.正常餐品结算和找零。

2.基本套餐结算和找零。

3.使用优惠劵购买餐品结算和找零。

4.可在一定时间段参与店内活动(自行设计或参考官网信息)。

5.模拟打印小票的功能(写到文件中)。

基本要求:

  1. 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
  2. 实现功能测试代码,确保程序的健壮性。
  3. 画出使用的设计模式图。

提高要求:

  1. 实现可视化界面(使用MFC)。
  2. 实现会员储值卡功能,完成储值卡消费。
  3. 实现当天营业额和餐品销量计算和统计,用数据库记录。

 

一、题目分析

此次作业,我用到了设计模式中的工厂方法模式和抽象工厂模式。建立接口Food,抽象产品AbatractFood,具体产品Hamburger、Chicken、Drinks、Combo,然后建立产品的实现类,建立抽象工厂AbstractFactory,具体工厂KfcFactory。一个具体工厂专门负责一类食物的创建:汉堡类工厂生产汉堡类产品,鸡腿类工厂生产鸡腿类产品,饮料类产品生产饮料类产品,套餐类工厂生产套餐类产品。系统根据顾客的点单信息将信息传给工厂生产相对应的产品。

具体实现:

  1. 建立抽象产品AbstractFood
  2. 建立具体产品Hamburger、Chicken、Drinks、Combo
  3. 建立具体产品的实现类OrleansHamburger、CrayHamburger、ZingerHamburger、SpicyChickenWing、PopcornChicken、OrleansRoastedWing、Kola、Milky、Coffee、ChildrenCombo、ParentChidCombo、StarCombo.
  4. 建立抽象类工厂AbstractFactory生产不同种类的食物
  5. 建立具体类工厂KfcFactory
  6. 建立Client类实现顾客的选择,将工厂作为参数提示工厂生产相应产品。

二、类图设计

Kfc点餐

 三、运行结果

测试类:

Kfc点餐

运行结果: 

Kfc点餐

调试结果:

Kfc点餐

  • 经验总结

此次作业在上次上机作业的基础上,我加深了对设计模式的进一步理解。由于对其他几种模式还没有掌握,此次还是运用了工厂方法模式和抽象工厂模式。

其次对类图的设计也不是特别熟悉,此次掌握了对关联关系,聚合关系,合成关系等的掌握。

1.关联关系:实线箭头

2.聚合关系:空心菱形+实线箭头,其中菱形指向整体

3.合成关系:实心菱形+实线箭头,其中菱形指向整体

4.继承关系:空心三角形+实线

5.实现接口:空心三角形+虚线

6.依赖关系:虚线箭头,其中箭头指向被依赖者

其次,刚开始价格设置成了double型,造成运行结果零钱等价格显示不太符合我们的习惯,如下图所示。因此最后还是改成了float型。

Kfc点餐

在实现模拟打印小票功能,保存文件的功能时,总是会抛出异常,经过和同学讨论后才得以解决。

由于自身能力的不足,此次只是完成了基本要求,并没有实现可视化界面等要求,后面争取实现还没有实现功能,做出可视化界面。

 

 参考博客:https://blog.****.net/Mr__Cat_/article/details/83448749