【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;}@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小项目一:点菜系统】相关推荐
- java小项目租车系统_Java学习笔记三十:Java小项目之租车系统
Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的"呱呱租车系统" 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金 ...
- java小项目租车系统_Java小作业--嘻嘻租车小系统
Java作业–租车小系统 项目介绍: 根据所学知识,编写一个控制台版的"嘻嘻租车系统" 功能: 展示所有可租车辆 选择车型.租车天数 展示租车清单,包括:总金额.总载货量及其车型 ...
- java小项目鲜花销售系统
项目:七彩鲜花销售系统 一.练习目标 1.体会数组的作用 2.找到分层开发的感觉 3.收获分层开发的兴趣 4.作出效果,找到自信 5.学会调试错误 6.掌握数组的增删改查方法 全部讲解和练习时间控制在 ...
- JAVA小项目之影院系统和员工管理系统
员工管理系统(部门员工类) import java.util.ArrayList;public class Dept {private int dno;private String dname;pri ...
- java小项目——点餐系统
package bilibili_project.Meau; import java.util.ArrayList; import java.util.List; import java.util.S ...
- Java小项目——房屋出租系统
程序入口 public class HouseRent {public static void main(String[] args) {new HouseView().Menu();} } 用户界面 ...
- java小项目影院系统
java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入 ...
- java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库
java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- 基于JAVA餐厅线上点菜系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA餐厅线上点菜系统计算机毕业设计源码+系统+lw文档+部署 技术栈 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui.HTML.CSS. ...
- C小项目 —— 学生选课系统
C小项目 -- 学生选课系统 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include&l ...
最新文章
- 【bzoj1251】序列终结者(伸展树)
- 「建模调参」之零基础入门数据挖掘
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
- 基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题
- HUST 1555 A Math Homework
- dedecms标签使用
- linux 修改分辨率lcd_16.Linux-LCD驱动(详解)
- 【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!
- Linux-- 查看文件 more与其它
- 文件后缀可见的设置 强转文件类型
- 收藏 | Python必备技能之 25个Matplotlib常用代码!
- Struts2学习笔记(十七) 文件下载(File Download)
- ffmpeg拉流设置暂停_解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet...
- python清空字典保留变量_python中字典删除元素
- 常见网络设备口令备忘录
- 培养创造性思维的20个技巧!
- ObjectArx自定义实体入门(C++)及注意事项
- 微信机器人网页版接口详解
- spingboot报错I/O error on POST request for “9411/api/v2/spans“: connect timed out
- 没迈过PRA的门槛 企业谈何“人工智能”