我是靠谱客的博主 贪玩康乃馨,最近开发中收集的这篇文章主要介绍【Java小项目一:点菜系统】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

该项目用到了Java知识点有:while循环、switch、break、continue、HashMap、ArrayList等。

/*
* 菜品类
* */
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;
}
@Override
public String toString() {
return id+"t"+name+"t"+price;
}
}
/*
* 点菜主程序
* */
public class DishApp {
//菜品集合
static List<Dish> dishList = new ArrayList<>();
//用户已点菜品
//用HashMap存储顾客点的菜,可以同一个个菜点多次只修改数量
//键Dish:菜品类、 值Integer:同一个菜点的数量
static HashMap<Dish,Integer> personMap = new HashMap<>();
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+" 菜");
//用户点一个,存储一个
//判断该菜是否已点,点过的数量+1
if (personMap.containsKey(dish)){
int newnum = personMap.get(dish) + 1;
personMap.put(dish,newnum);
}else{
personMap.put(dish,1);
}
}
case 2:
//展示用户已点菜品
showPersonDish();
break;
case 3:
//买单
buy();
return; //结束while循环
case 4:
//退菜
while (true){
//展示菜单
showPersonDish();
int id = s.nextInt();
if (id==0){
break;
}
//从菜品集合获取对象 1 2 3 4 5
//集合索引
Dish dish = dishList.get(id - 1);
//判断该菜是否点了,点了数量-1
if (personMap.containsKey(dish)){
int newnum = personMap.get(dish) - 1;
System.out.println("亲,您退了:"+dish.name+" 菜");
personMap.put(dish,newnum);
//当已点菜的个数为0时,从顾客点单中删除
if (personMap.get(dish)==0){
personMap.remove(dish);
}
}else{
System.out.println("----亲,您该菜未点----");
continue;
}
}
}
}
}
private static void buy() {
System.out.println("---请稍等,正在结算---");
//定义总金额
double total = 0f;
Set<Map.Entry<Dish, Integer>> entrySet = personMap.entrySet();
for (Map.Entry<Dish,Integer> one:entrySet){
Dish key = one.getKey();
Integer value = one.getValue();
System.out.println(key+"t"+value);
//总金额=单价*数量
total += key.price * value;
}
System.out.println("亲,您本次共消费了:"+total+" 元");
}
private static void showPersonDish() {
System.out.println("---您已点的菜品---");
Set<Map.Entry<Dish, Integer>> entrySet = personMap.entrySet();
for (Map.Entry<Dish,Integer> one:entrySet){
Dish key = one.getKey();
Integer value = one.getValue();
System.out.println(key+"t"+value);
}
System.out.println("----输入序号退菜,按0返回上一级----");
}
private static void showDishMenu() {
System.out.println("---请您点菜---");
for (int i = 0; i < dishList.size(); i++) {
Dish dish = dishList.get(i);
System.out.println(dish.toString());
}
System.out.println("----输入序号点菜,按0返回上一级----");
}
public static void showMenu(){
System.out.println("-----主菜单-----");
System.out.println("菜单ttt 1");
System.out.println("已点菜品tt 2");
System.out.println("买单ttt 3");
System.out.println("退菜ttt 4");
System.out.println("---根据编号选择服务---");
}
public static void initDish(){
Dish dish = new Dish(1, "香辣肉丝", 29.0);
dishList.add(dish);
Dish dish2 = new Dish(2,"炖王八",59.0);
dishList.add(dish2);
//存放菜品
dishList.add(new Dish(3,"家常凉菜",21.0));
dishList.add(new Dish(4,"地三鲜",24.0));
dishList.add(new Dish(5,"油焖大虾",55.0));
}
}

链接: 参考来源

最后

以上就是贪玩康乃馨为你收集整理的【Java小项目一:点菜系统】的全部内容,希望文章能够帮你解决【Java小项目一:点菜系统】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部