【2023,学点儿新Java-15】案例分享:基于Java实现餐厅点餐系统(附完整源代码)

前情回顾:

  • 【2023,学点儿新Java-14】携程面试题:如何看待Java是一门半编译半解释型的语言?| 咨询互联网行业 资深前辈的一些问题 | 附:为什么说ChatGPT的核心算法是…?| GPT-3.5
  • 【2023,学点儿新Java-13】阶段练习之Java面试企业真题(阿里巴巴&拼多多 等) | 常用的Java命令行操作都有哪些 | 如何解决Java的内存泄漏和内存溢出问题?
  • 【2023,学点儿新Java-12】小结:阶段性复习 | Java学习书籍推荐(小白该读哪类Java书籍?有一定基础后,再去读哪类书籍?)
  • 更多Java系列文章,可参阅博主主页哦!

 
所有的弯路都是直的,不要纠结选择的路是否对,去做才知道。

 

🎯作者主页: 追光者♂🔥

        

🌸个人简介:
 
💖[1] 计算机专业硕士研究生💖
 
🌟[2] 2022年度博客之星人工智能领域TOP4🌟
 
🏅[3] 阿里云社区特邀专家博主🏅
 
🏆[4] CSDN-人工智能领域优质创作者🏆
 
📝[5] 预期2023年10月份 · 准CSDN博客专家📝  
 

  • 无限进步,一起追光!!!

        

🍎感谢大家 点赞👍  收藏⭐   留言📝!!!

        

🌿本篇,分享一个Java基础案例——餐厅点餐系统。针对实现的每个功能给出描述并附上具体实现的源代码以及所实现的效果和测试/验证。这是一个比较适合学习完Java基础的朋友练手的小案例(更多Java知识,敬请期待!)

🕝目录

  • 🍄一、功能描述
  • 🍄二、具体实现
    • 🍑2.1 餐厅菜单初始化
    • 🍑2.2 菜单显示
    • 🍑2.3 获取用户输入
    • 🍑2.4 实现点菜功能
    • 🍑2.5 结算账单
    • 🍑2.6 查看账单
    • 🍑2.7 主程序
    • 🍑2.8 完整源代码
  • 🍄三、所实现的效果
    • 🍑3.1 初始化
    • 🍑3.2 测试
      • 💧3.2.1 无账单时:
      • 💧3.2.2 点菜
      • 💧3.2.3 Bug验证

🍄一、功能描述

本案例是一个适合Java中级学习者的小程序,涵盖了Java编程中 常用概念,同时也需要一定的面向对象设计思想。       (不适合Java初学者哈~ 需要具备一定的Java学习经历哦~)

具体而言,整个案例实现了如下功能:

  1. 餐厅菜单初始化:使用initializeMenu()方法 初始化菜单和价格列表。
  2. 菜单显示:使用displayMenu()方法显示菜单,让用户选择点餐选项。
  3. 输入获取:使用getUserInput()方法 获取用户的选择选项。
  4. 点菜功能:使用orderDish()方法进行点菜,包括输入桌号、选择菜品和将菜品加入已点菜单中。
  5. 结算账单:使用calculateBill()方法 显示已点菜品列表和总金额,将订单标记为已付款。
  6. 查看账单:使用displayBill()方法 显示已点菜品列表。
  7. 主程序:包含程序入口和循环逻辑。

🍄二、具体实现

🍑2.1 餐厅菜单初始化

// 初始化菜单private static void initializeMenu() {menu.add("鱼香肉丝");price.add(28.0);menu.add("宫保鸡丁");price.add(32.0);menu.add("酸菜鱼");price.add(38.0);menu.add("干锅牛肉");price.add(48.0);menu.add("清蒸大闸蟹");price.add(68.0);}

🍑2.2 菜单显示

  // 显示菜单private static void displayMenu() {System.out.println("欢迎光临餐厅,请您点餐:");for (int i = 0; i < menu.size(); i++) {System.out.println(i + ": " + menu.get(i) + " " + price.get(i) + "元");}System.out.println("0: 查看账单");System.out.println("1: 点菜");System.out.println("2: 结算账单");}

🍑2.3 获取用户输入

// 获取用户输入private static String getUserInput() {Scanner scanner = new Scanner(System.in);System.out.print("请输入选项:");return scanner.nextLine();}

🍑2.4 实现点菜功能

// 点菜private static void orderDish() {System.out.print("请输入桌号:");Scanner scanner = new Scanner(System.in);tableNumber = scanner.nextInt();System.out.println("已选菜品:");int dishIndex;do {System.out.print("输入菜品编号(输入-1结束点菜):");dishIndex = scanner.nextInt();if (dishIndex != -1) {System.out.println("已点:" + menu.get(dishIndex));orderedList.add(dishIndex);}} while (dishIndex != -1);}

🍑2.5 结算账单

// 结算账单private static void calculateBill() {double total = 0.0;System.out.println("桌号:" + tableNumber + ",已点菜品:");for (int i = 0; i < orderedList.size(); i++) {System.out.println(menu.get(orderedList.get(i)) + " " + price.get(orderedList.get(i)) + "元");total += price.get(orderedList.get(i));}System.out.println("总计:" + total + "元");System.out.println("感谢您的光临,祝您用餐愉快!");isPaid = true;}

🍑2.6 查看账单

 // 显示账单private static void displayBill() {if (orderedList.isEmpty()) {System.out.println("还没有点菜!");return;}System.out.println("桌号:" + tableNumber + ",已点菜品:");for (int i = 0; i < orderedList.size(); i++) {System.out.println(menu.get(orderedList.get(i)) + " " + price.get(orderedList.get(i)) + "元");}}

🍑2.7 主程序

public class Restaurant {private static List<String> menu = new ArrayList<>(); // 菜单列表private static List<Double> price = new ArrayList<>(); // 菜品对应的价格列表private static List<Integer> orderedList = new ArrayList<>(); // 已点菜品列表private static int tableNumber; // 餐桌号private static boolean isPaid = false; // 是否已付款public static void main(String[] args) {initializeMenu(); // 初始化菜单while (!isPaid) {displayMenu(); // 显示菜单String input = getUserInput(); // 获取输入switch (input) {case "0":displayBill(); // 显示账单break;case "1":orderDish(); // 点菜break;case "2":calculateBill(); // 结算账单break;default:System.out.println("无效输入!");break;}}}

🍑2.8 完整源代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Restaurant {private static List<String> menu = new ArrayList<>(); // 菜单列表private static List<Double> price = new ArrayList<>(); // 菜品对应的价格列表private static List<Integer> orderedList = new ArrayList<>(); // 已点菜品列表private static int tableNumber; // 餐桌号private static boolean isPaid = false; // 是否已付款public static void main(String[] args) {initializeMenu(); // 初始化菜单while (!isPaid) {displayMenu(); // 显示菜单String input = getUserInput(); // 获取输入switch (input) {case "0":displayBill(); // 显示账单break;case "1":orderDish(); // 点菜break;case "2":calculateBill(); // 结算账单break;default:System.out.println("无效输入!");break;}}}// 初始化菜单private static void initializeMenu() {menu.add("鱼香肉丝");price.add(28.0);menu.add("宫保鸡丁");price.add(32.0);menu.add("酸菜鱼");price.add(38.0);menu.add("干锅牛肉");price.add(48.0);menu.add("清蒸大闸蟹");price.add(68.0);}// 显示菜单private static void displayMenu() {System.out.println("欢迎光临餐厅,请您点餐:");for (int i = 0; i < menu.size(); i++) {System.out.println(i + ": " + menu.get(i) + " " + price.get(i) + "元");}System.out.println("0: 查看账单");System.out.println("1: 点菜");System.out.println("2: 结算账单");}// 获取用户输入private static String getUserInput() {Scanner scanner = new Scanner(System.in);System.out.print("请输入选项:");return scanner.nextLine();}// 点菜private static void orderDish() {System.out.print("请输入桌号:");Scanner scanner = new Scanner(System.in);tableNumber = scanner.nextInt();System.out.println("已选菜品:");int dishIndex;do {System.out.print("输入菜品编号(输入-1结束点菜):");dishIndex = scanner.nextInt();if (dishIndex != -1) {System.out.println("已点:" + menu.get(dishIndex));orderedList.add(dishIndex);}} while (dishIndex != -1);}// 结算账单private static void calculateBill() {double total = 0.0;System.out.println("桌号:" + tableNumber + ",已点菜品:");for (int i = 0; i < orderedList.size(); i++) {System.out.println(menu.get(orderedList.get(i)) + " " + price.get(orderedList.get(i)) + "元");total += price.get(orderedList.get(i));}System.out.println("总计:" + total + "元");System.out.println("感谢您的光临,祝您用餐愉快!");isPaid = true;}// 显示账单private static void displayBill() {if (orderedList.isEmpty()) {System.out.println("还没有点菜!");return;}System.out.println("桌号:" + tableNumber + ",已点菜品:");for (int i = 0; i < orderedList.size(); i++) {System.out.println(menu.get(orderedList.get(i)) + " " + price.get(orderedList.get(i)) + "元");}}
}

 

🍄三、所实现的效果

🍑3.1 初始化

可以看到如下选项:

在这里插入图片描述

🍑3.2 测试

我们可以根据提示 来输入选项进行点餐等一系列操作:

💧3.2.1 无账单时:

当我们尚未点餐,就查看账单时:即输入0,可以看到“还没有点菜!”的提示,如下图所示:

在这里插入图片描述

💧3.2.2 点菜

同样地,根据提示 正常操作即可点菜:

在这里插入图片描述

💧3.2.3 Bug验证

当然,还是存在不少的小bug,有待于进一步优化。例如:

在这里插入图片描述

 

至于优化,敬请期待咯~

大家也可以自己练习一下,总之是一个很简单的小项目!

 


 

🍒 热门专栏推荐

  • 🥇Python&AI专栏:【Python从入门到人工智能】
  • 🥈前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 🥉文献精读&项目专栏:【小小的项目 (实战+案例)】
  • 🍎C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • 🍏Java系列(Java基础/进阶/Spring系列/Java软件设计模式等)
  • 🌞问题解决专栏:【工具、技巧、解决办法】
  • 📝 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

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

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

相关文章

文心一言作画:有点东西但不多...

随着ChatGPT的持续火热 与AI领域有关的话题 是越来越热闹了 前几天百度发布 “文心一言” 自然也成了网友们 重点关注的对象 不过大家的目光主要还是集中在 文心一言的绘画功能上 在人工智能加成下出来的画面 一个比一个绝 成功颠覆 大家对绘画的认知 生意火爆的商铺…

网传文心一言的魔性作图,有点被吓到...

来源&#xff1a;菜鸟教程 近日看到网友们用百度文心一言来作图&#xff0c;看了后我都愣住了。。。 1、AI 作画 -- 车水马龙 2、AI 作画 -- 驴肉火烧 3、AI 作画 -- 唐伯虎点秋香 4、AI 作画 -- 鱼香肉丝 5、AI 作画 -- 胸有成竹 6、AI 作画 -- 夫妻肺片 7、AI 作画 -- 红烧狮…

文心一言的魔性作图,我愣住了。。。

点关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 最近&#xff0c;百度推出自己的AI大模型“文心一言”&#xff0c;李彦宏在发布会上表示&#xff0c;目前百度是全球大厂中第一个做出对标 ChatGPT 产品的企业。 但是&#xff0c;今天看到网友们用它来作图&a…

那些在学习GPT的过程中学到的

1、大模型是什么 GPT横空出世之后&#xff0c;大模型火了&#xff0c;什么是大模型呐&#xff1f; 大模型通常指的是具有大规模参数和复杂结构的深度学习模型。它们的设计和结构可以因任务而异&#xff0c;但以下是一些常见的大模型结构&#xff1a; Transformer&#xff1a…

LangChain 介绍及相关组件使用总结

一、langChain LangChain 是一个由语言模型LLMs驱动的应用程序框架&#xff0c;它允许用户围绕大型语言模型快速构建应用程序和管道。 可以直接与 OpenAI 的 ChatGPT 模型以及 Hugging Face 集成。通过 langChain 可快速构建聊天机器人、生成式问答(GQA)、本文摘要等应用场景。…

第一代AIGC硬件悄然爆发

文 | 智能相对论 作者 | 叶远风 看起来&#xff0c;这可能是一副正常的黑框眼镜&#xff0c;你戴上去彬彬有礼、斯斯文文&#xff1b; 实际上&#xff0c;它里边还装了一个“小伙伴”&#xff0c;你随时可以与它交流&#xff0c;谈天说地或者提出各种问题接受它的帮助&#x…

chatgpt赋能python:小黑框:Python程序员必备利器

小黑框&#xff1a;Python程序员必备利器 如果您是一名Python程序员&#xff0c;小黑框&#xff08;Terminal&#xff09;一定不陌生。小黑框是一种基于文本的用户界面&#xff0c;通常用于执行命令行任务&#xff0c;编写或调试代码等。Python程序员可以通过小黑框完成许多任…

游戏开发中防外挂的那些事儿

对于一个要上线的游戏&#xff0c;防外挂是必须的&#xff0c;历史上因为外挂而造成大量玩家流失的游戏数不胜数。随着游戏研发技术的发展&#xff0c;对外挂的预防业内其实做的已经越来越好了。下面总结一下防外挂的基础知识&#xff0c;以及我们的移动模块为防外挂做了哪些工…

游戏反外挂技术原理讲解

永远在路上 没有破解不了的反外挂系统&#xff0c;反外挂是一个对抗过程&#xff0c;需要不断升级。我们反外挂小组会采取对抗方式提升防御&#xff0c;也会研究竞品来获取灵感。反外挂也是非常有意思的&#xff0c;可以学到很多很多底层知识。 善战者无赫赫之功 反外挂&#x…

各网游的外挂是如何做出来的?

每一个致力于学习黑客技术的人&#xff0c;最后都分为三种人。 第一种&#xff1a;入侵&#xff0c;各种入侵&#xff0c;玩的就是入侵的快感&#xff0c;或者恶作剧的喜感&#xff0c;或者那种有特殊“窥视”癖好的人……别误会&#xff0c;小编我是喜欢“恶作剧&#xff0c;…

干货!什么是游戏外挂,外挂的种类及实现原理

外挂&#xff0c;原指一切用来破坏游戏程序正常游戏数据和逻辑的工具或破解版。比如可以修改游戏内存数据的修改器&#xff0c;又比如可以修改网络数据包的抓包工具。这类外挂或多或少会影响游戏的内存数据、文件数据、网络数据&#xff0c;甚至代码逻辑。 但随着外挂市场的发…

游戏外挂怎么做?

文章目录 1.什么是游戏外挂2.外挂的分类及实现原理2.1 辅助类外挂2.2 专用插件类外挂2.3 通用工具2.4 内存修改器2.5 变速器2.6 按键精灵2.7 模拟器2.8 破解版 转载自&#xff1a;Anti-Cheat Expert 游戏安全专家 干货&#xff01;什么是游戏外挂&#xff0c;外挂的种类及实现原…

哈夫曼树 例题

假设某棵二叉树有N个叶结点。给定这些叶结点的权值&#xff0c;求所有可能的二叉树中带权路径长度&#xff08;WPL&#xff09;的最小值。 注&#xff1a; 结点的带权路径长度&#xff08;WPL&#xff09;&#xff1a;结点的权值乘以该结点的深度&#xff08;假设根节点的深度…

svn更新/提交代码提示错误 , 进行清理下“破除写锁操作“

1.如果svn提交或者更新代码有--进行清理下"破除写锁操作"--此提示,一般情况下右键,然后选择进行确定就可以 2.如果还不行的话,在项目下的 .svn 文件夹里面新建文件夹,命名为tmp,然后重新更新,提交,就会发现问题解决了

2022年深圳杯数学建模A题代码思路-- 破除“尖叫效应”与“回声室效应”,走出“信息茧房”

问题重述&#xff1a; 在全新的信息传播格局下&#xff0c;如何破除“尖叫效应”与“回声室效应”&#xff0c;走出“信息茧房”&#xff0c;是当前迫切需要解决的现实问题&#xff0c;即如何从信息传输的顶层设计、推荐算法的公平性和广大网络用户的责任担当等方面&#xff0…

钉钉最新点赞破除限制方法(

我不是标题党&#xff01; 首先&#xff0c;放图片&#xff08;&#xff08;&#xff08; 时间这里是录视频的时间&#xff0c;2021-8-27&#xff0c;不是标题党&#xff01; 上方法&#xff01; 主要原理&#xff1a;利用抓包抓到的点赞api端口&#xff0c;实现持续点击或…

亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序

文章目录 一、我所认识的低代码平台二、Serverless的使用场景三、拖拉跩实现build on 的Serverless1. 使用图像界面创作方法2. 拖拉跩模块实现搭建3. 实时测试流程是否正确4. 最终的设计和流程图 四、创建端到端的基于vue的前端图形化界面六、总结与活动链接 一、我所认识的低代…

一小段Python代码,破解加密zip文件的密码

Python 有一个内置模块 zipfile 可以解压 zip 压缩包。先来测试一波&#xff1a;创建一个测试文件&#xff0c;压缩&#xff0c;设置解压密码为123。 import zipfile# 创建文件句柄 file zipfile.ZipFile("测试.zip", r) # 提取压缩文件中的内容&#xff0c;注意密码…

开源治理工具选一个

随着开源技术在云计算、大数据、AI领域的不断运用&#xff0c;不断破除技术壁垒&#xff0c;让企业快速建立自身的应用&#xff0c;在开源软件基础一&#xff0c;自主研发部分代码&#xff0c;便可以推出企业自身品牌的产品&#xff0c;开源技术的应用极大的推动了云计算、大数…

机器人微控制器编程(CoCube)-破除定势

从课程到生活&#xff1b; 从书本到理想&#xff1b; 从程序到生态&#xff1b; 从个体到集群&#xff1b; 从特殊到一般&#xff1b; 从传统到现代&#xff1b; 从技术到科学&#xff1b; 从理论到工程&#xff1b; 从基础到高阶。 …… 课程归根结底&#xff0c;是为学生服务…