/*** 1、创建一个可以更改容量的数组,并创建相应的信息存储数组。* 2、建立用户登录账号界面,进入后方可操作,并建立switch来供用户选择。* 3、建立我要点餐输入订餐人姓名,存储订餐人的菜单,份数,地址,送餐时间等等。* 4、建立查询餐袋选项,用for循环遍历,高级for不能使排版整齐。* 5、建立签收选项,先for遍历出菜单信息,在进行变量的声明的if操作。* 6、建立删除选项,先for遍历出菜单信息,在判断是否签收,还有强制签收操作,* 用for排序使被删除的对应数组索引值覆盖,并清空最后一个索引值。* 7、建立点赞选项,for遍历出菜单,更具用户选择,存到对应数组。* 8、退出选项。* 9、建立非常规操作的提示信息,防止用户不安套路出牌。* @author 周太阳* @version 1.0*/
import java.util.Scanner;
public class OrderingMgr {// 练习函数 user 用于存储账号密码public static String[][] user;// arrays 定义数组容量public static int arrays = 4;;public static void main(String[] args) {Scanner input = new Scanner(System.in);// 管理员密码user = new String[3][2];user[2][0] = "aaa";System.out.println("请输入密码:");// 管理员输入密码String password = input.next();// 管理员更改数组长度if(password.equals(user[2][0])) {System.out.println("=====欢迎来到管理员界面=====");System.out.print("请输入要更改数组容量的最大值:");arrays = input.nextInt();}else {System.out.println("密码错误!");}// 存储姓名String[] names = new String[arrays];// 存储菜单String[] menu = new String[arrays];// 存储订餐时间int[] times = new int[arrays];// 存储订餐地址String[] addresses = new String[arrays];// 存储订餐状态int[] states = new int[arrays];// 存储订单总金额double[] sumPrices = new double[arrays];// 存储菜品信息String[] dishNames = { "红烧帝王蟹", "炝锅鱿鱼虾", "美洲炒虾尾", "火爆大鱿鱼"};// 存储菜品价格double[] prices = {202.5, 80.5, 100.66,66.6};// 存储点赞数int[] praiseNums = {666, 555, 678, 777};// 存储时间String[] date = new String[arrays];// 订单编号,每存储一个订单,i+1int i = 0;// 定义一个标签,没点餐时限制其他菜单进入boolean flag = true;// 附加费5元double sendPrices = 5;// 登陆界面start:do {System.out.println("今日预计接待" + names.length + "人,加油!!!");System.out.println("欢迎使用“☆★☆吃货联盟订餐系统2x v1.0 plus+版☆★☆”");System.out.println("1、登陆\n2、注册\n");String userChoose = input.next();switch(userChoose) {// 登陆case "1":if(user[1][1] == null) {System.err.println("未注册,请先注册!");break;}// 输入账号密码while(true) {System.out.print("请输入账号:");user[0][0] = input.next();System.out.print("请输入密码:");user[0][1] = input.next();if(user[0][0].equals(user[1][0]) && user[0][1].equals(user[1][1]) ) {System.out.println("登陆成功,下面开始吃货之旅!");flag = false;break;}else {System.err.println("账号或密码不正确!请重新输入");}}break;case "2":// 注册界面while(true) {System.out.print("请输入账号:");user[1][0] = input.next();System.out.print("请输入密码:");user[1][1] = input.next();System.out.println("注册成功,是否进入吃货联盟订餐系统?(y/n)");String y = input.next();if(y.equalsIgnoreCase("y")) {flag = false;break start;}else {break;}}break;           default:System.err.println("输入错啦,这里只有两个选项啊=_=");    }}while(flag);// 吃货联盟菜单do {System.out.println("欢迎使用“☆★☆吃货联盟订餐系统2x v1.0 plus+版☆★☆”");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.print("请选择:");String choose = input.next();switch (choose) {// 我要订餐case "1":// 数组没空位,限制进入if(names[names.length - 1] != null) {System.out.println("生意太火爆了,订单已满,直接去店里面坐吧");break;}System.out.println("***我要订餐***");// 订餐循环outer: while (true) {System.out.print("请输入订餐人姓名:");names[i] = input.next();System.out.println("序号\t菜名\t\t单价\t\t好评数");// 遍历菜单for (int j = 0; j < dishNames.length; j++) {System.out.println((j + 1) + "\t" + dishNames[j] + "\t\t" + prices[j] + "\t\t" + praiseNums[j] + "元");}System.out.print("请输入要选择的菜品序号(满100元免送餐费):");// 点餐序号int userNum = 0;// 限制用户不安套路出牌while(true) {// 判断是否输入不为整数while (!input.hasNextInt()) {System.err.println("别想玩我╮(╯▽╰)╭请按套路出牌!");// 再次输入input.next();}// 输入正确给点餐序号赋值userNum = input.nextInt();// 如果输入的点餐序号不在菜单内且不能使负数,菜品不为空就进入下一环节if((userNum - 1) < dishNames.length && (userNum - 1) > -1&& dishNames[userNum - 1] != null) {break;}else {System.err.println("╮(╯▽╰)╭你想来盘空气吗?张张嘴就有。");}}// 点餐份数int portion = 0;System.out.println("请输入份数(满100元免送餐费):");// 输入点餐份数,各种骚操作封锁while(true){// 判断是否输入不为整数while (!input.hasNextInt()) {System.err.println("别想玩我╮(╯▽╰)╭请按套路出牌!");// 再次输入input.next();}// 输入正确给点餐份数赋值portion = input.nextInt();// 如果份数是负数if(portion < 0) {System.out.println("负数啊~~~我也想到了,你想给老板钱吗?(ˉ(∞)ˉ)");// 如果份数等于0}else if(portion == 0){System.err.println("不要就算啦(╰_╯)#浪费我来显示!!");// 退出订餐break outer;}else {break;}}// 计算菜品和份数存入第i位用户菜单menu[i] = dishNames[userNum - 1] + portion + "份"; // 送餐时间循环while (true) {System.out.println("请输入送餐时间(10点到20点之间送餐):");// 判断是否输入不为整数while (!input.hasNextInt()) {System.out.println("请输入正确的数字:");// 再次输入input.next();}// 输入正确给第i为送餐时间赋值times[i] = input.nextInt();// 送餐时间在10点到20点if (times[i] >= 10 && times[i] <= 20) {date[i] = times[i] + "点";break;} else {System.out.println("在送餐时间外,我们不配送的,请选择重新选择!");}}System.out.println("请输入您的地址:");// 客户地址String address = input.next();// 存入客户地址到第i个地址数组addresses[i] = address;// 计算总金额存入第i个金额数组sumPrices[i] = prices[userNum - 1] * portion;// 未满100元,需要加送餐费5元if (sumPrices[i] < 100) {System.out.println("未满100元,需要加送餐费5元.");sumPrices[i] += 5;}System.out.println("订餐成功!");System.out.println("您的订餐信息为:");System.out.println("序号\t订餐人\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t配送费");// 遍历订单for (int k = 0; k < names.length; k++) {if (names[k] != null) {System.out.println((k + 1) + "\t" + names[k] + "\t" + menu[k] + "\t" + date[i] + "\t"+ addresses[k] + "\t\t\t" + sumPrices[k] + "元" + sendPrices + "元");}}// 是否正确System.out.println("确定?<y/n>");String yesOrNo = input.next();if (yesOrNo.equalsIgnoreCase("y")) {// 正确就开启菜单功能flag = true;i++;break outer;}continue;}break;// 查看餐袋case "2":// 判断是否有人已经点过餐if(flag) {// 查看餐袋循环while(true) {System.out.println("***查看餐袋***");System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");// 遍历餐袋for (int j = 0; j < names.length; j++) {// 不遍历空的元素if (names[j] != null) {// 订单状态0为预定,不等于0为完成String state = (states[j] == 0) ? "已预订" : "已完成";// 送餐时间date[j] = times[j] + "点";// 总金额String sumPrice = sumPrices[j] + "元";System.out.println((j + 1) + "\t" + names[j] + "\t\t" + menu[j] + "\t" + date[j] + "\t"+ addresses[j] + "\t\t\t" + sumPrices[j] + "元" + "\t" + state + sendPrices + "元");}}// 是否继续if(isContinue()) {break;}else {continue;}}}else {System.err.println("关关雎鸠,在河之洲。饿肚吃货,老板好逑~请等等顾客点菜吧-_-|||");}break;// 签收订单case "3":// 判断是否有人已经点过餐if(flag) {order: do {System.out.println("***签收订单***");System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");for (int k = 0; k < names.length; k++) {// 不遍历空的元素if (names[k] != null) {// 订单状态0为未签收,不为0为已签收String state = (states[k] == 0) ? "未签收" : "已签收";System.out.println((k + 1) + "\t" + names[k] + "\t\t" + menu[k] + "\t" + date[k] + "\t" + addresses[k] + "\t\t\t" + sumPrices[k] + "元" + "\t" + state + sendPrices + "元");}}System.out.println("请选择要签收的订单:");// 选择订单标记int sign = 0;while(true) {// 判断是否输入为整数while (!input.hasNextInt()) {System.err.println("别想玩我╮(╯▽╰)╭请输入正确格式的订单号:");// 再次输入input.next();}// 输入正确给予赋值sign = input.nextInt();// 判断非正常值if(sign-1 < names.length && (sign - 1) > -1) {break;}else {System.err.println("别想玩我╮(╯▽╰)╭请输入正确的序号!");}}// 遍历订单for (int j = 0; j < names.length; j++) {// 不遍历空订单if ((sign - 1) < names.length && names[sign - 1] != null) {// 判断订单是否签收if (states[sign -1] == 1) {System.err.println("订单已签收!无需再次签收!");} else {// 签收成功赋值并退出循环states[sign - 1] = 1;System.out.println("订单签收成功!");break;}} else {System.err.println("订单不存在哎?_?");continue order;}}// 判断是否返回主菜单} while (!isContinue());}else {System.err.println("关关雎鸠,在河之洲。败金饿肚,老板好逑~请等等顾客点菜吧-_-|||");}break;// 删除订单case "4":// 判断是否有人已经点过餐if(flag) {exit:do {System.out.println("***删除订单***");System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");// 遍历订单for (int j = 0; j < names.length; j++) {// 不遍历空的订单if (names[j] != null) {// 查看状态String state = (states[j] == 0) ? "已预订" : "已完成";// 存订单时间date[j] = times[j] + "点";String sumPrice = sumPrices[j] + "元";System.out.println((j + 1) + "\t" + names[j] + "\t\t" + menu[j] + "\t" + date[j] + "\t"+ addresses[j] + "\t\t\t" + sumPrices[j] + "元" + "\t" + state + sendPrices + "元");}}// 删除订单序号int num = 0;while(true) {System.out.println("请输入要删除的订单序号:");// 判断非正常输入while (!input.hasNextInt()) {System.err.println("又开始玩了╮(╯▽╰)╭请输入正确格式的订单号!");// 继续输入input.next();}// 输入正确赋值num = input.nextInt();// 判断是否有此订单if((num - 1) < names.length && (num - 1) > -1 && names[num - 1] != null) {break;}else {System.err.println("手抖了吧( ⊙ o ⊙ )啊!╮(╯▽╰)╭无此订单!");// 是否继续if(isContinue()) {break exit;}else {continue;}}}// 判断订单状态是否已签收if (states[num - 1] == 1) {// 已签收,删除订单且后面订单往前移清空最后一个订单for (int j = (num - 1); j < (names.length - 1); j++) {    names[j] = names[j + 1];menu[j] = menu[j + 1];times[j] = times[j + 1];date[j] = date[j + 1];addresses[j] = addresses[j + 1];sumPrices[j] = sumPrices[j + 1];states[j] = states[j + 1];int endDel = (names.length - 1);names[endDel] = null;menu[endDel] = null;times[endDel] = 0;date[endDel] = null;addresses[endDel] = null;sumPrices[endDel] = 0;states[endDel] = 0;if(names[0] == null) {flag = false;break;}}System.out.println("成功删除订单!");// 如果订单未签收判断是否强制删除} else {System.err.println("该订单未被签收!是否强制删除?"+ "(强制删除请输入yes,返回请任意输入)");String yes = input.next();// 输入yes强制删除if (yes.equalsIgnoreCase("yes")) {// 未签收订单删除,后面订单往前移并清空最后一个订单for (int j = (num - 1); j < (names.length - 1); j++) {                               names[j] = names[j + 1];menu[j] = menu[j + 1];times[j] = times[j + 1];date[j] = date[j + 1];addresses[j] = addresses[j + 1];sumPrices[j] = sumPrices[j + 1];states[j] = states[j + 1];int endDel = (names.length - 1);names[endDel] = null;menu[endDel] = null;times[endDel] = 0;date[endDel] = null;addresses[endDel] = null;sumPrices[endDel] = 0;states[endDel] = 0;// 如果全部删除if(names[0] == null) {// 提示无菜单flag = false;break;}}System.out.println("成功删除订单!");} else {break;}}// 是否返回主菜单}while(!isContinue());}else {System.err.println("关关雎鸠,在河之洲。败金饿肚,老板好逑~请等等顾客点菜吧-_-|||");}break;// 我要点赞case "5":// 判断菜单是否为空if(dishNames[0] != null) {do {System.out.println("***我要点赞***");System.out.println("序号\t餐品信息\t\t好评数");// 遍历菜品for (int j = 0; j < dishNames.length; j++) {System.out.println((j+1) +"\t" + dishNames[j] +"\t\t" + praiseNums[j]);}System.out.print("菜品味道不错吧,来为它点个赞吧:");// 点赞选择int like = 0;while(true) {// 判断是否为整数while (!input.hasNextInt()) {System.err.println("想想别的玩法吧╮(╯▽╰)╭,请重新正确格式的序号!");// 继续输入input.next();}// 正确就赋值like = input.nextInt();// 判断输入菜品是否存在if ((like - 1) < praiseNums.length && dishNames[like - 1] != null) {// 点赞赋值praiseNums[like - 1]++;System.out.println("点赞成功!");break;}else {System.err.println("点赞要厚道╮(╯▽╰)╭请输入正确的菜单序号。");}}// 是否继续}while(!isContinue());}else {System.err.println("只有陶醉肚子的美食,才有挣不完的金钱,赶快加菜吧(¯﹃¯)");}break;// 退出case "6":System.out.println("谢谢使用,欢迎下次光临!");System.exit(0);default:System.err.println("请输入正确的数字");}System.out.println("*************************************");} while (true);}/**是否继续方法*/public static boolean isContinue() {Scanner input = new Scanner(System.in);System.out.println("是否返回主菜单?(y/n)");String yesOrNo = input.next();if(yesOrNo.equalsIgnoreCase("y")) {return true;}else {return false;}}
}

第二次项目《吃货联盟Plus》相关推荐

  1. 泡椒java_吃货联盟 源代码 Java初级小项目

    今天给大家一个小的项目:吃货联盟订餐系统.项目功能也很简单:只是模拟日常的订餐流程呦,所以有错误以及功能不完善的地方大家多多包涵 O(∩_∩)O哈哈~ 首先,先展示下代码功能,代码也不是很多,就200 ...

  2. 吃货联盟 项目日记 0922

    吃货联盟 项目日记 0922 阶段01 订单类与客户端类 吃货阶段01 类的定义 方法的布局 0925_pyhui的技术博客-CSDN博客 https://blog.csdn.net/ifubing/ ...

  3. java吃货联盟系统源码_小项目,吃货联盟,java初级小项目,源代码

    小项目,吃货联盟,java初级小项目,源代码 1importjava.util.Scanner;23/**4* 吃货联盟订餐管理系统5*6*/7publicclassOrderingMsg {8pub ...

  4. 吃货联盟订餐系统项目

    吃货联盟订餐系统项目 ​ 代码思路: 第一阶段:分析数据主题 第二阶段:分析并完成整体框架 第三阶段:分析并完成退出功能 第四阶段:分析并完成订餐功能 第五阶段:分析并完成查看餐袋功能 第六阶段:分析 ...

  5. java吃货联盟系统源码_吃货联盟 源代码 Java初级小项目

    咳咳,今天博主给大家写一个小的项目:吃货联盟订餐系统.博主不是大神(互联网架构师的路上ing),也是小白一个,不过是刚入门的小白^_^.项目功能也很简单:只是模拟日常的订餐流程呦,所以有错误以及功能不 ...

  6. 20200716-java基础吃货联盟项目

    覆盖技能点: - 程序基本概念 变量 数据类型 - 流程控制 顺序 选择 循环 跳转语句 - 数组 项目演示及需求讲解: "只要动动手指,就能送餐上门",网上定餐深受现代人青睐,现 ...

  7. 小实战项目之——吃货联盟订餐系统

    系统概述: 我要订餐 查看餐袋 签收订单 删除订单 我要点赞 退出系统 下面是实例代码: import java.util.Scanner;public class OrderFoodSys {pub ...

  8. javaweb项目报告(吃货联盟)

    项目总结.收获和自我感觉 ​​​​​​​ 项目主要分为两个部分:用户,商家(管理员) 遗憾: 点赞和签到功能写的粗糙,没有较强的可行性 没有实现购物车和订单功能,项目的页面做的也不是特别好. 运用的体 ...

  9. 北大青鸟,Java基础练习,S1结业项目:“吃货联盟点餐系统”

    关于java的基础练习,可以更有效的来找到自己的不足之处,也可以锻炼自己的编程思想,这个吃货联盟系统包含了基础概念,变量.数据类型,也练习了顺序,选择,循环,跳转语句的编写编程的能力,最后还要求你会使 ...

  10. 大数据学习——Java项目实战-吃货联盟订餐系统

    吃货联盟订餐系统 项目需求 项目环境准备 项目覆盖技能点 阶段划分 难点分析 使用数组对象保存订单信息 访问订单信息 删除订单信息 计算订单的总金额 项目实现思路 数据初始化 实现菜单切换 实现查看餐 ...

最新文章

  1. mysql 建复合索引_关于mysql建立索引 复合索引 索引类型
  2. Camelyon Challenge: 癌症细胞区域检测竞赛
  3. docker-compose command 执行多条指令
  4. 缓存框架OSCache部分源码分析
  5. jpa mysql乐观锁_JPA @Lock(value = LockModeType.PESSIMISTIC_WRITE) 悲观锁防坑
  6. 《Cloudera hadoop大数据平台实战指南》此书2019年1月已上市
  7. idea调整主题和代码风格
  8. 利用yum升级Centos6的gcc版本,使其支持C++11
  9. 内存数据库和关系数据库之间的数据同步原理
  10. Oracle 数据库中对记录进行分页处理
  11. Verilog实现2分频实例
  12. netdev_priv
  13. java 回车表示_Java 换行和回车
  14. 两种方法求x的n次幂
  15. “逆鬼”muma企图隐蔽发展 被360独家击杀
  16. 如梦若梦,肾盂肾炎似烟火
  17. android pie新功能,Android Pie:3个隐藏功能 | MOS86
  18. 解决Windows 7下IE11无法卸载、无法重新安装,提示安装了更新的IE版本
  19. ArcGIS 对地下管线进行分类标注
  20. 最全随机抽样算法(从N个数中抽取M个等)集合

热门文章

  1. PostgreSQL SRF函数上索引实现方法
  2. R语言创建空数据框(Empty Data Frame )用于追加数据
  3. Android 开发常见问题汇总
  4. 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
  5. SitePoint Podcast#175:版式
  6. 【PS/PSD】237款日系小清新文艺唯美梦幻手绘插画分层PSD素材
  7. 浅谈链表的构建,next到底是什么
  8. android项目版本,怎查看Android项目的Android版本
  9. 第四届蓝桥杯真题决赛java本科组
  10. 地球物理中的有限单元法-第二类边界条件-三角剖分-线性插值 matlab编程实现