java实现kfc点餐系统

一、题目分析
1.1、题目要求

  1. 正常餐品结算和找零。
  2. 基本套餐结算和找零。
  3. 使用优惠劵购买餐品结算和找零。
  4. 可在一定时间段参与店内活动(自行设计或参考官网信息)。
  5. 模拟打印小票的功能(写到文件中)。
    基本要求:
  6. 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
  7. 实现功能测试代码,确保程序的健壮性。
  8. 画出使用的设计模式图。
    1.2、算法实现
    1.2.1、使用抽象工厂方法产生食物
    肯德基生产食物,通过抽象方法工厂建立肯德基工厂,建立抽象食物类设置属性,建立食物接口,所有食物类的基类继承抽象食物基类,实现食物接口。
    建立抽象工厂,包含各个食物的创建方法。具体的工厂是这个接口的子类,重写工厂的方法,创建具体食物对象。专门建立一个工厂类用来调用具体工厂中的产生具体食物对象的方法,通过反射,从客户端得知他们需要什么食物,从而生产什么食物。
    1.2.2、使用策略模式实现结算功能
    当付钱的时候可以根据策略的不同选择不同的付钱方式,可以选择支付宝,微信,零钱付款,各个付款方式优惠方式不同,这个可以通过策略模式实现。

二、关键算法构造
2.1、文档注释
2.1.1、食物基类

/*** 食物基类*/
abstract class BaseFood {/*** 类别*/String name;/*** 数量*/int num;/*** 价格*/float price;/*** 合计* @return 食物总价格*/public float totalPrice() {return this.num * this.price;}
}

2.1.2、抽象食物接口

/*** 抽象食物接口*/
interface IFood {/*** 打印输出食物信息*/void printMessage();}

2.1.3、抽象肯德基工厂

/*** 建立工厂* 创建抽象肯德基工厂* 生产抽象食物*/
interface IKfcFactory {/*** 生产帕尼尼* @param num 要买的数量* @return BaseHamburg对象*/BaseHamburg createPaNiNiHamburg(int num);/*** 生产劲脆鸡腿堡* @param num 要买的数量* @return BaseHamburg对象*/BaseHamburg createCrispyChickenHamburg(int num);/*** 生产巧克力华夫* @param num 要买的数量* @return BaseFrenchFries对象*/BaseSweetmeats createChocolateWaffleSweetmeats(int num);/***  生产生产香香红豆派* @param num* @return*/BaseSweetmeats createRedBeanPieSweetmeats(int num);/*** 生产热辣薯片鸡翅* @param num 要买的数量* @return BaseChicken对象*/BaseChicken createHotPotatoChipsChickenWings(int num);/***  生产劲爆香辣鸡翅* @param num 要买的数量* @return BaseChicken对象*/BaseChicken createPiquancyChickenWings(int num);/*** 生产百事可乐* @param num 要买的数量* @return BaseBeverage对象*/BaseBeverage createBaiShiKolaBeverage(int num);/*** 生产咖啡* @param num 要买的数量* @return BaseBeverage对象*/BaseBeverage createCoffeeBeverage(int num);/*** 生产翅桶嫩牛五方套餐* @param num 要买的数量* @return BaseSetMeal对象*/BaseSetMeal createWingBucketTenderFiveSides(int num);/*** 生产辣鸭肉卷人气明星套餐* @param num 要买的数量* @return BaseSetMeal对象*/BaseSetMeal createSpicyDuckRollPopularStarMealBase(int num);
}

2.2、类图设计
kfc抽象工厂设计模式类图(图片分辨率较高,请放大查看),如果实在看不清,请查看下面链接source文件夹下的图片
在这里插入图片描述
三、程序实现
参考以下文件
链接

四、调试、测试及运行结果
4.1调试截图
菜单显示
在这里插入图片描述
当选择1号餐数量为2时
在这里插入图片描述
food为抽象出来的工厂通过餐品选择调用相应的创建创建方法
shouldPayMoney为应该付的钱
在这里插入图片描述
继续选择食物5号食物数量6个

在这里插入图片描述

baseFood为ArrayList数组用来存放选择的餐品,刚才选了芝士帕尼尼和百事可乐,所以存储的是相应的食物
在这里插入图片描述
输入界面
在这里插入图片描述
cutDown为优惠券的价格
giveMoney为客户给的钱
change为找零
shouldPayMoney为应该付的钱
在这里插入图片描述
选择支付宝支付有5元的红包,找零界面
在这里插入图片描述
4.2测试截图
点餐根据菜单点餐,提供友好的输入检查,知道输入正确为止
在这里插入图片描述
选择数量检查,直到输入正确为止
-
输入优惠券界面,进行输入检查
在这里插入图片描述

选择支付方式,选择微信支付,享受95折优惠
在这里插入图片描述
打印小票
在这里插入图片描述

五、经验归纳
第一次接触抽象工厂模式,通过反射的方式获得真正的实例化对象。只会一种方式:专门设计一个类用来实例化其他类的对象,其他类往往有公共的父类,即Food接口,这样使用反射的机制就很好实现,直接通过参数就能够实例化相应的对象。一开始只知道通过接口实现公共的父类,但真正的做的时候,发现每一个食物都有相同的属性要设置,所以要设计一个公共的抽象父类来实现,这样才能赋予每一个子类相关属性。
同时熟练掌握了处理多个食物产品蔟的构建方法,深深感受到了抽象工厂方法模式的优点,和抽象工厂方法比较一下抽象工厂模式进一步扩展了工厂方法模式,它把原先的工厂方法模式中只能有一个抽象产品不能添加产品族的缺点克服了,抽象工厂模式不仅仅遵循了OCP原则,而且可以添加更多产品(抽象产品),具体工厂也不仅仅可以生成单一产品,而是生成一组产品,抽象工厂也是声明一组产品,对应扩展更加灵活,但是要是扩展族系就会很笨重。 所以就选择了抽象工厂模式。
在付钱的时候,使用了策略模式,通过不同的策略选择不同的付款方式,使用策略模式支持开闭原则(OCP)、策略模式使用继承模式抽取公共代码到基类,避免重复代码、策略模式避免使用多重条件判断语句 (if/else、switch 等)。方便了对付款方式的选择。
遗憾的是没有实现提高要求的可视化功能和数据库存储,但是后期学习一定将程序完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29171.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html网页肯德基设计代码作业,Illustrator设计一幅肯德基广告单页制作教程

给各位Illustrator软件的使用者们来详细的解析分享一下设计一幅肯德基广告单页的制作教程。 教程分享: 首先来看一下最终效果图: 本幅广告页面我们很常见,就是一幅肯德基广告页面。在现实生活中,同学可以细心观察身边的事物&#…

kfc扫描点餐系统java_Java实现KFC点餐系统过程解析

这篇文章主要为大家详细介绍了java实现KFC点餐系统,模拟肯德基快餐店的收银系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银…

python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址

随着人们生活水平的提高,肯德基这类的快餐消费的十分火爆,成为小朋友和年轻人的最爱,我们到一个地方想要找到肯德基店面,会根据导航获取肯德基地址,那你知道我们也可以使用python爬虫获取KFC地址吗?我们可以…

爬虫爬取国内肯德基门店信息

预期效果 爬取每个城市(300城市)所有的肯德基门店信息,保存到excel中,效果如下: 代码实现 import requests import csv import jsondef getData(page,key):urlhttp://www.kfc.com.cn/kfccda/ashx/GetStoreList.as…

python爬取肯德基KFC全国门店2021-01-11

python爬取肯德基KFC全国门店 改进版 之前,参考两位网友的代码,爬取全国KFC门店,发现有些许问题。在参考网友代码的基础上,进行改进,最终爬取了全国KFC门店。 思路如下: 第一步:通过KFC门网页…

html网页肯德基设计代码作业,AI快速制作一幅肯德基广告单页教程

这篇AI教程向脚本之家上的朋友介绍AI快速制作一幅肯德基广告单页方法,教程以实例的形式向我们介绍广告单页的制作方法,很实用,也比较简单,喜欢的朋友快来学习一下吧! 首先来看一下最终效果图: 本幅广告页面…

KFC点餐系统

一:要求 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零…

KFC门店信息获取 爬虫实战

最近在帮客户做东西时需要用到kfc的门店信息查询数据,在浏览了一圈博客之后,貌似大家都是采用 selenium PhantomJS 这种方式抓取kfc的ajax动态网页, 其实在分析了一波该网站的请求之后,相对来说还是很简单的一个爬虫,该网站甚至没有做浏览器的验证 url http://www.kfc.…

KFC点餐收银

一、问题描述 参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零。 2.基本套餐结算和找零。 3.使用优惠劵购买餐品结算和找零。 4.可在…

肯德基收银系统

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

肯德基 服务器响应异常,肯德基链接服务器异常

肯德基链接服务器异常 内容精选 换一换 精简视图提供了云服务器资源概况和状态的可视化统计结果,帮助您直观的了解云服务器资源。在精简视图中,您可以快速获取弹性云服务器基本信息、登录信息、配置信息、监控信息。精简视图提供了云服务器资源概况和状态的可视化统计结果,直…

如何在手机上完成日语翻译中文

如何在手机上完成日语翻译中文?作为从小看《海贼王》、《名侦探柯南》、《火影忍者》等一系列日漫长大的我们,自然有一种想要学习日语的冲动。但是学习一种语言不是一朝一夕就能完成的,虽然小编不能让你瞬间学会日语,但是有一种让…

如何将日语在线翻译成中文

如何将日语在线翻译成中文?日本的动漫产业非常发达,作为从小看日漫长大的我们,谁都想学习几句日语或者将我们的口头禅翻译为日语。所以今天小编将要教大家一个方法,帮助小伙伴们快速将日语在线翻译为中文,小伙伴们要不…

以下工具能够翻译日语文字

随着全球化的发展,商务交流越来越频繁,很多企业需要进行日语翻译服务以便更好地沟通和合作;在日本旅游,游客需要与当地人交流并了解当地文化,而日语翻译可以帮助游客更好地跨越语言障碍;学术研究需要涉及到…

日语翻译中文-大家都再用的日语转换中文的转换器

日语翻译中文,今天给大家分享一款英免费翻译软件,我们为什么要选择这款好用的翻译软件,因为汇集了世界最好的几个翻译平台(百度/谷歌/有道),第一点翻译质量高,选择性多。第二点支持各种语言互译…

如何跟聊天机器人一起绘画?

出品人:Towhee 技术团队 顾梦佳 从AI作画背后的 Diffusion 到智能聊天里的 ChatGPT,生成模型的热潮一浪接着一浪,似乎也预示着超大预训练模型就是人工智能的未来。在万众瞩目的 GPT 4.0 “官宣”之前,微软率先发布融合了大语言模型…

科研绘图(编程绘图、网站绘图、配色、素材、提取数...)

配色网站:https://mycolor.space/ 素材网站:https://www.freepik.com/ python:seaborn库:https://zhuanlan.zhihu.com/p/81553421?utm_sourcewechat_session matlab:绘图代码示例:知乎:阿昆的科…

汤姆猫+AI求IP“翻红”?股东年内忙减持

作为初代手机宠物陪伴游戏,“会说话的汤姆猫”曾在全球积累了大量粉丝,汤姆猫IP也成为一代经典。2017年,A股上市公司金科文化将诞生自海外“汤姆猫”收入麾下。你或许不知道,汤姆猫已成为中国A股市场的一只股票代码。 在金科文化…

ChatGPT 驱动的《会聊天的汤姆猫》封测结束,采用生成式 AI 创作美术

金科汤姆猫公司的《会说话的汤姆猫》此前利用 ChatGPT 技术全新打造了《会聊天的汤姆猫》,从技术创新和产品升级的角度来看,这是一次具有积极意义的尝试。但产品功能有所欠缺,且只有安卓平台可用,于 3 月开启封测。 据金科汤姆猫…

Nginx 代理Nexus 页面静态元素(图片)404!

日常踩坑记录。 如果你也遇到了可以尝试修改下看能否改善你的问题。 nginx 旧配置 # Nexus maven 私有仓库location /nexus {proxy_pass http://192.168.128.168:89/nexus;} 访问页面 虽然不影响使用,但是logo 小图标你都不显示,看着不舒服。解决它 …