Java基础 吃货联盟订餐系统 您所在的位置:网站首页 吃货联盟系统完整代码Python Java基础 吃货联盟订餐系统

Java基础 吃货联盟订餐系统

2024-07-07 12:04| 来源: 网络整理| 查看: 265

到这里我们的思路就差不多了,

我们发现,一个订单中的信息有很多,单个的变量属实不方便,所以我们利用数组来完成这次项目的开发

我们获取到的信息为

订餐人姓名 订餐人地址 订单状态 订餐份数 送餐时间

菜品名称 菜品单价 点赞数量 总价

操作者为管理员类,我们录入多条订单信息,操作者来执行相应的操作

搭建框架

=======================================================================

下面我们正式进入开发

我们首先搭建框架,代码示例如下:

DecimalFormat df = new DecimalFormat("####0.00");//配置double类型保留前两位小数 Scanner sca = new Scanner(System.in);//控制台输入工具 //数据主体,一组订单信息 String[] names = {"User1", "User2", null, null, null};//订餐人姓名 String[] addresses = {"村西头001", "村西头002", "", "", ""};//订餐地址 int[] states = {1, 0, 0, 0, 0};//订单状态 0:未签收 1:已签收 int[] nums = {2, 3, 0, 0, 0};//订餐份数 int[] times = {12, 19, 0, 0, 0};//送餐时间 //固定信息 String[] dishNames = {"红烧带鱼", "糖醋排骨", "清蒸大闸蟹", "糖醋鱼", "糖醋里脊", "拍黄瓜"};//菜品名称 double[] dishPrices = {29.9, 39.9, 59.9, 29.9, 19.9, 99.99};//菜品单价 int[] priaiseNums = {10, 10, 10, 10, 10, 10};//点赞数量 double[] sumMoney = {59.8, 119.7, 0, 0, 0};//总价格 boolean isExit = false;//标注用户是否退出系统 true:退出系统 System.err.println("欢迎来到吃货联盟订餐系统"); do{ System.out.println("***********************\n" + "1.我要订餐\n" + "2.查看订单\n" + "3.签收订单\n" + "4.删除订单\n" + "5.我要点赞\n" + "6.退出系统\n" + "***********************\n" + "请根据序号进行选择:"); switch(sca.next()){ case "1": System.out.println("***我要订餐***"); break; case "2": System.out.println("***查看餐袋***"); break; case "3": System.out.println("***签收订单***"); break; case "4": System.out.println("***删除订单***"); break; case "5": System.out.println("***我要点赞***"); break; case "6": isExit = true; break; } }while(!isExit); if (isExit) {//判断是否成功退出系统 System.out.println("感谢使用,再见!"); } sca.close();//关闭资源

项目基本框架搭建完毕,下面我们进入实现功能的代码编写。

编写功能

=======================================================================

1.我要订餐功能

该功能简要概述:

首先我们需要通过循环来获取是否有空位可以订餐,默认数组长度为4,一旦数组中没有空位做出相应的提示,有空位就收集用户的信息。

代码如下:

case "1": System.out.println("***我要订餐***"); int count = 0;//利用计数法判断存储空间是否存满 0:已存满 -1:未存满 for (int i = 0; i < names.length; i++) { if (names[i] == null) {//找到空位,可以添加信息 System.out.println("请输入您的姓名:"); String name = sca.next(); System.out.println("菜品序号\t菜品名称\t菜品单价\t点赞数量"); for (int j = 0; j < dishNames.length; j++) { System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + dishPrices[j] + "\t" + priaiseNums[j]); } System.out.println("请选择您要点的菜品序号:"); int choise = sca.nextInt(); System.out.println("请选择您要点的份数:"); int number = sca.nextInt(); double money = dishPrices[choise-1] * number; double sum = money > 50 ? 0 : 10;//如果菜品总价大于50,无配送费,反之配送费10元 money += sum;//累加配送费 System.out.println("请输入配送时间(送餐时间10:00~20:00送餐):"); int time = sca.nextInt(); while (!(time > 10 && time < 20)) { System.out.println("该时间点本店不送餐,请您重新输入:"); time = sca.nextInt(); } System.out.println("请输入送餐地址:"); String addr = sca.next(); //添加数据 names[i] = name; nums[i] = number; dishPrices[i] = money; times[i] = time; addresses[i] = addr; count = -1; System.out.println("订餐成功~"); System.out.println("订餐人姓名:" + name + "\n所定菜品:" + dishNames[choise - 1] + "\n购买份数:" + number + "份\n送餐地址:" + addr + "配送费:" + sum + "共计:¥" + money); System.out.println(dishNames[choise-1] + "菜品将在" + time + "点之前送达,请您注意短信提醒!"); break; } } if (count == 0) { System.out.println("存储空间已满,无法存储!"); } break;

2.查看餐袋

简要概述:该功能实现就比较简单了,直接循环遍历信息即可,需要注意的是,订单状态不能显示出来数字(我们利用三目运算符来判断当前订单的状态) 0:未签收 1:已签收

case "2": System.out.println("***查看订单***"); System.out.println("订单序号\t订单人\t所选菜品\t购买份数\t菜品单价\t送餐地址\t订单状态\t共计"); for (int i = 0; i < names.length; i++) { if (names[i] != null) { //利用三目运算符来判断当前订单的状态 String state = states[i] == 0 ? "未签收" : "已签收"; System.out.println((i + 1) + "\t" + names[i] + "\t" + dishNames[i] + "\t" + nums[i] + "\t¥" + dishPrices[i] + "\t" + addresses[i] + "\t" + state + "\t¥" + dishPrices[i]); } } break;

3.签收订单

简要概述:我们首先循环遍历出来订单信息,然后让用户根据序号进行签收订单。

签收订单大概分为3种情况,

1.输入正确的序号且当前状态为未签收,这种情况可以签收

2.输入正确的序号且当前状态为已签收还未删除,这种情况须作出相应的提示

3.输入序号不存在。作出提示。

代码如下:

case "3": System.out.println("***签收订单***"); int signCount = 0; for (int i = 0; i < names.length; i++) { if (names[i] != null) { String state = states[i] == 0 ? "未签收" : "已签收"; System.out.println((i + 1) + "\t" + names[i] + "\t" + dishNames[i] + "\t" + state); } } System.out.println("请输入要签收的订单序号:"); int signOrderId = sca.nextInt(); for (int i = 0; i < names.length; i++) { if (names[i] != null && states[i] == 0 && signOrderId == i + 1) { states[i] = 1; signCount = -1; System.out.println("签收成功~"); } else if (names[i] != null && states[i] == 1 && signOrderId == i + 1) { System.out.println("您选择的订单已签收,不能再次签收!"); signCount = -1; } } if (signCount == 0) { System.out.println("您输入的编号不存在,签收失败!"); } break;

4.删除订单

简要概述:该功能我们利用双重循环后推前的原理来实现,也是大概分为3种情况

1.输入正确的序号且当前状态为未签收,这种情况不可以删除

2.输入正确的序号且当前状态为已签收,这种情况可以删除

3.输入序号不存在。作出提示。

代码如下:

case "4": System.out.println("***删除订单***"); for (int i = 0; i < names.length; i++) { # 面试结束复盘查漏补缺 每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。 **以下最新总结的阿里P6资深Java必考题范围和答案**,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~ **重要的事说三遍,关注+关注+关注!** ![历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer](https://img-blog.csdnimg.cn/img_convert/ca9df9f318bf91825d8eaadea61bc1bd.webp?x-oss-process=image/format,png) ![image.png](https://img-blog.csdnimg.cn/img_convert/cc6f692972f7155ec0e4fb4a0c25ac8f.webp?x-oss-process=image/format,png) **更多笔记分享** ![历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer](https://img-blog.csdnimg.cn/img_convert/4009675db06de04e48d2dec38c922e09.webp?x-oss-process=image/format,png) out.println("***删除订单***"); for (int i = 0; i < names.length; i++) { # 面试结束复盘查漏补缺 每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。 **以下最新总结的阿里P6资深Java必考题范围和答案**,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~ **重要的事说三遍,关注+关注+关注!** [外链图片转存中...(img-aAINPYVn-1714130578555)] [外链图片转存中...(img-9xo1hEE7-1714130578556)] **更多笔记分享** [外链图片转存中...(img-PNmpGZqw-1714130578556)] > **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有