一.首先先定义部分成员变量:
String[] name = new String[4];// 订餐人 String[] greens = new String[4];// 储存菜品名称 String[] green = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };// 菜品 int[] num = new int[4];// 份数 int[] time = new int[4];// 时间 String[] site = new String[4];// 地址 String[] state = new String[] { "预定", "预定", "预定", "预定" };// 订单状态 double[] money = { 38, 20, 10 };// 单价 int[] number = new int[3];// 点赞数 double give;// 送餐费 double[] moneys = new double[4];// 总金额 Scanner bdqn = new Scanner(System.in);// 扫描仪 int back;// 选择返回首页 int i;// 数组下标 int sign;// 签收订单 int have;// 判断已签收订单
二.创建首页方法(为了方便调用,代码清晰):
public void System() {// 首页 System.out.println("\n欢迎使用“吃货联盟订餐系统”"); 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("**********************************************"); }
三.编写订餐系统:
public void Order() {// 订餐系统 int bh = 0; for (; i < time.length;) {// 各数组的储存下标 System.out.print("请输入订餐人姓名:"); name[i] = bdqn.next();// 记录订餐人 do { System.out.println("序号\t菜名\t单价\t点赞数"); for (int j = 0; j < 3; j++) {// 循环输出菜单 System.out.println((j + 1) + "\t" + green[j] + "\t" + money[j] + "\t" + number[j]); } System.out.print("请选择您要点的菜品编号:"); bh = bdqn.nextInt(); if (bh > 3 || bh < 1) {// 判断选菜 System.out.println("无此编号,请重新选择!"); } } while (bh > 3 || bh < 1);// 无选择编号,循环重新选择菜单 greens[i] = green[bh - 1];// 记录菜品 System.out.print("请选择您需要的份数:"); num[i] = bdqn.nextInt();// 记录份数 System.out.print("请输入送餐时间(10-20之间的整数):"); do { time[i] = bdqn.nextInt();// 记录送餐时间 if (time[i] < 10 || time[i] > 20) { System.out.print("此时间不营业,请重新输入(10-20之间的整数):"); } } while (time[i] < 10 || time[i] > 20);// 不在送餐时间,则循环重新输入时间 System.out.print("请输入送餐地址:"); site[i] = bdqn.next();// 记录送餐地址 System.out.println("订餐成功!"); System.out.println("您订的是:" + greens[i] + "" + num[i] + "份"); System.out.println("送餐时间:" + time[i] + "点"); moneys[i] = money[bh - 1] * num[i] + give;// 送餐费的判断依据 if (moneys[i] < 50) {// 判断是否有送餐费 give = 5; } System.out.println("餐费:" + (moneys[i] - give) + "元,送餐费:" + give + "元,总计:" + moneys[i] + "元。"); break; } if (i >= name.length) {// 餐袋限额为4,装满则输出该语句 System.out.println("餐袋已满!"); } else { i++; } }
四.编写餐袋系统:
public void Look() {// 餐袋系统 for (int j = 0; j < i; j++) {// 循环输出餐袋,i为订餐数,超出i则不输出,防止输出空值 System.out.println((j + 1) + "\t" + name[j] + "\t" + greens[j] + num[j] + "份\t" + time[j] + "点\t" + site[j] + "\t" + moneys[j] + "\t" + state[j]); } }
五.编写签收系统:
public void Sign() {// 签收系统 System.out.print("请选择要签收的订单序号:"); sign = bdqn.nextInt(); if (sign == have) {// 判断,如果签收后,提示该语句 System.out.println("您选择的订单已完成签收,不能再次签收!"); } else if (sign <= i) {// 有选择的订单,则赋值“签收” have = sign;// 该订单签收后,将签收的序列号储存 state[sign - 1] = "签收"; System.out.println("订单签收成功!"); } else { System.out.println("无此订单!"); } }
六.编写删除系统:
public void Delete(int delete) {// 删除系统 if (delete <= i) {// 判断是否有该订单 if (state[delete - 1].equals("签收")) {// 判断该订单是否签收过 for (int t = delete - 1; t < (i - 1); t++) {// 元素前移,条件为删除的订单{(i-1)是为了防止数组溢出} name[t] = name[t + 1]; greens[t] = greens[t + 1]; num[t] = num[t + 1]; time[t] = time[t + 1]; site[t] = site[t + 1]; moneys[t] = moneys[t + 1]; state[t] = state[t + 1]; } System.out.println("删除订单成功!"); i--; have = 0; } else { System.out.println("您选择的订单未签收,不能删除!"); } } else { System.out.println("无此订单!"); } }
七.编写点赞系统:
public void Like(int good) {// 点赞系统 switch (good) {// 每次选择点赞该商品+1 case 1: number[0]++; System.out.println("点赞成功!"); break; case 2: number[1]++; System.out.println("点赞成功!"); break; case 3: number[2]++; System.out.println("点赞成功!"); break; default: System.out.println("无此商品序号!"); break; } }
八.将各系统嵌套结合:
public void shown() {// 整体框架 do { give = 0; System();// 首页 System.out.print("请选择:"); int select = bdqn.nextInt(); if (select == 6) {// 退出 break; } switch (select) {// 选择功能 case 1:// 订餐 System.out.println("***我要订餐***"); Order(); break; case 2:// 餐袋 System.out.println("***查看餐袋***"); System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态"); Look(); break; case 3:// 签收 System.out.println("***签收订单***"); Sign(); break; case 4:// 删除 System.out.println("***我要订餐***"); System.out.print("请输入要删除的订单号:"); int scl = bdqn.nextInt(); Delete(scl); break; case 5:// 点赞 System.out.println("***删除订单***"); System.out.print("请选择您要点赞的菜品序号:"); int good = bdqn.nextInt(); Like(good); break; default: System.out.println("您输入的数字没有相符合的系统,请重新选择:"); break; } System.out.print("输入0返回:"); back = bdqn.nextInt(); } while (back == 0); }
九.程序入口,main()方法输出整体框架:
public static void main(String[] args) { Ordering pack = new Ordering(); pack.shown(); System.out.println("谢谢使用,欢迎下次光临!"); }
时间: 2024-11-07 06:48:55