• 吃货联盟订餐系统(对象+集合)java


    基本效果和之前一样

    将使用的数组改为集合

    直接附上代码

    Ordering

           

    1. package cn.bdqn.work;
    2. import java.util.ArrayList;
    3. import java.util.Scanner;
    4. public class OrderingMsg {
    5. // public static Order[] order = new Order[4];
    6. public static ArrayList order=new ArrayList();
    7. public static ArrayList food = new ArrayList();
    8. static Scanner input = new Scanner(System.in);
    9. static boolean isAdd = false;
    10. static {
    11. Order order1 = new Order("张三", "狮子头 一份", 12, "A01", 0, 38.0);
    12. Order order2 = new Order("李四", "大鸡腿 六份", 15, "A02", 1, 60.0);
    13. order.add(order1);
    14. order.add(order2);
    15. order.add(null);
    16. order.add(null);
    17. Food food1 = new Food("大鸡腿", 6.0, 0);
    18. Food food2 = new Food("狮子头", 38.0, 0);
    19. Food food3 = new Food("油泼面", 9.0, 0);
    20. food.add(food1);
    21. food.add(food2);
    22. food.add(food3);
    23. }
    24. public static void main(String[] args) {
    25. int num = -1;// 记录用户输入的数字
    26. do {
    27. // 显示菜单
    28. System.out.println("-----------------------");
    29. System.out.println(" 1 . 我要订餐");
    30. System.out.println(" 2 . 查看餐带");
    31. System.out.println(" 3 . 删除订单");
    32. System.out.println(" 4 . 签收订单");
    33. System.out.println(" 5 . 我要点赞");
    34. System.out.println(" 6 . 推出系统");
    35. System.out.println("-----------------------");
    36. // 用户输入数字却需要的服务 执行相应的服务
    37. System.out.println("请选择");
    38. int choose = input.nextInt();
    39. // true 记录找到一个为空的位置 可以插入 false没有找到
    40. boolean isAdd = false;
    41. switch (choose) {
    42. case 1:
    43. orderingFood();
    44. break;
    45. case 2:
    46. seeOrder();
    47. break;
    48. case 3:
    49. deletedOrder();
    50. break;
    51. case 4:
    52. signInOrder();
    53. break;
    54. case 5:
    55. pariseOrder();
    56. break;
    57. case 6:
    58. // 6.推出系统
    59. break;
    60. default:
    61. break;
    62. }
    63. if (choose < 1 || choose > 5) {
    64. break;
    65. } else {
    66. // 提示输入 0 返回
    67. System.out.println("输入0返回主菜单");
    68. num = input.nextInt();
    69. }
    70. } while (num == 0);
    71. System.out.println("谢谢使用,欢迎下次光临");
    72. }
    73. static void orderingFood() {
    74. // 1.我要订餐
    75. System.out.println("-------我要订餐---------");
    76. for (int i = 0; i < order.size(); i++) {
    77. // 如果找到为空的位置,记录下来
    78. if (order.get(i) == null) {
    79. // 找到一个 为空的位置
    80. isAdd = true;
    81. // 执行插入操作
    82. // 显示所有可选择的餐品信息
    83. System.out.println("序号\t餐品名\t\t单价\t点赞数");
    84. for (int j = 0; j < food.size(); j++) {
    85. System.out.println((j + 1) + "\t\t" + food.get(j).getDishName()
    86. + "\t\t" + food.get(j).getPrice() + "\t"
    87. + food.get(j).getPraiseNum());
    88. }
    89. // 输入所选餐品编号 以及份数
    90. System.out.println("请选择所定参品序号");
    91. int chooseDish = input.nextInt();
    92. System.out.println("请选择所定份数");
    93. int number = input.nextInt();
    94. String dishMeg = food.get(chooseDish - 1).getDishName() + " "
    95. + number + "份";
    96. // 输入订餐人的姓名
    97. System.out.println("请输入订餐人的姓名");
    98. String name = input.next();
    99. // 输入送餐时间
    100. System.out.println("输入送餐时间(10-20整点送餐)");
    101. int time = input.nextInt();
    102. while (time < 10 || time > 20) {
    103. System.out.println("请输入10-20 之间的整数");
    104. time = input.nextInt();
    105. }
    106. // 输入送餐地址
    107. System.out.println("输入送餐地址");
    108. String address = input.next();
    109. // 计算金额
    110. double sumPrice = food.get(chooseDish - 1).getPrice() * number;
    111. // 送餐费 金额达到50 免去订餐费 否则加6元送餐费
    112. double deliCharge = sumPrice >= 50 ? 0.0 : 6.0;
    113. // 提示订单信息
    114. System.out.println("订餐成功:");
    115. System.out.println("您订的是:" + dishMeg);
    116. System.out.println("订餐人:" + name);
    117. System.out.println("送餐时间:" + time + "点");
    118. System.out.println("送餐地址:" + address);
    119. System.out.println("餐费:" + sumPrice + " 送餐费:" + deliCharge
    120. + "元");
    121. System.out.println("总金额:" + (sumPrice + deliCharge) + "元");
    122. // 保存数据
    123. Order o = new Order(name, dishMeg, time, address, 0, sumPrice);
    124. order.add(i,o);
    125. break;
    126. }
    127. }
    128. if (!isAdd) {
    129. System.out.println("对不起 您的餐袋已经满了");
    130. }
    131. }
    132. static void seeOrder() {
    133. // 2.查看餐袋
    134. System.out.println("-------查看餐袋---------");
    135. System.out.println("序号\t订餐人\t所订餐品信息\t送餐时间\t送餐地址\t总金额\t状态\t");
    136. // 遍历数组
    137. for (int i = 0; i < order.size(); i++) {
    138. if (order.get(i) != null) {
    139. String time = order.get(i).getTime() + "点";
    140. String sumPrice = order.get(i).getSumPrices() + "元";
    141. String state = order.get(i).getState() == 0 ? "已预订" : "已完成";
    142. System.out.println((i + 1) + "\t\t " + order.get(i).getName()
    143. + "\t" + order.get(i).getDishMegs() + "\t\t" + time
    144. + "\t\t" + order.get(i).getAddress() + "\t" + sumPrice
    145. + "\t" + state);
    146. }
    147. }
    148. }
    149. static void deletedOrder() {
    150. // 3.删除订单
    151. // 输入要删除的订单序号(从1开始)
    152. System.out.println("-------删除订单---------");
    153. System.out.println("请输入要删除的订单序号");
    154. int delId = input.nextInt();
    155. int delIndex = -1;// 删除订单下标
    156. boolean isDelFind = false;// true找到 false未找到
    157. // 循环查找订单
    158. for (int i = 0; i < order.size(); i++) {
    159. // 找打此订单 删除操作
    160. if (order.get(i) != null && order.get(i).getState() == 1 && delId == i + 1) {
    161. delIndex = i;
    162. isDelFind = true;
    163. break;
    164. } else if (order.get(i) != null && order.get(i).getState() == 0
    165. && delId == i + 1) {
    166. System.out.println("您的订单未签收 不能删除");
    167. isDelFind = true;
    168. break;
    169. }
    170. }
    171. // 未找到订单
    172. if (!isDelFind) {
    173. System.out.println("对不起此条订单未找到");
    174. return;
    175. }
    176. // 执行删除操作
    177. if (delIndex != -1) {
    178. // 循环操作(循环移位)
    179. // 要删除的元素的后面移位开始往前移动一位
    180. for (int i = delIndex + 1; i <= order.size() - 1; i++) {
    181. order.set(i-1, order.get(i));
    182. }
    183. // 最后一位清空
    184. order.remove(order.size() - 1);
    185. System.out.println("删除完成");
    186. }
    187. }
    188. static void signInOrder() {
    189. // 4.签收订单
    190. System.out.println("-------签收订单---------");
    191. System.out.println("请输入要签收的订单");
    192. int signOrderId = input.nextInt();
    193. boolean isFind = false;// 记录是否找到这条订单 true找到 false 没有找到
    194. // 查找这条订单(循环遍历)
    195. for (int i = 0; i < order.size(); i++) {
    196. // 1 找到 状态已完成 提示不能在签收
    197. // 2找到 状态未完成 可以签收
    198. if (order.get(i) != null && order.get(i).getState() == 1
    199. && signOrderId == i + 1) {
    200. System.out.println("对不起 您选择的订单已经完成了签收 不能二次签收");
    201. isFind = true;
    202. break;
    203. } else if (order.get(i) != null && order.get(i).getState() == 0
    204. && signOrderId == i + 1) {
    205. order.get(i).setState(1);// 更改状态值
    206. System.out.println("订单签收成功");
    207. isFind = true;
    208. break;
    209. }
    210. }
    211. // 条件判断
    212. // 3 没有找到 提示一下
    213. if (!isFind) {
    214. System.out.println("对不起,此订单不存在");
    215. }
    216. }
    217. static void pariseOrder() {
    218. // 5.我要点赞
    219. System.out.println("-------我要点赞---------");
    220. // 显示点赞的餐品列表
    221. // 显示所有可选择的餐品信息
    222. System.out.println("序号\t餐品名\t\t单价\t点赞数");
    223. for (int j = 0; j < food.size(); j++) {
    224. System.out.println((j + 1) + "\t\t" + food.get(j).getDishName()
    225. + "\t\t" + food.get(j).getPrice() + "\t"
    226. + food.get(j).getPraiseNum());
    227. }
    228. // 输入要点赞的餐品序号
    229. System.out.println("请输入要点赞的餐品序号");
    230. int dishId = input.nextInt();
    231. // 该序号的餐品点赞数加1
    232. int praiseNums = food.get(dishId - 1).getPraiseNum();
    233. praiseNums++;
    234. Food f = new Food(food.get(dishId - 1).getDishName(),
    235. food.get(dishId - 1).getPrice(), praiseNums);
    236. food.set(dishId - 1, f);
    237. System.out.println("点赞成功");
    238. System.out.println(food.get(dishId - 1).getDishName() + " "
    239. + food.get(dishId - 1).getPraiseNum() + "赞");
    240. }
    241. }

    Food

       

    1. package cn.bdqn.work;
    2. public class Food {
    3. private String dishName;
    4. private double price;
    5. private int praiseNum;
    6. public Food() {
    7. }
    8. public Food(String dishName, double price, int praiseNum) {
    9. this.dishName = dishName;
    10. this.price = price;
    11. this.praiseNum = praiseNum;
    12. }
    13. public String getDishName() {
    14. return dishName;
    15. }
    16. public void setDishName(String dishName) {
    17. this.dishName = dishName;
    18. }
    19. public double getPrice() {
    20. return price;
    21. }
    22. public void setPrice(double price) {
    23. this.price = price;
    24. }
    25. public int getPraiseNum() {
    26. return praiseNum;
    27. }
    28. public void setPraiseNum(int praiseNum) {
    29. this.praiseNum = praiseNum;
    30. }
    31. }

    Order

      

    1. package cn.bdqn.work;
    2. public class Order {
    3. private String name;
    4. private String dishMegs;
    5. private int time;
    6. private String address;
    7. private int state;
    8. private double sumPrices;
    9. public Order() {
    10. }
    11. public Order(String name, String dishMegs, int time, String address,
    12. int state, double sumPrices) {
    13. this.name = name;
    14. this.dishMegs = dishMegs;
    15. this.time = time;
    16. this.address = address;
    17. this.state = state;
    18. this.sumPrices = sumPrices;
    19. }
    20. public String getName() {
    21. return name;
    22. }
    23. public void setName(String name) {
    24. this.name = name;
    25. }
    26. public String getDishMegs() {
    27. return dishMegs;
    28. }
    29. public void setDishMegs(String dishMegs) {
    30. this.dishMegs = dishMegs;
    31. }
    32. public int getTime() {
    33. return time;
    34. }
    35. public void setTime(int time) {
    36. this.time = time;
    37. }
    38. public String getAddress() {
    39. return address;
    40. }
    41. public void setAddress(String address) {
    42. this.address = address;
    43. }
    44. public int getState() {
    45. return state;
    46. }
    47. public void setState(int state) {
    48. this.state = state;
    49. }
    50. public double getSumPrices() {
    51. return sumPrices;
    52. }
    53. public void setSumPrices(double sumPrices) {
    54. this.sumPrices = sumPrices;
    55. }
    56. }

  • 相关阅读:
    一篇文章快速教你如何搭建关键字驱动自动化测试框架?
    《ChatGPT:强大的人工智能聊天机器人》
    Java设计模式之门面模式(Facade Pattern)
    LabVIEW将视觉生成器AI用作OPC服务器
    英伟达 GPU 架构简史
    死锁问题概述
    python基于PHP+MySQL的在线音乐点歌系统
    vscode搭建LVGL开发环境
    面试题-5
    第十六章 Dijkstra算法的讲解以及证明(与众不同的通俗证明)
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126346943