资料来源:https://www.bilibili.com/video/BV1Aq4y1W79E?p=1
1、菜品类:Dish
package cn.tx.demo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/*** 菜品类*/@Data@NoArgsConstructor@AllArgsConstructorpublic class Dish {// 编号Integer id;// 菜名String name;// 价格Double price;}
2、已点菜品类:PersonDish
package cn.tx.demo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/*** 已点菜品类*/@Data@NoArgsConstructor@AllArgsConstructorpublic class PersonDish extends Dish{// 数量Integer num;}
3、点菜类:DishApp
package cn.tx.demo;import java.util.ArrayList;import java.util.List;import java.util.Scanner;/*** 点菜系统*/public class DishApp {// 提前准备一些菜品,展示给用户,同时用户可以点菜。// 定义集合:表示小饭店拥有的菜品static List<Dish> dishList = new ArrayList<>();// 用户已点的菜品static List<PersonDish> personDist = new ArrayList<>();public static void main(String[] args) {// 先初始化菜品init();// 创建扫描器对象,获取到控制台输入的内容Scanner scanner = new Scanner(System.in);while (true){// 给用户展示主菜单showMenu();// 获取输入的内容int num = scanner.nextInt();// 判断用户输入的数字switch (num){case 1:while (true){// 展示菜单给用户showDishMenu();// 获取输入的内容int id = scanner.nextInt();// 判断。输入0返回上一级if(id == 0){break;}// 从饭店的集合中获取到菜品Dish dish = dishList.get(id - 1);System.out.println("亲,您点了:" + dish.getName() + "菜");PersonDish personDish = new PersonDish();personDish.setId(dish.getId());personDish.setName(dish.getName());personDish.setPrice(dish.getPrice());personDish.setNum(1);int sum = 0;for (int i = 0; i < personDist.size(); i++) {if(personDist.get(i).getId().equals(dish.getId())){personDist.get(i).setNum(personDist.get(i).getNum() + 1);break;}sum += 1;}if(sum == personDist.size()){personDist.add(personDish);}}case 2:// 展示用户已经点的菜品showPersonDish();break; // break:结束switch,继续运行while循环case 3:// 买单buy();return; // return:结束整个程序}}}/*** 买单*/private static void buy() {System.out.println("-------请稍等,正在结算-------");// 定义总金额double total = 0.0;for (PersonDish personDish : personDist) {double price = personDish.getPrice();Integer num = personDish.getNum();total += price * num;}System.out.println("亲,您本次共消费了:" + total + "元");}/**** 展示客户已点的菜*/private static void showPersonDish() {System.out.println("--------您已点的菜品---------");// personDist.stream().personDist.forEach(dish -> {System.out.println(dish.getId() + "\t" + dish.getName() + "\t" + dish.getPrice() + "\t" + dish.getNum());});}/*** 展示饭店菜单*/private static void showDishMenu() {System.out.println("---------请您点菜----------");dishList.forEach(dish -> {System.out.println(dish.getId() + "\t" + dish.getName() + "\t" + dish.getPrice());});System.out.println("---输入序号点菜,按0返回上一级---");}/*** 展示主菜单*/public static void showMenu(){System.out.println("----------主菜单------------");System.out.println("菜单\t\t\t 1");System.out.println("已点菜品\t\t\t 2");System.out.println("买单\t\t\t 3");System.out.println("----根据编号请选择服务------");}/*** 初始化菜品*/public static void init(){Dish dish1 = new Dish(1, "香辣肉丝", 29.0);Dish dish2 = new Dish(2, "炖王八", 59.0);Dish dish3 = new Dish(3, "家常凉菜", 21.0);Dish dish4 = new Dish(4, "地三鲜", 24.0);Dish dish5 = new Dish(5, "油焖大虾", 55.0);dishList.add(dish1);dishList.add(dish2);dishList.add(dish3);dishList.add(dish4);dishList.add(dish5);}}
