package menuFood;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 原创:太原理工大学---软件学院---李同学 https://blog.youkuaiyun.com/m0_53793974/article/details/119353194?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164085425116781685351926%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164085425116781685351926&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-119353194.pc_search_insert_es_download&utm_term=JAVA%E5%AE%9E%E7%8E%B0%E9%A5%AD%E5%BA%97%E7%82%B9%E8%8F%9C%E7%B3%BB%E7%BB%9F%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187
* 复现&健壮性:Zohing https://blog.youkuaiyun.com/weixin_45241364
* java实现 点菜系统
* 欢迎大家一起交流。评论或者私信。
*/
class dish {
public int id;
public String name;
public double price;
//构造方法,每一个菜 都是一个对象
public dish(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
}
public class menu {
//声明两个集合,第一个用来保存 饭店菜单,第二个用来保存 客户所点菜单
static List<dish> restaurantList = new ArrayList<>();
static List<dish> clientList = new ArrayList<>();
public static double total = 0f;
// 展示主菜单方法。
public static void menu_index() {
System.out.println("菜单 ---> 1");
System.out.println("结账 ---> 2");
System.out.println("退菜 ---> 3");
System.out.println("退出系统 --->4");
}
public static void dish_add() {
//第一种声明方法,并添加到饭店菜单中。
dish dish_1 = new dish(1, "鱼香肉丝", 28.0);
restaurantList.add(dish_1);
dish dish_2 = new dish(2, "炖王八", 58.0);
restaurantList.add(dish_2);
dish dish_3 = new dish(3, "家常凉菜", 18.0);
restaurantList.add(dish_3);
//第二种声明方法
restaurantList.add(new dish(4,"山西过油肉",38.0));
restaurantList.add(new dish(5,"西湖牛肉羹",36.0));
}
public static void initial() {
Scanner sc = new Scanner(System.in);
boolean in_out = true;
while (in_out) {
int num = sc.nextInt();
try {
switch (num) {
case 1:
showdish_();
int show_id = sc.nextInt();
if (show_id == 0) {
System.out.println();
menu_index();
break;
} else if(show_id >= 1 && show_id <= 5){
dish dish_ = restaurantList.get(show_id - 1);
System.out.println("亲,您点了:" + dish_.name);
clientList.add(dish_);
System.out.println();
menu_index();
break;
} else {
System.out.println("菜单序号不存在,请重新输入");
System.out.println();
menu_index();
break;
}
case 2:
paying();
if(total == 0f) {
System.out.println("您还未点菜");
System.out.println();
menu_index();
}else {
System.out.println();
menu_index();
}
break;
case 3:
if(clientList.size()==0) {
System.out.println("您还未点菜");
System.out.println();
menu_index();
}else {
System.out.println("输入您要退掉菜品的编号");
int exit_id = sc.nextInt();
exitdish_(exit_id);
System.out.println();
menu_index();
}
break;
case 4:
in_out = false;
break;
default:
System.out.println("输入不正确,请重新输入");
System.out.println();
menu_index();
break;
}
}catch (Exception e){
System.out.println("输入有误,请务必输入整数!");;
String temp = sc.nextLine();//目的是为了吃掉错误信息和换行符
}
}sc.close();
}
//展示饭店菜单方法
public static void showdish_() {
if(clientList.size()==0) {
System.out.println("----您没有点菜----");
}else {
System.out.println("----您已点菜品----");
//为了方便客户能够正确的选择菜品编号,我们采用 1 2 3 4 的顺序输出已点菜品
for(int i = 0; i < clientList.size();i++){
System.out.println( (i+1) + " " + clientList.get(i).name + " " + clientList.get(i).price + "元");
}
}
System.out.println("----请您点菜----");
//遍历集合,将之前声明的对象集合 全部展示到控制台
for (int i = 0; i < restaurantList.size(); i++) {
dish dish_ = restaurantList.get(i);
System.out.println(dish_.id+ " " + dish_.price + "元" + " " + dish_.name );
}
System.out.println("---根据序号点菜,按 0 返回上一级---");
}
// 结账 遍历 clientList 集合的 price 累加即可
public static void paying() {
// 另一种遍历集合的方法。大家学习哦
for (dish dish_ : clientList) {
total += dish_.price;
}
System.out.println("您共消费:" + total + "元");
System.out.println("----正在结账,请稍等!----");
System.out.println("支付成功"+total);
}
//退菜操作 使用集合的 remove 方法。 采用有参数的方法。先告诉客户要退掉的菜品,再执行remove操作,这两句代码不能颠倒
public static void exitdish_(int i){
System.out.println("您已退掉:" + clientList.get(i-1).name + " " + clientList.get(i-1).price + "元");
clientList.remove(i-1);
}
public static void main(String[] args) {
dish_add();
menu_index();
initial();
}
}
以下代码为2023/06/28更新,如还有其他bug欢迎指正
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 原创:太原理工大学---软件学院---李同学 https://blog.youkuaiyun.com/m0_53793974/article/details/119353194?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164085425116781685351926%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164085425116781685351926&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-119353194.pc_search_insert_es_download&utm_term=JAVA%E5%AE%9E%E7%8E%B0%E9%A5%AD%E5%BA%97%E7%82%B9%E8%8F%9C%E7%B3%BB%E7%BB%9F%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187
* 复现&健壮性:Zohing https://blog.youkuaiyun.com/weixin_45241364
* java实现 点菜系统
* 欢迎大家一起交流。评论或者私信。
*/
class dish {
public int id;
public String name;
public double price;
//构造方法,每一个菜 都是一个对象
public dish(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
}
public class menu {
//声明两个集合,第一个用来保存 饭店菜单,第二个用来保存 客户所点菜单
static List<dish> restaurantList = new ArrayList<>();
static List<dish> clientList = new ArrayList<>();
public static double total = 0f;
// 展示主菜单方法。
public static void menu_index() {
System.out.println("菜单 ---> 1");
System.out.println("结账 ---> 2");
System.out.println("退菜 ---> 3");
System.out.println("退出系统 --->4");
}
public static void dish_add() {
//第一种声明方法,并添加到饭店菜单中。
dish dish_1 = new dish(1, "鱼香肉丝", 28.0);
restaurantList.add(dish_1);
dish dish_2 = new dish(2, "炖王八", 58.0);
restaurantList.add(dish_2);
dish dish_3 = new dish(3, "家常凉菜", 18.0);
restaurantList.add(dish_3);
//第二种声明方法
restaurantList.add(new dish(4,"山西过油肉",38.0));
restaurantList.add(new dish(5,"西湖牛肉羹",36.0));
}
public static void initial() {
Scanner sc = new Scanner(System.in);
boolean in_out = true;
while (in_out) {
int num = sc.nextInt();
try {
switch (num) {
case 1:
showdish_();
String show_ids = sc.next();
String[] menuId = show_ids.split(",");
for(int i = 0; i < menuId.length; i++) {
int show_id = Integer.valueOf(menuId[i]);
if (show_id == 0) {
break;
} else if(show_id >= 1 && show_id <= 5){
dish dish_ = restaurantList.get(show_id - 1);
System.out.println("亲,您点了:" + dish_.name);
clientList.add(dish_);
} else {
System.out.println("菜单序号不存在,请重新输入");
break;
}
}
System.out.println();
menu_index();
break;
case 2:
if(clientList.size()==0) {
System.out.println("您还未点菜");
System.out.println();
menu_index();
}else {
paying();
System.out.println();
menu_index();
}
break;
case 3:
if(clientList.size()==0) {
System.out.println("您还未点菜");
System.out.println();
menu_index();
}else {
System.out.println("输入您要退掉菜品的编号");
int exit_id = sc.nextInt();
boolean msg = false;
for(int i = 0; i < clientList.size();i++){
if(clientList.get(i).id == exit_id){
exitdish_(i,exit_id);
} else {
msg = true;
}
}
if(msg){
System.out.println("该菜品您还未点菜");
}
System.out.println();
menu_index();
}
break;
case 4:
in_out = false;
break;
default:
System.out.println("输入不正确,请重新输入");
System.out.println();
menu_index();
break;
}
}catch (Exception e){
System.out.println("输入有误,请务必输入整数!");;
String temp = sc.nextLine();//目的是为了吃掉错误信息和换行符
}
}sc.close();
}
//展示饭店菜单方法
public static void showdish_() {
if(clientList.size()==0) {
System.out.println("----您没有点菜----");
}else {
System.out.println("----您已点菜品----");
//为了方便客户能够正确的选择菜品编号,我们采用 1 2 3 4 的顺序输出已点菜品
for(int i = 0; i < clientList.size();i++){
System.out.println( (i+1) + " " + clientList.get(i).name + " " + clientList.get(i).price + "元");
}
}
System.out.println("----请您点菜----");
//遍历集合,将之前声明的对象集合 全部展示到控制台
for (int i = 0; i < restaurantList.size(); i++) {
dish dish_ = restaurantList.get(i);
System.out.println(dish_.id+ " " + dish_.price + "元" + " " + dish_.name );
}
System.out.println("---根据序号点菜(多点时请使用,分隔),按 0 返回上一级---");
}
// 结账 遍历 clientList 集合的 price 累加即可
public static void paying() {
// 另一种遍历集合的方法。大家学习哦
for (dish dish_ : clientList) {
total += dish_.price;
}
System.out.println("您共消费:" + total + "元");
System.out.println("----正在结账,请稍等!----");
System.out.println("支付成功"+total+" 您的菜单已重置。");
clientList.clear();
}
//退菜操作 使用集合的 remove 方法。 采用有参数的方法。先告诉客户要退掉的菜品,再执行remove操作,这两句代码不能颠倒
public static void exitdish_(int i,int menuId){
System.out.println("您已退掉:" + clientList.get(i).name + " " + clientList.get(i).price + "元");
clientList.remove(i);
}
public static void main(String[] args) {
dish_add();
menu_index();
initial();
}
}