java小项目——点餐系统

package bilibili_project.Meau;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Main {

//为什么存menu.Dish ,因为只让存有id,名字和价格这三个属性的对象,数组也是同样理解的。

//不能放在main函数内,arraylist是一个全局变量,放main里 initdish就无法使用了

static List< menu.Dish> dishList=new ArrayList<>();

static List<menu.Dish> reserve_dishList=new ArrayList<>();

public static void main(String[] args) {

initDish();

//和用户互动Scanner

Scanner s=new Scanner(System.in);

//强制死循环 后面用if 或者switch来判断 break跳出

while(true){

show_menu();

int consequence =s.nextInt();

switch (consequence){

//饭店菜品

case 1:

//******难点

//再来一个while死循环 在里面用Scanner来卡住 不然会出现多次弹出主菜单的情况

while (true){

show_DishMenu();

//获取用户需要点什么菜

int number=s.nextInt();

//0退出

if (number==0){

break;

}

//因为index是从0开始

menu.Dish dish = dishList.get(number - 1);

System.out.println("您点了:\t"+dish.name+"\t菜");

//额外创建一个reserve_dishList 来储存用户已经点了的菜单

//此处储存的dish 已经ctrl alt+v过了

reserve_dishList.add(dish);

}

//这里得加一个break 不然会自动跳到case2

break;

//已点菜品

case 2:

show_difiniteDish();

break;

//退菜

case 3:

remove();

while (true){

int number=s.nextInt();

reserve_dishList.remove(number-1);

break;

}

break;

//买单

case 4:

finish();

// return 和 break的区别 break是跳出循环 而return是彻底结束整个方法

return;

}

}

}

//-------------------------------------------------------------------------

//初始化菜品

public static void initDish(){

menu.Dish dish=new menu.Dish(1,"香辣肉丝",29.0);

dishList.add(dish);

menu.Dish dish2=new menu.Dish(2,"炖王八",59.0);

dishList.add(dish2);

// 比一个个new出来再add添加 速度快一点

dishList.add(new menu.Dish(3,"油焖大虾",55.0));

dishList.add(new menu.Dish(4,"地三鲜",24.0));

dishList.add(new menu.Dish(5,"家常凉菜",21.0));

}

//主页面

public static void show_menu(){

System.out.println("-----主菜单-----");

// \t代表空格的意思

System.out.println("菜单\t\t\t 1");

System.out.println("已点菜品\t\t 2");

System.out.println("退菜\t\t\t 3");

System.out.println("买单\t\t\t 4");

System.out.println("-----请选择你需要的编号-----");

}

//主菜单

public static void show_DishMenu(){

System.out.println("-----请您点菜-----");

for (int i = 0; i < dishList.size(); i++) {

//ctrl +alt +v 快速生成

menu.Dish dish = dishList.get(i);

System.out.println(dish.id+" "+dish.name+" "+dish.price);

//或者用原始方法

//System.out.println(dishList.get(i).id+.............);

}

System.out.println("-----输入序号点菜,按0返回上一级-----");

}

//已点菜单

public static void show_difiniteDish(){

System.out.println("-----您已经下单的菜品有-----");

for (int i = 0; i < reserve_dishList.size(); i++) {

menu.Dish dish = reserve_dishList.get(i);

System.out.println(dish.id+" "+dish.name+" "+dish.price);

}

}

//退菜

public static void remove(){

System.out.println("-----选择需要退款的菜品-----");

for (int i = 0; i < reserve_dishList.size(); i++) {

menu.Dish dish = reserve_dishList.get(i);

System.out.println("菜品顺序号:"+(i+1)+" "+dish.name+" "+dish.price);

}

}

//结账

public static void finish(){

System.out.println("-----结算中-----");

double s=0;

for (int i = 0; i < reserve_dishList.size(); i++) {

menu.Dish dish = reserve_dishList.get(i);

s=dish.price+s;

}

System.out.println("您本次一共消费:"+s+"元");

System.out.println("欢迎再次光临");

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值