1.订单实体类
public class Order { private String name;// 订餐人姓名 private String food;// 所选菜品 private int time;// 送餐时间 private String address;// 送餐地址 private int state;// 订单状态 private double sumPrice;// 餐品总金额 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFood() { return food; } public void setFood(String food) { this.food = food; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getState() { return state; } public void setState(int state) { this.state = state; } public double getSumPrice() { return sumPrice; } public void setSumPrice(double sumPrice) { this.sumPrice = sumPrice; } // 构造方法 public Order(String name, String food, int time, String address, int state, double sumPrice) { super(); this.name = name; this.food = food; this.time = time; this.address = address; this.state = state; this.sumPrice = sumPrice; } }
2.菜单实体类
public class Food { private String foodName;//菜品名称 private double price;//单价 private int praiseNum;//点赞数 public String getFoodName() { return foodName; } public void setFoodName(String foodName) { this.foodName = foodName; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getPraiseNum() { return praiseNum; } public void setPraiseNum(int praiseNum) { this.praiseNum = praiseNum; } //构造方法 public Food(String foodName, double price, int praiseNum) { super(); this.foodName = foodName; this.price = price; this.praiseNum = praiseNum; } }
3.业务逻辑类
import java.util.Scanner; public class OrderMgr { public static final Scanner sc = new Scanner(System.in); Order[] orders = new Order[5]; Food[] foods = new Food[3]; public void init() { // 默认菜品并添加到数组 Food food1 = new Food("小炒肉", 11.0, 0); Food food2 = new Food("红烧肉", 15.0, 0); Food food3 = new Food("黄焖鸡", 16.0, 0); foods[0] = food1; foods[1] = food2; foods[2] = food3; // 默认有两条订单 Order order1 = new Order("**涛", "黄焖鸡1份", 12, "幸福大街一号", 0, 22.0); Order order2 = new Order("**涛", "小炒肉1份", 12, "幸福大街一号", 0, 17.0); // 添加到数组 orders[0] = order1; orders[1] = order2; } public void start() { int index; do { // 菜单栏 menu(); // 手动输入菜单栏选项 index = sc.nextInt(); while (index > 6 || index <= 0) { System.out.println("对不起您输入的有误,请重新输入!"); menu(); index = sc.nextInt(); } switch (index) { case 1: // 我要订餐 orderFood(orders, foods); break; case 2: // 查看餐袋 look(orders); break; case 3: // 签收订单 signFor(orders); break; case 4: // 删除订单 delOrder(orders); break; case 5: // 我要点赞 praise(foods); break; case 6: // 退出系统 System.out.println("谢谢使用!"); System.exit(0); break; } while (index != 0) { System.out.println("输入0返回:"); index = sc.nextInt(); } } while (index == 0); } // 菜单栏 public void menu() { System.out.println("欢迎使用“吃货联盟订餐系统”"); 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("****************************"); System.out.println("请选择:"); } // 我要订餐 public void orderFood(Order[] orders, Food[] foods) { boolean isAdd = false;// true:记录找到一个为空的位置,可以插入,false:没有找到 // 查找要插入的位置 for (int i = 0; i < orders.length; i++) { if (orders[i] == null) { isAdd = true;// 记录一下,已经找到一个为空的位置 System.out.println("序号t菜名t单价t点赞数"); for (int j = 0; j < foods.length; j++) { System.out.println((j + 1) + "t" + foods[j].getFoodName() + "t" + foods[j].getPrice() + "元t" + foods[j].getPraiseNum() + "赞"); } // 输入所选餐品编号,份数,订餐人姓名,送餐时间,送餐地址 int foodId; while (true) { System.out.print("请选择您要点的菜品编号:"); foodId = sc.nextInt(); if (foodId <= 3 && foodId >= 1) { break; } else { System.out.println("对不起,您输入的有错误请重新输入!"); } } int foodNums; while (true) { System.out.print("请选择您要点的菜品份数:"); foodNums = sc.nextInt(); if (foodNums > 0) { break; } else { System.out.println("对不起,您输入的有错误请重新输入!"); } } System.out.print("请输入订餐人姓名:"); String name = sc.next(); System.out.print("请输入送餐时间(送餐时间为10点到20点准时送餐):"); int time = sc.nextInt(); while (time > 20 || time < 10) { System.out.println("对不起您输入的时间不在送餐时间范围内,请输入10~20之间的整数:"); time = sc.nextInt(); } System.out.print("请输入送餐地址:"); String address = sc.next(); // 计算餐费 double sumPrice = foods[foodId - 1].getPrice() * foodNums; // 送餐费,餐费达到50元免6元送餐费 double deliCharge = sumPrice >= 50 ? 0.0 : 6.0; // 显示订单信息 System.out.println("订餐成功!"); System.out.println("您订的是:" + foods[foodId - 1].getFoodName() + " " + foodNums + "份"); System.out.println("订餐人:" + name); System.out.println("送餐时间:" + time + "点"); System.out.println("送餐地址:" + address); System.out.println("餐费:" + sumPrice + ",送餐费:" + deliCharge + "元"); System.out.println("订单总金额:" + (sumPrice + deliCharge) + "元"); // 保存数据 String foodName = foods[foodId - 1].getFoodName() + foodNums + "份"; Order order = new Order(name, foodName, time, address, 0, sumPrice); orders[i] = order; break; } } // 如果没有找到为空的位置,则提示信息 if (!isAdd) { System.out.println("对不起,您的餐袋已满!"); } } // 查看餐袋 public void look(Order[] orders) { System.out.println("********查看餐袋********"); System.out.println("序号t订餐人t所订餐品信息t送餐时间t送餐地址tt总金额t状态"); // 遍历数组 for (int i = 0; i < orders.length; i++) { if (orders[i] != null) { String state = orders[i].getState() == 0 ? "已预订" : "已完成"; System.out.println((i + 1) + "t" + orders[i].getName() + "t" + orders[i].getFood() + "t" + orders[i].getTime() + "点t" + orders[i].getAddress() + "t" + orders[i].getSumPrice() + "t" + state); } } } // 签收订单 public void signFor(Order[] orders) { System.out.println("********签收订单********"); System.out.println("请输入要签收的订单编号:"); int signOrderId = sc.nextInt(); boolean isFind = false;// 记录这条订单true:表示找到,false:表示没有找到 // 查找这条订单 for (int i = 0; i < orders.length; i++) { // 找到是已完成;提示不能签收,状态是预定:可以签收 if (orders[i] != null && orders[i].getState() == 1 && signOrderId == i + 1) { isFind = true; System.out.println("对不起,您的订单已经完成签收,不能再次签收!"); break; } else if (orders[i] != null && orders[i].getState() == 0 && signOrderId == i + 1) { isFind = true; orders[i].setState(1);// 状态值改为已完成状态 System.out.println("订单签收成功!"); break; } } // 没找到订单 if (!isFind) { System.out.println("对不起,此订单不存在!"); } } // 删除订单 public void delOrder(Order[] orders) { System.out.println("********删除订单********"); System.out.println("请输入要删除的订单号:"); int delId = sc.nextInt(); int delIndex = -1;// 删除订单的下标 boolean isDelFind = false; // 循环查找这条订单 for (int i = 0; i < orders.length; i++) { // 找到此订单,已签收:执行删除操作,未签收:输出提示信息 if (orders[i] != null && orders[i].getState() == 1 && delId == i + 1) { delIndex = i; isDelFind = true; break; } else if (orders[i] != null && orders[i].getState() == 0 && delId == i + 1) { isDelFind = true; System.out.println("您选择的订单未签收,不能删除!"); break; } } // 未找到此订单 if (!isDelFind) { System.out.println("对不起,此条订单不存在!"); } // 执行删除操作 if (delIndex != -1) { // 循环移位(从前往后) for (int i = delIndex + 1; i <= orders.length - 1; i++) { orders[i - 1] = orders[i]; } // 最后一位清空 orders[orders.length - 1] = null; System.out.println("订单删除成功!"); } } public void praise(Food[] foods) { // 我要点赞 System.out.println("********我要点赞********"); // 显示所有餐品信息 System.out.println("序号t菜名t单价t点赞数"); for (int j = 0; j < foods.length; j++) { System.out.println((j + 1) + "t" + foods[j].getFoodName() + "t" + foods[j].getPrice() + "元t" + foods[j].getPraiseNum() + "赞"); } // 输入要点赞的餐品序号 int dishId; while (true) { System.out.print("请选择您要点的菜品编号:"); dishId = sc.nextInt(); if (dishId <= 3 && dishId >= 1) { break; } else { System.out.println("对不起,您输入的有错误请重新输入!"); } } // 该序号的餐品点赞数加一 foods[dishId - 1].setPraiseNum(foods[dishId - 1].getPraiseNum() + 1); // 显示 System.out.println("点赞成功!"); System.out.println(foods[dishId - 1].getFoodName() + " " + foods[dishId - 1].getPraiseNum() + "赞"); } }
4.测试类
public class Test { public static void main(String[] args) { OrderMgr om = new OrderMgr(); om.init(); om.start(); } }