吃货联盟订餐系统
Posted zeng1997
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吃货联盟订餐系统相关的知识,希望对你有一定的参考价值。
第一步:
/** * 吃货联盟订餐系统 * * @author zengt * */ public class ShiZhanXiangMu // 数据主体 一组订单信息 // 保存订餐人姓名 // 保存所选信息, 菜名 份数 // 保存送餐时间 // 保存送餐地址 // 保存订单状态 已预订 或 已完成 // 保存订单金额 // 菜名 // 单价 // 点赞数 // 初始化两条订单信息 // 实现菜单切换 当输入1~5时,输出相关的菜单信息 // 提示输入0返回,输入0返回主菜单,否则退出系统并输出提示信息 谢谢使用,欢迎下次光临! // // 输出信息: 欢迎使用 吃货联盟订餐系统 // 循环:显示菜单,根据用户选择的数字执行相应的功能 // 显示菜单 // 1、我要订餐 // 2、查看餐袋 // 3、签收订单 // 4、删除订单 // 5、我要点赞 // 6、退出系统 // 输出提示信息:请选择执行操作数字 // 记录用户选择的功能编号 // 根据用户选择的功能编号执行相应的功能 // 输入1 输出信息 我要订餐 // 记录是否可以订餐 // 如果找到一个为空的位置,可以添加订单信息 // 提示输入订餐人姓名,获取信息 // 选择菜品及份数 显示可供选择的菜品序号,菜名,单价,点赞数 // 提示输入菜品序号及份数并获取信息 // 计算送餐费(餐费大于50免送餐费,否则送餐费为5元) // 提示输入送餐时间,要求输入时间为10~20之间的整点数字,否则提示输入错误,重新输入 // 提示输入送餐地址 // 以上信息输入完成提示 订餐成功 // 显示订单信息: 您订单餐品是: 送餐时间: 餐费: 送餐费 总金额:(餐费+送餐费) // 把以上信息添加到相应的数组里 // 否则提示信息 餐袋已满 // 提示输入0返回主菜单 // 输入2 输出信息 查看餐袋 // 遍历 餐品序号 ,订餐人姓名,订餐信息(菜名及份数),送餐时间,送餐地址,总金额,订单状态 // 3 签收订单 // 输出信息 ******签收订单***** // 提示选择要签收的订单序号并获取信息 // 状态为已预订,序号为用户输入的订单序号减一:可签收 // 状态为已完成,序号为用户输入的订单序号减一:不可签收 // 找到该订单 若状态为已预订将状态值重新标志位已完成 // 若状态为已完成 提示 :您选择的订单已完成签收,不能再次签收 // 若未找到订单序号 提示: 您选择的订单序号不存在 // 4 删除订单 // 输出信息:*******删除订单******* // 提示要删除的订单序号 // 找到该订单 状态为已完成执行删除操作 删除位置后面的元素依次往前移将最后一位清空 // 状态为已预订 提示:订单未签收,不能删除 // 未找到订单序号 提示:您要删除的订单不存在 // 5 我要点赞 // 输出信息 *******我要点赞******* // 显示菜品信息 // 提示选择点赞的菜品编号并接收 // 点赞数加一 // 6 退出系统 // 输入其他数字也退出系统 // 提示信息 : 输入0返回 // 接收信息 //
然后慢慢实现操作需求。。。。。。。。
总算把所有需求都做出来了!
1 import java.util.Scanner; 2 3 /** 4 * 吃货联盟订餐系统 5 * 6 * @author zengt 7 * 8 */ 9 public class ShiZhanXiangMu 10 static Scanner input = new Scanner(System.in); 11 12 public static void main(String[] args) 13 14 // 数据主体 一组订单信息 15 // 保存订餐人姓名 16 String[] names = new String[4]; 17 // 保存所选信息, 菜名 份数 18 String[] caiMing = new String[4]; 19 int[] fenShu = new int[4]; 20 // 保存送餐时间 21 int[] times = new int[4]; 22 // 保存送餐地址 23 String[] diZhis = new String[4]; 24 // 保存订单状态 已预订 或 已完成 25 int[] ddzt = new int[4]; // 用数字0或1 标识订单状态 已预订或已完成 26 // 保存订单金额 27 double[] moneys = new double[4]; 28 // 菜名 29 String[] foods = "炒青菜", "青椒炒蛋", "水煮肉片", "鸡肉堡" ; 30 // 单价 31 double[] meals = 8, 12, 25, 35 ; 32 // 点赞数 33 int[] dianZhanShu = new int[4]; 34 // 初始化两条订单信息 订餐人 所订餐品及份数 送餐时间 送餐地址 总金额 订单状态 35 names[0] = "张三"; 36 caiMing[0] = foods[2]; 37 fenShu[0] = 2; 38 times[0] = 12; 39 diZhis[0] = "同济路112号"; 40 moneys[0] = meals[2] * fenShu[0]; 41 ddzt[0] = 0; 42 43 names[1] = "李四"; 44 caiMing[1] = foods[3]; 45 fenShu[1] = 1; 46 times[1] = 14; 47 diZhis[1] = "同济路121号"; 48 moneys[1] = meals[3] * fenShu[1]; 49 ddzt[1] = 1; 50 // 实现菜单切换 当输入1~5时,输出相关的菜单信息 51 // 标识用户输入数字,输入0返回主菜单,否则退出系统 52 int nums = -1; 53 // 输出信息: 欢迎使用 吃货联盟订餐系统 54 System.out.println("**********欢迎使用吃货联盟订餐系统**********"); 55 // 循环:显示菜单,根据用户选择的数字执行相应的功能 56 boolean boos = true; // 标识循环条件 57 do 58 // 循环:显示菜单,根据用户选择的数字执行相应的功能 59 // 显示菜单// 1、我要订餐// 2、查看餐袋// 3、签收订单// 4、删除订单// 5、我要点赞// 6、退出系统 60 System.out.println("……………………………………………………"); 61 System.out.println("1、我要订餐\\n" + "2、查看餐袋\\n" + "3、签收订单\\n" + "4、删除订单\\n" + "5、我要点赞\\n" + "6、退出系统"); 62 System.out.println("……………………………………………………"); 63 // 输出提示信息:请选择执行操作数字 64 System.out.println("请选择:"); 65 // 记录用户选择的功能编号 66 int num = input.nextInt(); 67 // 根据用户选择的功能编号执行相应的功能 68 switch (num) 69 case 1: 70 // 输入1 输出信息 我要订餐 71 System.out.println("******我要订餐******"); 72 // 记录是否可以订餐 73 boolean boo1 = false; 74 // 如果找到一个为空的位置,可以添加订单信息 75 for (int i = 0; i < names.length; i++) 76 if (null == names[i]) 77 // 提示输入订餐人姓名,获取信息 78 System.out.println("请输入送餐人姓名:"); 79 names[i] = input.next(); 80 System.out.println("序号\\t" + "菜名\\t" + "单价\\t" + "点赞数"); 81 82 // 选择菜品及份数 显示可供选择的菜品序号,菜名,单价,点赞数 83 for (int a = 0; a < foods.length; a++) 84 85 String danJia = meals[a] + "元"; 86 String dzs = dianZhanShu[a] > 0 ? dianZhanShu[a] + "赞" : "0"; 87 System.out.println((a + 1) + "\\t" + foods[a] + "\\t" + danJia + "\\t" + dzs); 88 89 // 提示输入菜品序号及份数并获取信息 90 System.out.println("请选择您要点的餐品序号:"); 91 int num1 = input.nextInt(); 92 System.out.println("请输入所订餐品份数:"); 93 int num2 = input.nextInt(); 94 // 计算送餐费(餐费大于50免送餐费,否则送餐费为5元) 95 double canFei = meals[num1 - 1] * num2; 96 double scf = canFei >= 50 ? 0 : 5; 97 double money = canFei + scf; 98 // 提示输入送餐时间,要求输入时间为10~20之间的整点数字,否则提示输入错误,重新输入 99 boolean boo2 = true;// 标识输入送餐时间是否正确的循环条件 100 int time = 0;// 标识送餐时间 101 while (boo2) 102 System.out.println("请输入送餐时间:"); 103 time = input.nextInt(); 104 if (time >= 10 && time <= 20) 105 boo2 = false; 106 else 107 System.out.println("输入不正确,请输入10~20之间的整点时间!"); 108 109 110 // 提示输入送餐地址 111 System.out.println("请输入送餐地址:"); 112 String diZhi = input.next(); 113 // 以上信息输入完成提示 订餐成功 114 System.out.println("订餐成功!"); 115 // 显示订单信息: 您订单餐品是: 送餐时间: 餐费: 送餐费 总金额:(餐费+送餐费) 116 System.out.println("您订单餐品是:" + foods[num1 - 1] + ",所订份数:" + num2 + "份,送餐地址:" + diZhi + ",送餐时间:" 117 + time + "点,餐费:" + canFei + ",送餐费:" + scf + ",总金额:" + money); 118 // 把以上信息添加到相应的数组里 119 caiMing[i] = foods[num1 - 1]; 120 times[i] = time; 121 fenShu[i] = num2; 122 diZhis[i] = diZhi; 123 moneys[i] = money; 124 boo1 = true; 125 break; 126 else 127 boo1 = false; 128 129 130 if (!boo1) 131 System.out.println("餐袋已满!"); 132 133 System.out.println("输入0返回:"); 134 nums = input.nextInt(); 135 if (nums != 0) 136 boos = false; 137 138 break; 139 case 2: 140 // 输入2 输出信息 查看餐袋 141 System.out.println("******查看餐袋******"); 142 // 遍历 餐品序号 ,订餐人姓名,订餐信息(菜名及份数),送餐时间,送餐地址,总金额,订单状态 143 System.out.println("序号\\t订餐人\\t所订餐品\\t份数\\t送餐时间\\t送餐地址\\t\\t总金额\\t订单状态"); 144 for (int i = 0; i < names.length; i++) 145 if (names[i] != null) 146 String zhuangTai = ddzt[i] == 0 ? "已预订" : "已完成"; 147 System.out.print((i + 1) + "\\t" + names[i] + "\\t" + caiMing[i] + "\\t" + fenShu[i] + "\\t" 148 + times[i] + "\\t" + diZhis[i] + "\\t" + moneys[i] + "\\t" + zhuangTai); 149 System.out.println(); 150 151 152 System.out.println("输入0返回:"); 153 nums = input.nextInt(); 154 if (nums != 0) 155 boos = false; 156 157 break; 158 case 3: 159 // 3 签收订单 160 // 输出信息 ******签收订单***** 161 System.out.println("******签收订单*****"); 162 // 提示选择要签收的订单序号并获取信息 163 // 状态为已预订,序号为用户输入的订单序号减一:可签收 164 // 状态为已完成,序号为用户输入的订单序号减一:不可签收 165 System.out.println("请输入要签收的订单序号:"); 166 int num3 = input.nextInt(); 167 if (names[num3 - 1] != null) 168 // 找到该订单 若状态为已预订将状态值重新标志位已完成 169 if (ddzt[num3 - 1] == 0) 170 ddzt[num3 - 1] = 1; 171 System.out.println("您所选订单签收成功!"); 172 // 若状态为已完成 提示 :您选择的订单已完成签收,不能再次签收 173 else if (ddzt[num3 - 1] == 1) 174 System.out.println("您选择的订单已完成签收,不能再次签收"); 175 176 // 若未找到订单序号 提示: 您选择的订单序号不存在 177 else 178 System.out.println("您选择的订单序号不存在"); 179 180 181 System.out.println("输入0返回:"); 182 nums = input.nextInt(); 183 if (nums != 0) 184 boos = false; 185 186 break; 187 case 4: 188 // 4 删除订单 189 // 输出信息:*******删除订单******* 190 System.out.println("*******删除订单*******"); 191 // 提示要删除的订单序号 192 System.out.println("请输入要删除的订单序号:"); 193 int num4 = input.nextInt(); 194 // 找到该订单 状态为已完成执行删除操作 删除位置后面的元素依次往前移将最后一位清空 195 if (names[num4 - 1] != null) 196 // 状态为已预订 提示:订单未签收,不能删除 197 if (ddzt[num4 - 1] == 1) 198 for (int d = num4 - 1; d < names.length; d++) 199 for (int j = d; j < names.length - 1; ) 200 names[j] = names[j + 1]; 201 caiMing[j] = caiMing[j + 1]; 202 times[j] = times[j + 1]; 203 diZhis[j] = diZhis[j + 1]; 204 moneys[j] = moneys[j + 1]; 205 ddzt[j] = ddzt[j + 1]; 206 207 names[names.length - 1] = null; 208 caiMing[caiMing.length - 1] = null; 209 times[times.length - 1] = 0; 210 diZhis[diZhis.length - 1] = null; 211 moneys[moneys.length - 1] = 0; 212 ddzt[ddzt.length - 1] = -1; 213 break; 214 215 216 System.out.println("订单删除成功!"); 217 else if (ddzt[num4 - 1] == 0) 218 System.out.println("该订单未签收,还不能删除,请签收后再删除!"); 219 220 else 221 // 未找到订单序号 提示:您要删除的订单不存在 222 System.out.println("您要删除的订单不存在!"); 223 224 System.out.println("输入0返回:"); 225 nums = input.nextInt(); 226 if (nums != 0) 227 boos = false; 228 229 break; 230 case 5: 231 // 5 我要点赞 232 // 输出信息 *******我要点赞******* 233 System.out.println("*******我要点赞*******"); 234 // 显示菜品信息 235 System.out.println("序号\\t菜品名\\t单价\\t点赞数"); 236 for (int j = 0; j < foods.length; j++) 237 System.out.println((j + 1) + "\\t" + foods[j] + "\\t" + meals[j] + "\\t" + dianZhanShu[j]); 238 239 // 提示选择点赞的菜品编号并接收 240 System.out.println("请输入您想要点赞的餐品序号:"); 241 int num5 = input.nextInt(); 242 // 点赞数加一 243 dianZhanShu[num5 - 1]++; 244 System.out.println("输入0返回:"); 245 nums = input.nextInt(); 246 if (nums != 0) 247 boos = false; 248 249 break; 250 case 6: 251 // 6 退出系统 252 System.out.println("正在退出系统!"); 253 boos = false; 254 break; 255 256 default: 257 // 输入其他数字也退出系统 258 System.out.println("输出信息错误,默认退出系统!"); 259 boos = false; 260 break; 261 262 263 while (boos); 264 System.out.println("程序结束!"); 265 266 // 提示信息 : 输入0返回 267 // 接收信息 268 // 269 270
想想如何把重复的代码优化?
以上是关于吃货联盟订餐系统的主要内容,如果未能解决你的问题,请参考以下文章