创建Order实体类
package ordermsg;
public class Order {
private int orderId;
private String userName;
private String foodName;
private int foodNum;
private double totalPrice;
private String address;
private String time;
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFoodName() {
return foodName;
}
public void setFoodName(String foodName) {
this.foodName = foodName;
}
public int getFoodNum() {
return foodNum;
}
public void setFoodNum(int foodNum) {
this.foodNum = foodNum;
}
public double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(double totalPrice) {
this.totalPrice = totalPrice;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
@Override
public String toString() {
return "Order{" +
"orderId=" + orderId +
", userName='" + userName + ''' +
", foodName='" + foodName + ''' +
", foodNum=" + foodNum +
", totalPrice=" + totalPrice +
", address='" + address + ''' +
", time='" + time + ''' +
'}';
}
}
创建OrderMsg类
package ordermsg;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
public class OrderMsg {
public static void main(String[] args) {
ArrayList ordersList = new ArrayList<>();
//打印功能
OrderMsg.printFunction();
Scanner scanner = new Scanner(System.in);
//存储所获得的赞
int[] goods = {3, 2, 5, 1};
int userNum = 0;
do {
userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
ordersList = OrderMsg.mainFunction(userNum, ordersList, goods);
} while (userNum != 6);
}
//输入对应数字,调用相应功能
public static ArrayList mainFunction(int num, ArrayList ordersList, int[] goods) {
Scanner scanner = new Scanner(System.in);
//创建订单数组
switch (num) {
case 1:
//打印菜单
OrderMsg.printMenu(goods);
//是否继续订餐标识
String flag = "";
//初始化订单编号
int orderId = 1;
do {
//实例化订单类
Order order = new Order();
order.setOrderId(orderId++);
//获取合法的数字范围
int foodId = OrderMsg.inputValidInt(scanner, "请输入菜品序号:", 1, 4);
//根据序号获取所点菜名
String foodName = OrderMsg.getFoodName(foodId);
order.setFoodName(foodName);
//获取所点菜的份数
int foodNum = OrderMsg.inputValidInt(scanner, "输入份数:", 1, Integer.MAX_VALUE);
order.setFoodNum(foodNum);
System.out.print("请输入您的姓名:");
String userName = scanner.next();
order.setUserName(userName);
//获取收货地址
System.out.print("请输入您的收货地址:");
String address = scanner.next();
order.setAddress(address);
//根据菜品序号与所点数量获取所需支付总价钱
double totalPrice = OrderMsg.getTotalPrice(foodId, foodNum);
order.setTotalPrice(totalPrice);
order.setTime(OrderMsg.getTime());
//设定刚下的订单为未签收
order.setState(0);
//将订单添加到订单列表
ordersList.add(order);
System.out.print("还要继续点单吗?(y/n):");
String stopYN = scanner.next();
if (stopYN.equalsIgnoreCase("n")) {
OrderMsg.printFunction();
int userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
OrderMsg.mainFunction(userNum, ordersList, goods);
} else if (stopYN.equalsIgnoreCase("y")) {
OrderMsg.printMenu(goods);
flag = stopYN;
} else {
System.out.println("您输入不合法!");
}
} while (flag.equalsIgnoreCase("y"));
break;
case 2:
System.out.println("历史订单详情:");
//打印订单信息
OrderMsg.printOrder(ordersList);
//打印系统功能
OrderMsg.printFunction();
int userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
OrderMsg.mainFunction(userNum, ordersList, goods);
break;
case 3:
//打印订单
OrderMsg.printOrder(ordersList);
int oid = inputValidInt(scanner, "请输入要签收的订单编号:", 1, ordersList.size());
//签收订单
ordersList = OrderMsg.signOrder(oid , ordersList);
OrderMsg.printFunction();
userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
OrderMsg.mainFunction(userNum, ordersList, goods);
break;
case 4:
//打印订单信息
OrderMsg.printOrder(ordersList);
//获取用户要删除的订单编号
int delId = inputValidInt(scanner, "请输入要删除的订单编号:", 1, ordersList.size());
//删除订单
ordersList = OrderMsg.deleteOrder(delId, ordersList);
OrderMsg.printFunction();
userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
OrderMsg.mainFunction(userNum, ordersList, goods);
break;
case 5:
OrderMsg.printMenu(goods);
int foodId = OrderMsg.inputValidInt(scanner, "请输入要点赞的菜品序号:", 1, 4);
System.out.println("点赞成功!" + OrderMsg.getFoodName(foodId) + "获得1个赞!");
goods[foodId - 1] += 1;
OrderMsg.printFunction();
userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
OrderMsg.mainFunction(userNum, ordersList, goods);
break;
case 6:
System.out.println("欢迎下次光临!");
System.exit(0);
break;
default:
System.out.println("暂未开通该功能--------");
}
return ordersList;
}
//删除订单,提供订单编号与订单集合,删除订单
public static ArrayList deleteOrder(int oid, ArrayList list) {
list.remove(oid - 1);//编号从0开始删除
System.out.println(oid + "号订单删除成功");
return list;
}
//根据订单编号签收订单
public static ArrayList signOrder(int oid, ArrayList lists) {
Order o = (Order) lists.get(oid-1);
if (o.getOrderId() == 0) {
o.setState(1);
System.out.println("签收" + (oid + 1) + "号订单成功!");
} else if (o.getOrderId() == 1) {
o.setState(1);
System.out.println(oid + "号订单已签收!");
}
return lists;
}
//打印订单信息
public static void printOrder(ArrayList ordersList) {
if (ordersList.size() == 0) {
System.out.println("您的订单列表空空如也!");
}
for (int i = 0; i < ordersList.size(); i++) {
System.out.println("**************第" + (i + 1) + "单******************");
Order o = (Order) ordersList.get(i);
int oid = o.getOrderId();
String userName = o.getUserName();
String fName = o.getFoodName();
int fNum = o.getFoodNum();
double tPrice = o.getTotalPrice();
String address = o.getAddress();
String time = o.getTime();
String state = "";
if (o.getState() == 1) {
state = "已签收";
} else {
state = "未签收";
}
System.out.println("订单编号:" + (i + 1) + " 用户姓名:" + userName + " 菜品名称:" + fName + " 下单数量:X" + fNum + " 支付金额:" + tPrice +
"¥ 收货地址:" + address + " 下单时间:" + time + " 订单状态:" + state);
}
}
//根据菜品序号与所点数量获取单个菜品所需支付总价钱
public static double getTotalPrice(int foodId, int foodNum) {
if (foodId == 1) {
return 38 * foodNum;
} else if (foodId == 2) {
return 52 * foodNum;
} else if (foodId == 3) {
return 48 * foodNum;
} else if (foodId == 4) {
return 8 * foodNum;
} else {
return 0;
}
}
//根据菜品序号返回菜品名称
public static String getFoodName(int id) {
String name = "";
switch (id) {
case 1:
name = "黄焖鸡";
case 2:
name = "金汤鱼";
break;
case 3:
name = "红烧肉";
break;
case 4:
name = "辣椒炒蛋";
break;
default:
System.out.println("没有该菜--------");
}
return name;
}
//返回当前时间
public static String getTime() {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
return simpleDateFormat.format(date);
}
//判断用户输入是否在指定范围
private static int inputValidInt(Scanner scanner, String msg, int start, int end) {
int ret = 0;
while (true) {
System.out.print(msg);
if (scanner.hasNextInt()) {
ret = scanner.nextInt();
if (ret >= start && ret <= end) {
break;
}
} else {
System.out.print("输入不合法!");
scanner.next();
}
}
return ret;
}
//打印功能列表
public static void printFunction() {
System.out.println("================欢迎光临订餐系统====================");
String[] function = {"1、我要订餐", "2、查看订单", "3、签收订单", "4、删除订单", "5、我要点赞", "6、退出系统"};
for (String s : function) {
System.out.println(s);
}
}
//打印菜单列表
public static void printMenu(int[] goods) {
System.out.println("=================特色本店===================");
String[] menu = {"1号--黄焖鸡---38元", "2号--金汤鱼---52元", "3号--红烧肉---48元", "4号--辣椒炒蛋---8元"};
for (int i = 0; i < menu.length; i++) {
System.out.println(menu[i] + "---" + goods[i] + "人觉得很赞");
}
}
}
运行结果:



