目录
4、创建两个数组接受订单 和 菜单(对其中进行基础内容编辑)
该代码可能有部分内容多余
一、订单类
import java.io.Serializable;
//订单信息类
public class FoodOrder implements Serializable {
private String person; //订餐人
private String meal; //餐
private int price;
private int time;
private String address;
private String status; //状态
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getMeal() {
return meal;
}
public void setMeal(String meal) {
this.meal = meal;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
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 FoodOrder() {
}
public FoodOrder(String person, String meal, int price, int time, String address, String status) {
this.person = person;
this.meal = meal;
this.price = price;
this.time = time;
this.address = address;
this.status = status;
}
@Override
public String toString() {
return " " +person + " " + meal + " " + price +"元 "+ time +"点 "+address + " " + status ;
}
}
二、菜单类
import java.io.Serializable;
//菜单信息类
public class Menu implements Serializable {
private String foodName;
private int foodPrice;
private int giveLike;
// 点赞
public String getFoodName() {
return foodName;
}
public void setFoodName(String foodName) {
this.foodName = foodName;
}
public int getFoodPrice() {
return foodPrice;
}
public void setFoodPrice(int foodPrice) {
this.foodPrice = foodPrice;
}
public int getGiveLike() {
return giveLike;
}
public void setGiveLike(int giveLike) {
this.giveLike = giveLike;
}
public Menu() {
}
public Menu(String foodName, int foodPrice, int giveLike) {
this.foodName = foodName;
this.foodPrice = foodPrice;
this.giveLike = giveLike;
}
@Override
public String toString() {
return foodName +" "+ foodPrice + "元 "+ giveLike + "赞";
}
}
三、方法类
1、导包
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
后面全部写于定义的类中
2、所有方法外定义部分对象
Scanner sc = new Scanner(System.in);
List<FoodOrder> foodOrders = new ArrayList<>();
// 订单集合
List<Menu> menus = new ArrayList<>();
// 菜单集合
3、单独抛异常
public FoodMethod() throws IOException {
}
4、创建两个数组接受订单 和 菜单(对其中进行基础内容编辑)
public void start() { //初始化基础订单和 菜单
FoodOrder foodOrder1 = new FoodOrder("张博远", "糖板栗2份", 30, 12, "2号公寓", "未签收");
FoodOrder foodOrder2 = new FoodOrder("张古木", "土豆丝3份", 24, 13, "2号公寓", "已签收");
foodOrders.add(foodOrder1);
foodOrders.add(foodOrder2);
Menu menu1 = new Menu("糖板栗", 12, 0);
Menu menu2 = new Menu("香辣鱼", 16, 0);
Menu menu3 = new Menu("土豆丝", 6, 0);
Menu menu4 = new Menu("烤羊肉", 10, 0);
Menu menu5 = new Menu("甜果汁", 3, 0);
menus.add(menu1);
menus.add(menu2);
menus.add(menu3);
menus.add(menu4);
menus.add(menu5);
}
5、主方法
public void mainBody() throws IOException {
start();
menu(menus);
foodOrderAdd(foodOrders);
a:
do {
soutBody();
int num = sc.nextInt();
switch (num) {
case 1: //我要点餐
menuRead(menus); //菜单展示
orderFoods(foodOrders,menus);
foodOrderAdd(foodOrders); //订单刷新
break;
case 2: //查看餐袋
foodOrderRead(foodOrders);
break;
case 3: //签收订单
foodOrderRead(foodOrders); //订单展示
orderOver(foodOrders);
break;
case 4: //删除订单
foodOrderRead(foodOrders); //订单展示
orderDelete(foodOrders);
foodOrderAdd(foodOrders); //订单刷新
break;
case 5: //我要点赞
menuRead(menus); //菜单展示
giveLikes(menus);
menu(menus); //菜单刷新
break;
case 6: //退出系统
System.out.println("感谢使用本系统,再见");
break a;
default:
System.out.println("无此功能!!!");
break;
}
} while (true);
}
6、页面输出
public void soutBody() { //页面输出
System.out.println("============================");
System.out.println("1、我要点餐" + "\t2、查看餐袋" + "\t3、签收订单");
System.out.println("4、删除订单" + "\t5、我要点赞" + "\t6、退出系统");
System.out.println("============================");
System.out.println("亲,输入你要进行的操作:");
}
7、菜单
1>刷新
public void menu(List<Menu> menus) throws IOException { //菜单
ObjectOutputStream objectOutMenu = new ObjectOutputStream(new FileOutputStream("D:\\workspace\\Java722/Menu.txt"));
for (Menu a : menus) {
objectOutMenu.writeObject(a);
}
objectOutMenu.flush();
objectOutMenu.close();
}
2>读取
public void menuRead(List<Menu> menus) throws IOException { //菜单读取
ObjectInputStream objectInMenu = new ObjectInputStream(new FileInputStream("D:\\workspace\\Java722/Menu.txt"));
Object num;
for (int i = 1; true; i++) {
try {
num = objectInMenu.readObject();
System.out.println(i + " " + num);
} catch (Exception e) {
break;
}
}
menu(menus);
objectInMenu.close();
}
8、订单
1>刷新
public void foodOrderAdd(List<FoodOrder> foodOrders) throws IOException { //订单
ObjectOutputStream objectOutOrder = new ObjectOutputStream(new FileOutputStream("D:\\workspace\\Java722/OrderFoods.txt"));
for (FoodOrder a : foodOrders) {
objectOutOrder.writeObject(a);
}
objectOutOrder.flush();
objectOutOrder.close();
}
2>读取
public void foodOrderRead(List<FoodOrder> foodOrders) throws IOException { //订单读取功能
ObjectInputStream objectInOrder = new ObjectInputStream(new FileInputStream("D:\\workspace\\Java722/OrderFoods.txt"));
Object num;
// while ((num = objectInOrder.readObject()) != null) {
// System.out.println(i + " " + num);
// }
// 这样写会产生EOFException异常,且无法正常throw抛出
// 该异常为文件读取到文件尾的信号
for (int i = 1; true; i++) {
try {
num = objectInOrder.readObject();
System.out.println(i + " " + num);
} catch (Exception e) {
break;
}
}
foodOrderAdd(foodOrders);
objectInOrder.close();
}
9、点餐
public void orderFoods(List<FoodOrder> foodOrders, List<Menu> menus) { //点餐功能
FoodOrder foodOrder = new FoodOrder();
System.out.println("请输入您的姓名:");
foodOrder.setPerson(sc.next());
System.out.println("请输入你要点的菜的序号:");
int num1 = sc.nextInt();
System.out.println("请输入你需要的份数:");
int count1 = sc.nextInt();
foodOrder.setMeal(menus.get(num1 - 1).getFoodName() + count1 + "份");
foodOrder.setPrice(menus.get(num1 - 1).getFoodPrice() * count1);
if (foodOrder.getPrice() < 30) {
foodOrder.setPrice(foodOrder.getPrice() + 3);
System.out.println("总费用不足30,加运费3元");
} else {
System.out.println("总费用达30,免运费OVO");
}
System.out.println("请输入送达时间:");
while (true) {
foodOrder.setTime(sc.nextInt());
if (foodOrder.getTime() < 10 || foodOrder.getTime() > 14) {
System.out.println("非配送时间,请重新输入:");
} else {
break;
}
}
System.out.println("请输入送达地址:");
foodOrder.setAddress(sc.next());
foodOrder.setStatus("未签收");
foodOrders.add(foodOrder); //将对象存入数组中
}
10、订单签收
public void orderOver(List<FoodOrder> foodOrders) throws IOException { //订单签收功能
System.out.println("请选择你要签收的订单:");
int num = sc.nextInt();
while (num > foodOrders.size() || num < 0) {
System.out.println("对不起,不存在此订单,请重新输入订单号:");
num = sc.nextInt();
}
for (int i = 0; i < foodOrders.size(); i++) {
if (foodOrders.get(num - 1).getStatus().equals("未签收") && num == i + 1) {
foodOrders.get(i).setStatus("已签收");
foodOrderAdd(foodOrders);
System.out.println("订单签收成功!");
}
}
}
11、订单删除
public void orderDelete(List<FoodOrder> foodOrders) { //订单删除功能
System.out.println("请选择你要删除的订单:");
int num4 = sc.nextInt();
if (foodOrders.get(num4 - 1).getStatus().equals("未签收")) {
System.out.println("当前订单未签收,不可删除");
} else {
foodOrders.remove(num4 - 1);
// 删除该下表的对象
}
}
12、菜单点赞
public void giveLikes(List<Menu> menus) { //菜单点赞功能
System.out.println("请选择你要点赞的菜的序号:");
int num5 = sc.nextInt();
menus.get(num5 - 1).setGiveLike(menus.get(num5 - 1).getGiveLike() + 1);
System.out.println("点赞成功,感谢QWQ");
}
四、测试类
import java.io.IOException;
//测试类
public class Foodie {
public static void main(String[] args) throws IOException, ClassNotFoundException {
FoodMethod foodMethod=new FoodMethod();
foodMethod.mainBody();
}
}