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