Java实战之点菜系统(第三天)

1. 首先定义一个菜单类

定义编号、菜的名字、菜的价格
public class Dish {
    
    
    // 编号
    int id;
    // 菜的名字
    String name;
    // 菜的价格
    double price;
    public Dish(int id, String name, double price){
    
    
        this.id = id;
        this.name = name;
        this.price = price;
    }
}

2.菜单主题

基本逻辑:
1.首先呈现一个主菜单,呈现出:点菜,已点菜,买单三个模块。
2.输入点菜的编号会出现菜单,点完菜后返回主菜单
3.输入已点菜的编号会将用户已经点的菜输出给用户,然后呈现主菜单。
4.输入买单的编号会算出用户菜单的总价,然后输出给用户。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Dishmain {
    
    

    // 提前准备一些菜品,展示给用户,同时用户可以点菜
    // 定义集合,用来装饭店拥有的菜品  集合是一种菜品的名字
    static List<Dish> dishList = new ArrayList<>();
    static List<Dish> personDish = new ArrayList<>();

    public static void main(String[] args) {
    
    
        initDish();
        // 创建扫描器,获取到控制台输入的内容
        Scanner s = new Scanner(System.in);
        //写出死循环,来完成主程序的流程设计
       while (true){
    
    
            // 给用户展示主菜单
            showMenu();
            //获取内容
            int num = s.nextInt();

            //判断用户输入的数字
            switch (num){
    
    
                case 1:
                    while (true){
    
    
                        //把菜单展示给用户
                        showDishMenu();
                        // 获取用户输入的内容
                        int id = s.nextInt();
                        //判断
                        if (id == 0){
    
    
                            break;
                        }


                        // 从饭店的集合中获取菜品的对象 1 2 3 4 5
                        // 集合的索引: 0 1 2 3 4
                        Dish dish = dishList.get(id - 1);
                        System.out.println("你点了"+ dish.name+"菜");
                        // 用户点一个菜,新建一个集合用来存储用户已经点的菜
                        personDish.add(dish);
                    }
                case 2:
                    // 展示用户已经点的菜品
                    showPersonDish();
                    break;
                case 3:
                    //买单
                    buy();
                    return;
            }
        }
    }
    // 展示主菜单
    public static void showMenu(){
    
    
        System.out.println("----主菜单----");
        System.out.println("菜单\t\t\t 1");
        System.out.println("已点菜品\t\t 2");
        System.out.println("买单\t\t\t 3");
    }


    // 客户已经点的菜
    public static void showPersonDish(){
    
    
        System.out.println("----你已经点的菜品----");

        // 遍历已点的集合
        for (Dish dish : personDish){
    
    
            System.out.println(dish.id+"\t"+dish.name+"\t"+ dish.price);
        }
    }

    //买单
    public static void buy(){
    
    
        System.out.println("----稍等,正在结算----");
        //定义总金额
        double total = 0f;
        // 遍历已经点的菜品
        for (Dish dish : personDish){
    
    
            //各个菜品的累加
            total += dish.price;
        }
        System.out.println("你一共消费了:"+total);
    }


    // 展示饭店菜单
    public static  void showDishMenu(){
    
    
        System.out.println("----请你点菜----");
        //遍历集合
        for (int i = 0; i < dishList.size(); i++) {
    
    
            // 从集合中使用i 获取每一个菜品对象
            Dish dish = dishList.get(i);
            System.out.println(dish.id+"\t"+dish.name+"\t"+ dish.price);
        }
        System.out.println("----输入序号点菜,按0返回上一级----");
    }



    // 初始化菜品
    public static void initDish(){
    
    
        Dish dish = new Dish(1,"炒拉条",29.0);
        dishList.add(dish);
        Dish dish2 = new Dish(2,"炒卤面",23.0);
        dishList.add(dish2);
        dishList.add(new Dish(3,"林源盖饭",11.0));
        dishList.add(new Dish(4,"老碗面",9.5));
        dishList.add(new Dish(5,"麻辣小龙虾",50.0));

    }
}

3. 测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就完成了一个简单的点菜小流程。

4.结束语

今天出去时间比较紧,找房子走了将近三万步。太累了,就敷衍一下拜拜。
有不清楚不理解的地方可以私信我。

猜你喜欢

转载自blog.csdn.net/tyloonulinuli/article/details/121570018