个人技术分享

ArrayList的综合案例-模仿外卖系统中的商家系统

需求:

完成菜品的上架、以及菜品信息浏览功能。

目标:

使用所学的ArrayList集合结合面向对象编程实现以上两个需求。

Food类:

package cn.ensource.arraylist;

public class Food {
    private String name;
    private double price;
    private String desc;

    public Food() {
    }

    public Food(String name, double price, String desc) {
        this.name = name;
        this.price = price;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

FoodOperator类:

package cn.ensource.arraylist;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 菜品操作类,负责对菜品上架、浏览的操作
 */
public class FoodOperator {
    // 定义一个ArrayList集合对象,负责存储菜品对象信息
    // 我们应该用一个数据库来装菜品信息
    private ArrayList<Food> foodList = new ArrayList<>();

    // 2. 开发功能,上架菜品功能
    public void addFood() {
        // 3. 创建一个菜品对象,封装上架的菜品信息
        Food f = new Food();

        // 4. 录入菜品信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入该菜品名称:");
        String name = sc.nextLine();
        f.setName(name);
        System.out.println("请您输入该菜品价格:");
        String price = sc.nextLine();
        f.setPrice(Double.parseDouble(price));
        System.out.println("请您输入该菜品描述:");
        String desc = sc.nextLine();
        f.setDesc(desc);

        // 把菜品对象存入到集合中去
        foodList.add(f);
        System.out.println("上架成功!");

    }

    // 3. 展示菜品
    public void showAllFoods() {
        if (foodList.isEmpty()) {
            System.out.println("什么菜品都没有,请先去上架菜品!");
            return;
        }
        for (int i = 0; i < foodList.size(); i++) {
            Food f = foodList.get(i);
            System.out.println(f.getName() + " " + f.getPrice() + " " + f.getDesc());
        }
    }

    // 负责展示操作界面
    public void start() {
        while (true) {
            System.out.println("请选择功能:");
            System.out.println("1. 上架菜品");
            System.out.println("2. 展示菜品");
            System.out.println("3. 退出");

            Scanner sc = new Scanner(System.in);
            System.out.println("请选择您的操作;");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    addFood();
                    break;
                case "2":
                    showAllFoods();
                    break;
                case "3":
                    System.out.println("下次再来哦!");
                    return;   // 不要break,要用return;退出方法
                default:
                    System.out.println("您输入的命令不存在!");
            }
        }
    }
}

测试类:

package cn.ensource.arraylist;

import java.util.ArrayList;

public class ArrayListCase3 {
    public static void main(String[] args) {
        // 目标:完成拓展案例,商家菜品上架操作
        // 1. 设置一个菜品类,负责创建菜品对象,封装菜品数据
        // 2. 设计一个菜品操作类,FoodOperator, 负责完成对菜品的业务实现:上架和浏览信息
        FoodOperator operator = new FoodOperator();
        operator.start();
    }
}