项目案例–吃货联盟

一、项目准备:

1.开发环境:

  • JDK1.8
  • IntelliJ IDEA

2.技术点分析:

  • 能理解程序基本概念 – 程序
  • 会使用变量、数据类型
  • 会使用顺序、选择、循环、跳转语句编写程序
  • 会使用数组

3.任务描述:

只要动动手指,就能送餐上门”,网上定餐深受现代人青睐,现开发一个网上订餐系统,功能如下:

  • 我要订餐

  • 查看餐袋

  • 签收订单



  • 删除订单


  • 我要点赞

  • 退出系统

二、需求:

1.需求分析:

买家:

买家订单基本信息-用户名,时间,地址,数量等

卖家:

菜品信息-单价、品种、点赞数

模块划分:

我要订餐–添加–insert -C(create)
查看餐袋–查询–read -R
签收订单–修改–update -U
删除订单–删除–delete -D
基本所有的项目都是在对数据进行增删改查(CRUD)
我要点赞–辅助功能
退出系统–流程控制

2.编写要求:

项目名—Foods
包名–cn.xx.controll
类名–OrderingMsg
项目编写完成需要制作成运行jar及bat文件

3.编写步骤:

定义变量–测试数据–搭建总框:
do…while中嵌套switch,将跳转切换使用数字进行替换
查看订单
查看之前–循环之前先判定是否为空
添加订单
作业:补全是否继续的功能
添加注意打印小票和数组添加数据的分开操作
签收订单:
判定签收的情况:不存在该订单/存在不能签收/签收
删除订单:
将需要删除的数据之后的所有数据全部前移,然后将最后一条废数据清空
我要点赞:
显示菜单,然后将指定的点赞菜品赞加1

三、代码分析:

1.定义变量:

//定义买家变量--数组
String[] names=new String[4];            //订餐人姓名
int[] times=new int[4];                  //订餐时间-整点
String[]  addresses=new String[4];       //订餐地址
String[] dishMegs=new String[4];         //所选菜品信息
double[] sumPrices=new double[4];        //总金额
int[] states=new int[4];                 //订单状态信息//定义卖家菜品变量--数组
String[] dishNames={"大肘子","锅包肉","辣鸭头","麻辣虾"};     //菜品信息
double[] prices={59,58,48,69};                       //菜品单价
int[] praiseNums={4,5};                              //菜品点赞数

2.框架模块:

do{System.out.println("*********************************************");System.out.println("1.我要订餐");System.out.println("2.查看餐袋");System.out.println("3.签收订单");System.out.println("4.删除订单");System.out.println("5.我要点赞");System.out.println("6.退出系统");System.out.println("*********************************************");System.out.println("请选择");num=input.nextInt();switch (num) {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:System.out.println("退出系统");isExit=true;break;default:isExit=true;break;}//判定是否回退到一级菜单if(!isExit){System.out.println("输入0返回");num=input.nextInt();}else{break;}
}while(num==0);
System.out.println("欢迎下次使用!");

3.查看餐袋:

for (int i = 0; i <names.length; i++) {//判定---如果用户信息为空,该订单不进行打印if(names[i]!=null){String state=(states[i]==0)?"已预订":"已完成";String  sumPrice=sumPrices[i]+"元";String time=times[i]+"时";System.out.println((i+1)+" \t\t"+names[i]+" \t\t"+dishMegs[i]+" \t\t"+time+" \t\t"+addresses[i]+" \t\t"+sumPrice+" \t\t"+state);}
}

4.我要订餐:

for (int i = 0; i < names.length; i++) {//往数组添加内容-需要先获取数组空的位置-第一个位置--循环结束掉if(names[i]==null){//进入判定则标志着可以进行数据添加的空位---将标记进行修改isAdd=true;//添加订单System.out.println("请输入用户名");  //模拟登陆String name=input.next();//打印菜品信息System.out.println("序号  \t菜名 \t单价 \t点赞数");for (int j = 0; j < dishNames.length; j++) {String  price=prices[j]+"元";String  praise=(praiseNums[j]>0)?praiseNums[j]+"赞":"";System.out.println((j+1)+" \t"+dishNames[j]+" \t"+price+" \t"+praise);}System.out.println("请输入你选择的菜品的序号");int  chooseDish=input.nextInt();System.out.println("请输入房购买的份数");int number=input.nextInt();//处理订餐信息和订餐总额String dishMeg=dishNames[chooseDish-1]+""+number+"份";double sumPrice=prices[chooseDish-1]*number;//判定是否需要进行配送费:超过50免配送费double deliCharge=(sumPrice>=50)?0:5;    //配送费//配送时间-如果时间输入不正确需要重复输入直到输入正确为止  10  -20System.out.println("请输入配送时间(10-20的整点)送餐");int  time=input.nextInt();/*while(!(time>=10&&time<=20)){System.out.println("您输入的时间不正确,请重新输入");time=input.nextInt();}*/while(time<10 ||time>20){System.out.println("您输入的时间不正确,请重新输入");time=input.nextInt();}System.out.println("请输入送餐地址");String address=input.next();//打印小票System.out.println("订餐成功!");System.out.println("您的订餐是"+dishMeg);System.out.println("餐费是"+sumPrice+",配送费是"+deliCharge+",总金额是"+(sumPrice+deliCharge));//将数据添加到数组中names[i]=name;dishMegs[i]=dishMeg;times[i]=time;addresses[i]=address;sumPrices[i]=sumPrice+deliCharge;//当将当前循环中添加完成以后直接循环结束break;}
}
//如果整个循环结束都没有找到空位,则表示当前餐袋已满
if(!isAdd){System.out.println("对不起,餐袋已满!");
}

5.签收订餐:

for (int i = 0; i <names.length; i++) {//判定---如果用户信息为空,该订单不进行打印if(names[i]!=null){String state=(states[i]==0)?"已预订":"已完成";String  sumPrice=sumPrices[i]+"元";String time=times[i]+"时";System.out.println((i+1)+" \t\t"+names[i]+" \t\t"+dishMegs[i]+" \t\t"+time+" \t\t"+addresses[i]+" \t\t"+sumPrice+" \t\t"+state);}
}

6.删除订单:

for (int i = 0; i < names.length; i++) {if(names[i]!=null&&states[i]==1&&delId==i+1){//能找到订单并可以删除isDelFind=true;//执行删除操作,删除元素以后的所有数据依次移动--后续多个数据for (int j = delId-1; j < names.length-1; j++) {names[j]=names[j+1];dishMegs[j]=dishMegs[j+1];times[j]=times[j+1];addresses[j]=addresses[j+1];states[j]=states[j+1];}//最后一个数据进行清空还原处理names[names.length-1]=null;dishMegs[dishMegs.length-1]=null;times[times.length-1]=0;addresses[addresses.length-1]=null;states[states.length-1]=0;System.out.println("删除订单成功!");break;}else if(names[i]!=null&&states[i]==0&&delId==i+1){//能找到订单但是不能删除isDelFind=true;System.out.println("该订单未签收,不能被删除!");break;}
}//如果循环结束都没有找到订单则表示不存在
if(!isDelFind){System.out.println("您要删除的订单不存在!");
}

7.我要点赞:

for (int i = 0; i < dishNames.length; i++) {String price=prices[i]+"元";String praiseNum=(praiseNums[i]>0)?praiseNums[i]+"赞":"";System.out.println((i+1)+"\t "+dishNames[i]+"\t "+price+"\t "+praiseNum);
}
System.out.println("请输入您需要点赞的菜品序号");
int praiseId=input.nextInt();
//将点赞内容进行自增
praiseNums[praiseId-1]++;
System.out.println("点赞成功!");

注意:

文章为核心代码,如果需要完整代码,可以随时私聊我,也可以加这个企鹅群720994366找管理要。

JAVA项目案例详解带代码相关推荐

  1. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  2. Java 泛型(generics)详解及代码示例、Java 类型通配符详解及代码示例

    Java 泛型(generics)详解及代码示例.Java 类型通配符详解及代码示例 - 概念 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制 ...

  3. java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

    资源名称:<Java Swing图形界面开发与案例详解>PDF 内容简介: <Java Swing图形界面开发与案例详解>全书共20章,其中第1-2章主要介绍有关Swing的基 ...

  4. 多线程(并发)买票的案例详解同步代码块和同步方法 (复习)

    文章目录 前言 简单的原理: 队列+锁 常见的买票案例(线程安全:多个线程操作同一个数据.) 结果: 使用同步代码块或者同步方法(解决线程不安全的问题) 添加的方式一:synchronized 关键字 ...

  5. 防抖节流的实现与区分(详解带代码)

    这是最近自己拍的一张照片,出去散心的时候给自己买了一束花,是桔梗花.这首纯音乐也很好听,推荐给伙伴们~--Tidal Wave 海浪 学过的东西真的要勤复盘才行,温故而知新,才能印在脑子里.这不,之前 ...

  6. 【案例详解-带完整源码】C#通过调用python生成热力图

    目录 效果 方法 C#端 python端 注意事项 源码 源码具体调试步骤 效果 将二维数组 转为热力图: 方法 由于C#没有方便的热力图工具,因此可以调用python程序来生成热力图 C#端 // ...

  7. 代码检查规则:Python语言案例详解

    在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...

  8. Thrift实现C#调用Java开发步骤详解

    概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...

  9. java同步方法完成案例_Java同步代码块和同步方法原理与应用案例详解

    本文实例讲述了java同步代码块和同步方法.分享给大家供大家参考,具体如下: 一 点睛 所谓原子性WOmoad:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况.言外之意是这段代码就像原子一 ...

  10. java 同步块原理_Java同步代码块和同步方法原理与应用案例详解

    Java同步代码块和同步方法原理与应用案例详解 发布于 2020-8-7| 复制链接 摘记: 本文实例讲述了Java同步代码块和同步方法.分享给大家供大家参考,具体如下:一 点睛所谓原子性:一段代码要 ...

最新文章

  1. C++main函数的参数介绍以及如何在main函数前执行一段代码
  2. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - A. 组队
  3. 矩阵A对任意的可逆矩阵p都有Ap=pA,证明A为数量矩阵
  4. 【转载】让页面不缓存js
  5. solaris 常用软件安装
  6. Linux命令行中的特殊符号_特殊字符
  7. powershell快捷键_借助Windows Terminal搞一个花里胡哨的PowerShell终端
  8. 文件夹错误 分配句柄_重启数据库遇到错误ORA27154,ORA27300,ORA27301,ORA27302
  9. 决策树算法原理(下)
  10. Java案例:简易记事本
  11. 西瓜书《机器学习》多元线性回归公式推导
  12. Python计算斐波那契数列
  13. 2015年职场人薪资惬意度调查报告
  14. 在fedora linux中,wine 成功安装手记
  15. 从天天爱消除和节奏大师的用户对于论坛形式的分析
  16. CS 231n 学习笔记 03——课程3.1 损失函数
  17. feynman1999_AI Feynman 2.0:从数据中学习回归方程
  18. ZCANPRO-CAN/CANFD收发软件:安装及使用
  19. intelssd在linux固件升级,Intel固件升级教程修复320系列SSD 8M丢数据问题
  20. python idle免安装绿色版_【亲测能用】Python2.5.1绿色版【Python2.5.1中文版】免安装版安装包免费下载-羽兔网...

热门文章

  1. 网站开发用什么语言好_兰州网站开发哪家策划效果好
  2. python生成wifi字典_用Python自带的itertools生成穷举字典
  3. unity3d改变物体的中心位置_Unity3d粒子特效:制作火焰效果
  4. java文件读取路径_java文件读取路径问与答
  5. Java学习笔记之设计模式(4)适配器模式
  6. php转义还原,PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例_PHP
  7. lesson 040 —— 面向对象简介
  8. 业务逻辑配置化的可选技术方案
  9. jquery简单的选择添加下拉列表
  10. Java之HashMap用法