吃货联盟I/O流和集合实现(2023.7.22)

 

目录

一、订单类

二、菜单类

三、方法类

1、导包

 2、所有方法外定义部分对象

3、单独抛异常

4、创建两个数组接受订单 和 菜单(对其中进行基础内容编辑)

5、主方法

6、页面输出

7、菜单

1>刷新

2>读取

8、订单

1>刷新

2>读取

9、点餐

10、订单签收

11、订单删除

12、菜单点赞

四、测试类


该代码可能有部分内容多余

一、订单类

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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值