1 package com.workprojects; 2 3 /** 4 * 吃货联盟订餐系统 5 * 2019-07-07 6 * @author L 7 */ 8 import java.util.Scanner; 9 10 public class Eatsystem { 11 static Scanner sc = new Scanner(System.in); 12 13 public static void main(String[] args) { 14 // 保存信息 15 String[] names = new String[4];// 订餐人姓名 16 int[] foodNums = new int[4];// 保存份数 17 int[] ids = new int[4];// 订单序号 18 int[] times = new int[4];// 送餐时间,整点送餐 19 String[] addresses = new String[4];// 送餐地址 20 int[] states = new int[4];// 订单状态,0表示已预订(默认状态),1表示已完成 21 double[] sumPrices = new double[4];// 订单总金额 22 int[] goodNums = new int[3];// 点赞 23 int[] foodIds = new int[3];// 菜品序号 24 25 // 菜品信息 26 String[] foodNames = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };// 菜品名称 27 double foodPrices[] = { 38.0, 20.0, 10.0 };// 菜品单价 28 29 // 初始化第一笔订单 30 ids[0] = 1;// 序号“1” 31 names[0] = "张晴"; 32 foodNames[0] = "红烧带鱼"; 33 foodNums[0] = 2; 34 times[0] = 12; 35 addresses[0] = "天成路207号"; 36 sumPrices[0] = 76.0; 37 states[0] = 1; 38 39 // 初始化第二笔订单 40 ids[1] = 2; 41 names[1] = "张晴"; 42 foodNames[1] = "鱼香肉丝"; 43 foodNums[1] = 2; 44 times[1] = 18; 45 addresses[1] = "天成路207号"; 46 sumPrices[1] = 45.0; 47 states[1] = 0; 48 49 // 订餐系统 50 int num = -1;// 用户输入0返回主菜单,否则退出系统 51 boolean flag = false;// 标志用户是否退出系统,为true时退出系统。 52 System.out.println("欢迎使用“吃货联盟订餐系统”");// 订餐系统欢迎引导 53 do {// 先执行初始菜单目录,并循环展示 54 System.out.println("***********************"); 55 System.out.println("1、我要订餐"); 56 System.out.println("2、查看餐袋"); 57 System.out.println("3、签收订单"); 58 System.out.println("4、删除订单"); 59 System.out.println("5、我要点赞"); 60 System.out.println("6、退出系统"); 61 System.out.println("***********************"); 62 63 // 选择菜单 64 System.out.print("请选择:"); 65 int choose = sc.nextInt();// 功能编号 66 67 switch (choose) { 68 case 1: 69 // 订餐 70 System.out.println("***我要订餐***"); 71 boolean addFood = false;// 判断是否可以订餐 72 for (int j = 0; j < names.length; j++) { 73 if (names[j] == null) {// 获取订餐人为空的位置 74 addFood = true;// 为空则可订餐 75 System.out.print("请输入订餐人姓名:"); 76 String name = sc.next(); 77 ids[j]=j+1; 78 // 展示餐品信息,价格,点赞等相关信息 79 System.out.println("序号" + "\t" + "菜名" + "\t" + "单价" + "\t" + "点赞数");// 菜品详情 80 for (int i = 0; i < foodNames.length; i++) { 81 String goodNum = (goodNums[i]) > 0 ? goodNums[i] + "赞" : "0"; 82 System.out.println((i + 1) + "\t" + foodNames[i] + "\t" + foodPrices[i] + "\t" + goodNum); 83 } 84 // 点餐 85 System.out.print("请选择您要点的菜品编号:"); 86 int foodId = sc.nextInt();// 餐品序号 87 String foodName = foodNames[foodId - 1]; 88 System.out.print("请选择您需要的份数:"); 89 int foodNum = sc.nextInt();// 订餐餐品份数 90 double sumPrice = foodPrices[foodId - 1] * foodNum;// 该订单金额 91 double fare = (sumPrice >= 50) ? 0 : 5;// 订单总额大于等于50免配送费,低于50需要5元配送费 92 System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):"); 93 int time = sc.nextInt(); 94 while (time < 10 || time > 20) { 95 System.out.print("您输入有误,请输入10~20间的整数:"); 96 time = sc.nextInt(); 97 } 98 System.out.print("请输入送餐地址:"); 99 String address = sc.next(); 100 101 // 下单成功提示! 102 System.out.println("订餐成功!"); 103 System.out.println("您订的是:" + foodName + "\t" + foodNum + "份"); 104 System.out.println("送餐时间:" + time + "点"); 105 System.out.println("送餐地址:" + address + ",收货人:" + name); 106 System.out.println("餐费:" + sumPrice + "元,送餐费:" + fare + "元,总计:" + (sumPrice + fare)); 107 108 // 添加数据 109 names[j] = name; 110 foodNames[j] = foodName; 111 foodNums[j] = foodNum; 112 times[j] = time; 113 addresses[j] = address; 114 sumPrices[j] = sumPrice + fare; 115 break; 116 } 117 } 118 if (!addFood) { 119 System.out.println("对不起。您的餐袋已满!"); 120 } 121 break; 122 case 2: 123 // 查看餐袋 124 System.out.println("***查看餐袋***"); 125 System.out.println("序号\t订餐人\t餐品信息\t份数\t送餐时间\t\t送餐地址\t\t总金额\t订单状态");// 订单抬头 126 for (int i = 0; i < ids.length; i++) { 127 if (names[i] != null) {// 名字不为空 128 String state = (states[i] == 0) ? "已预订" : "已完成";// 判断订单状态 129 // 输出订单详情 130 System.out.println(ids[i] + "\t" + names[i] + "\t" + foodNames[i] + "\t" + foodNums[i] + "份" 131 + "\t" + times[i] + "点" + "\t\t" + addresses[i] + "\t" + sumPrices[i] + "\t" + state 132 + "\t"); 133 } 134 } 135 break; 136 case 3: 137 // 签收订单 138 System.out.println("***签收订单***"); 139 boolean orderFind = false;// 查找订单 140 System.out.print("请选择要签收的订单序号:"); 141 int orderId = sc.nextInt(); 142 for (int i = 0; i < names.length; i++) { 143 if (names[i] != null && states[i] == 0 && orderId == i + 1) {// 如果订餐人不为空,状态为已预订,订单号+1 144 states[i] = 1;// 订单状态转变 145 System.out.println("订单签收成功!"); 146 orderFind = true; 147 } else if (names[i] != null && states[i] == 1 && orderId == i + 1) { 148 System.out.println("您选择的订单已完成签收,不能再次签收!"); 149 orderFind = true; 150 } 151 } 152 if (!orderFind) { 153 System.out.println("您输入的订单不存在!请重新输入!"); 154 orderId = sc.nextInt(); 155 } 156 break; 157 case 4: 158 // 删除订单 159 System.out.println("***删除订单***"); 160 boolean delOrder = false;// 查找删除订单 161 System.out.print("请输入要删除的订单序号:"); 162 int delId = sc.nextInt(); 163 for (int i = 0; i < names.length; i++) { 164 if (names[i] != null && states[i] == 1 && delId == i + 1) { 165 delOrder = true;// 找到订单 166 for (int j = delId - 1; j < names.length - 1; j++) {// 删除元素,该位置后的元素向前进一步,向前一位赋值 167 names[j] = names[j + 1]; 168 //foodNames[j] = foodNames[j + 1]; 169 foodNums[j] = foodNums[j + 1]; 170 times[j] = times[j + 1]; 171 addresses[j] = addresses[j + 1]; 172 sumPrices[j] = sumPrices[j + 1]; 173 states[j] = states[j + 1]; 174 } 175 // 赋值完毕后,清空最后一位元素 176 names[names.length - 1] = null; 177 //foodNames[names.length - 1] = null; 178 foodNums[names.length - 1] = 0; 179 times[names.length - 1] = 0; 180 addresses[names.length - 1] = null; 181 sumPrices[names.length - 1] = 0; 182 states[names.length - 1] = 0; 183 System.out.println("删除订单成功!"); 184 break; 185 } else if (names[i] != null && states[i] == 0 && delId == i + 1) { 186 System.out.println("您选择的订单未签收,不能删除!"); 187 delOrder = true; 188 } 189 } 190 if (!delOrder) { 191 System.out.println("您要删除的订单不存在!请重新输入!"); 192 delId = sc.nextInt(); 193 } 194 break; 195 case 5: 196 // 点赞功能 197 System.out.println("***我要点赞***"); 198 // 显示菜品信息 199 System.out.println("序号\t菜品\t点赞数");// 订单抬头 200 for (int i = 0; i < foodNames.length; i++) { 201 String goodNum = (goodNums[i]) > 0 ? goodNums[i] + "赞" : ""; 202 System.out.println((i + 1) + "\t" + foodNames[i] + "\t" + goodNum); 203 } 204 System.out.print("请选择您要点赞的菜品序号:"); 205 int goodNum = sc.nextInt(); 206 goodNums[goodNum - 1]++;// 点赞+1 207 System.out.println("点赞成功!"); 208 break; 209 case 6: 210 System.out.println("***退出系统***"); 211 flag = true; 212 break; 213 default: 214 flag = true; 215 break; 216 } 217 if (!flag) { 218 System.out.print("输入0返回:"); 219 num = sc.nextInt(); 220 } else { 221 break; 222 } 223 } while (num == 0); 224 System.out.println("已成功退出吃货联盟“订餐系统”!"); 225 } 226 }
一、我要订餐
二、查看菜袋
三、签收订单
四、删除订单
五、点赞
六、退出系统