该项目用到了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;}@Overridepublic 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 4Dish dish = dishList.get(id - 1);System.out.println("亲,您点了:"+dish.name+" 菜");//用户点一个,存储一个//判断该菜是否已点,点过的数量+1if (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);//判断该菜是否点了,点了数量-1if (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("菜单\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 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小项目一:点菜系统】相关推荐

  1. java小项目租车系统_Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的"呱呱租车系统" 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金 ...

  2. java小项目租车系统_Java小作业--嘻嘻租车小系统

    Java作业–租车小系统 项目介绍: 根据所学知识,编写一个控制台版的"嘻嘻租车系统" 功能: 展示所有可租车辆 选择车型.租车天数 展示租车清单,包括:总金额.总载货量及其车型 ...

  3. java小项目鲜花销售系统

    项目:七彩鲜花销售系统 一.练习目标 1.体会数组的作用 2.找到分层开发的感觉 3.收获分层开发的兴趣 4.作出效果,找到自信 5.学会调试错误 6.掌握数组的增删改查方法 全部讲解和练习时间控制在 ...

  4. JAVA小项目之影院系统和员工管理系统

    员工管理系统(部门员工类) import java.util.ArrayList;public class Dept {private int dno;private String dname;pri ...

  5. java小项目——点餐系统

    package bilibili_project.Meau; import java.util.ArrayList; import java.util.List; import java.util.S ...

  6. Java小项目——房屋出租系统

    程序入口 public class HouseRent {public static void main(String[] args) {new HouseView().Menu();} } 用户界面 ...

  7. java小项目影院系统

    java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入 ...

  8. java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库

    java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  9. 基于JAVA餐厅线上点菜系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA餐厅线上点菜系统计算机毕业设计源码+系统+lw文档+部署 技术栈 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui.HTML.CSS. ...

  10. C小项目 —— 学生选课系统

    C小项目 -- 学生选课系统 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include&l ...

最新文章

  1. 【bzoj1251】序列终结者(伸展树)
  2. 「建模调参」之零基础入门数据挖掘
  3. HDU 4539郑厂长系列故事――排兵布阵(状压DP)
  4. 基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题
  5. HUST 1555 A Math Homework
  6. dedecms标签使用
  7. linux 修改分辨率lcd_16.Linux-LCD驱动(详解)
  8. 【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!
  9. Linux-- 查看文件 more与其它
  10. 文件后缀可见的设置 强转文件类型
  11. 收藏 | Python必备技能之 25个Matplotlib常用代码!
  12. Struts2学习笔记(十七) 文件下载(File Download)
  13. ffmpeg拉流设置暂停_解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet...
  14. python清空字典保留变量_python中字典删除元素
  15. 常见网络设备口令备忘录
  16. 培养创造性思维的20个技巧!
  17. ObjectArx自定义实体入门(C++)及注意事项
  18. 微信机器人网页版接口详解
  19. spingboot报错I/O error on POST request for “9411/api/v2/spans“: connect timed out
  20. 没迈过PRA的门槛 企业谈何“人工智能”

热门文章

  1. 【转】何时使用 Em 与 Rem
  2. 项明成长记2:做事先做人
  3. 读书与做人 - 笔记
  4. 6. 【gRPC系列学习】Balance原理详解
  5. Mysql 5.7 连接数爆满 清理连接数
  6. 【LeanTouch】笔记
  7. 群晖DS420+ 7.2.0-64570垃圾版本!!!!
  8. ConstraintLayout中显示不全的问题,控件被挤压
  9. Kotlin Elvis操作符:?:
  10. BroadLink刘宗孺:Wi-Fi技术在智能家居的发展前景