吃货联盟订餐系统
1 package com.zuoye; 2 3 import java.util.Scanner; 4 5 /** 6 * 吃货联盟订餐管理系统 7 * 8 * 9 * 10 */ 11 public class ChiHuo { 12 public static void main(String[] args) { 13 // 数据主体:一组订单信息 14 String[] names = new String[4]; // 订餐人名称 15 String[] dishMegs = new String[4]; // 所选菜品 16 int[] times = new int[4]; // 送餐日期 17 String[] addresses = new String[4]; // 送餐地址 18 int[] states = new int[4]; // 订单状态: 0:已预定 1:已完成 19 double[] sumPrices = new double[4]; // 总金额 20 21 //初始化2个订单信息 22 names[0] = "张晴"; 23 dishMegs[0] = "红烧带鱼 2份"; 24 times[0] = 3; 25 addresses[0] = "天成路207号"; 26 sumPrices[0] = 76.0; 27 states[0] = 1; 28 29 names[1] = "张晴"; 30 dishMegs[1] = "鱼香肉丝 2份"; 31 times[1] = 10; 32 addresses[1] = "天成路207号"; 33 sumPrices[1] = 20.0; 34 35 36 // 供选择的菜品信息 37 String[] dishNames = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" }; // 菜品名称 38 double[] prices = new double[] { 38.0, 20.0, 10.0 }; // 菜品单价 39 int[] praiseNums = new int[3]; 40 41 Scanner input = new Scanner(System.in); 42 int num = -1; // 用户输入0返回主菜单,否则退出系统 43 boolean isExit = false; // 标志用户是否退出系统: true:退出系统 44 45 System.out.println("\n欢迎使用“吃货联盟订餐系统”"); 46 // 循环:显示菜单,根据用户选择的数字执行相应功能 47 do { 48 // 显示菜单 49 System.out.println("****************************"); 50 System.out.println("1、我要订餐"); 51 System.out.println("2、查看餐袋"); 52 System.out.println("3、签收订单"); 53 System.out.println("4、删除订单"); 54 System.out.println("5、我要点赞"); 55 System.out.println("6、退出系统"); 56 System.out.println("****************************"); 57 System.out.print("请选择:"); 58 int choose = input.nextInt(); // 记录用户选择的功能编号 59 boolean isAdd = false; //记录是否可以订餐 60 boolean isSignFind = false; //找到要签收的订单 61 boolean isDelFind = false; //找到要删除的订单 62 // 根据用户选择的功能编号执行相应功能 63 switch (choose) { 64 case 1: 65 // 我要订餐 66 System.out.println("***我要订餐***"); 67 for (int j = 0; j < names.length; j++) { 68 if(names[j] == null){ //找到第一个空位置,可以添加订单信息 69 isAdd = true; //置标志位,可以订餐 70 System.out.print("请输入订餐人姓名:"); 71 String name = input.next(); 72 // 显示供选择的菜品信息 73 System.out.println("序号" + "\t" + "菜名"+"\t"+"单价"); 74 for (int i = 0; i < dishNames.length; i++) { 75 String price = prices[i] + "元"; 76 String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i] 77 + "赞" : ""; 78 79 System.out.println((i + 1) + "\t" + dishNames[i] + "\t" +price+"\t"+ priaiseNum); 80 } 81 // 用户点菜 82 System.out.print("请选择您要点的菜品编号:"); 83 int chooseDish = input.nextInt(); 84 System.out.print("请选择您需要的份数:"); 85 int number = input.nextInt(); 86 String dishMeg = dishNames[chooseDish - 1] 87 +" "+ number + "份"; 88 double sumPrice = prices[chooseDish - 1] * number; 89 //餐费满50元,免送餐费10元 90 double deliCharge = (sumPrice>=50)?0:6; 91 92 System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):"); 93 int time = input.nextInt(); 94 while (time < 10 || time > 20) { 95 System.out.print("您的输入有误,请输入10~20间的整数!"); 96 time = input.nextInt(); 97 } 98 System.out.print("请输入送餐地址:"); 99 String address = input.next(); 100 101 //无需添加状态,默认是0,即已预定状态。 102 System.out.println("订餐成功!"); 103 System.out.println("您订的是:"+dishMeg); 104 System.out.println("送餐时间:"+time+"点"); 105 System.out.println("餐费:"+sumPrice+"元,送餐费"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元。"); 106 107 //添加数据 108 names[j] = name; 109 dishMegs[j] = dishMeg; 110 times[j] = time; 111 addresses[j] = address; 112 sumPrices[j] = sumPrice+deliCharge; 113 114 break; 115 } 116 } 117 if(!isAdd){ 118 System.out.println("对不起,您的餐袋已满!"); 119 } 120 break; 121 case 2: 122 // 查看餐袋 123 System.out.println("***查看餐袋***"); 124 System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态"); 125 for(int i=0;i<names.length;i++){ 126 if(names[i]!=null){ 127 String state = (states[i]==0)?"已预定":"已完成"; 128 String date = times[i]+"日"; 129 String sumPrice = sumPrices[i]+"元"; 130 System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+date+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state); 131 } 132 } 133 break; 134 case 3: 135 // 签收定单 136 System.out.println("***签收定单***"); 137 System.out.print("请选择要签收的订单序号:"); 138 int signOrderId = input.nextInt(); 139 for(int i=0;i<names.length;i++){ 140 //状态为已预定,序号为用户输入的订单序号:可签收 141 //状态为已完成,序叼为用户输入胡订单序号:不可签收 142 if(names[i]!=null && states[i]==0 && signOrderId==i+1){ 143 states[i] = 1; //将状态值置为已完成 144 System.out.println("订单签收成功!"); 145 isSignFind = true; 146 }else if(names[i]!=null && states[i]==1 && signOrderId==i+1){ 147 System.out.println("您选择的订单已完成签收,不能再次签收!"); 148 isSignFind = true; 149 } 150 } 151 //未找到的订单序号:不可签收 152 if(!isSignFind){ 153 System.out.println("您选择的订单不存在!"); 154 } 155 break; 156 case 4: 157 // 删除订单 158 System.out.println("***删除订单***"); 159 System.out.print("请输入要删除的订单序号:"); 160 int delId = input.nextInt(); 161 for(int i=0;i<names.length;i++){ 162 //状态值为已完成 序号值为用户输入的序号:可删除 163 //状态值为已预定 序号值为用户输入的序号:不可删除 164 if(names[i]!=null && states[i]==1 && delId==i+1){ 165 isDelFind = true; 166 //执行删除操作:删除位置后的元素依次前移 167 for(int j=delId-1;j<names.length-1;j++){ 168 names[j] = names[j+1]; 169 dishMegs[j] = dishMegs[j+1]; 170 times[j] = times[j+1]; 171 addresses[j] = addresses[j+1]; 172 states[j] = states[j+1]; 173 } 174 //最后一位清空 175 names[names.length-1] = null; 176 dishMegs[names.length-1] = null; 177 times[names.length-1] = 0; 178 addresses[names.length-1] = null; 179 states[names.length-1] = 0; 180 181 System.out.println("删除订单成功!"); 182 break; 183 }else if(names[i]!=null && states[i]==0 && delId==i+1){ 184 System.out.println("您选择的订单未签收,不能删除!"); 185 isDelFind = true; 186 break; 187 } 188 } 189 190 //未找到该序号的订单:不能删除 191 if(!isDelFind){ 192 System.out.println("您要删除的订单不存在!"); 193 } 194 break; 195 case 5: 196 // 我要点赞 197 System.out.println("***我要点赞***"); 198 // 显示菜品信息 199 System.out.println("序号" + "\t" + "菜名"+"\t"+"单价"); 200 for (int i = 0; i < dishNames.length; i++) { 201 String price = prices[i] + "元"; 202 String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i] 203 + "赞" : ""; 204 205 System.out.println((i + 1) + "\t" + dishNames[i] + "\t" +price+"\t"+ priaiseNum); 206 } 207 System.out.print("请选择您要点赞的菜品序号:"); 208 int priaiseNum = input.nextInt(); 209 praiseNums[priaiseNum-1]++; //赞数加1 210 System.out.println("点赞成功!"); 211 break; 212 case 6: 213 // 退出系统 214 isExit = true; 215 break; 216 default: 217 //退出系统 218 isExit = true; 219 break; 220 } 221 if (!isExit) { 222 System.out.print("输入0返回:"); 223 num = input.nextInt(); 224 } else { 225 break; 226 } 227 } while (num == 0); 228 System.out.println("谢谢使用,欢迎下次光临!"); 229 } 230 }