<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          新鮮出爐的點菜系統(tǒng)(附源碼)

          共 18478字,需瀏覽 37分鐘

           ·

          2021-08-03 10:41

          本文已收錄至:https://cunyu1943.blog.csdn.net/

          前言

          繼上次寫了一個 Java SE 版本的 學(xué)生成績管理系統(tǒng) 之后,發(fā)現(xiàn)大家反響還不錯,所以今天我有帶來了差不多一樣的點菜系統(tǒng),希望利用我們所學(xué)的 Java SE 知識,實現(xiàn)我們的點菜系統(tǒng)。

          而在上次文章的評論中,我也看到了大家的一些建議,可能沒有及時回復(fù)大家,但是在這次文章中,我會盡量滿足大家提的一些好的建議,向著更好的方向前進(jìn)!

          需求分析

          此次可以,我們需要設(shè)計一個點菜系統(tǒng),我們就需要對我們的系統(tǒng)進(jìn)行分析,面向的對象是誰?對象常用的操作又有哪些?

          既然是點菜系統(tǒng),那我們的餐館一般都是有一個固定的菜單,然后面向的對象一般都是顧客,顧客可以通過這個菜單進(jìn)行點菜、刪除菜,查看已經(jīng)點過的菜,以及最后用完餐后的結(jié)賬。

          因此,對于點菜系統(tǒng),主要所需功能如下:

          1. 初始化菜單
          2. 點菜
          3. 移除已點的菜
          4. 查看已點的菜
          5. 結(jié)賬
          6. 退出系統(tǒng)
          點菜系統(tǒng)

          功能預(yù)覽

          系統(tǒng)菜單

          進(jìn)入我們的點菜系統(tǒng)之后,一般都是有系統(tǒng)菜單的,用于提示我們進(jìn)行下一步的操作。

          系統(tǒng)菜單

          點菜

          根據(jù)系統(tǒng)菜單進(jìn)入點菜功能后,輸入菜品序號進(jìn)行點菜以及返回上一級菜單。

          點菜

          查看已點菜品

          假設(shè)我們點完菜之后,要確認(rèn)下有沒有點重復(fù)的菜,此時就可以查看已點菜品。

          當(dāng)然,上圖是我們已經(jīng)點過菜才會出現(xiàn)菜品,如果我們還沒有點過菜,那么系統(tǒng)則會提示還未點菜。

          刪除菜品

          假設(shè)我們不小心點了重復(fù)的菜,那該怎么辦呢?不用擔(dān)心,我們直接選擇刪除菜品功能,然后刪除對應(yīng)重復(fù)菜品即可。

          同樣的,加入我們還未點菜就進(jìn)入刪除菜品功能,系統(tǒng)也會給出提示。

          結(jié)賬

          當(dāng)我們用完餐之后,接下來就是結(jié)賬了。此時只要進(jìn)入我們的結(jié)賬選項,系統(tǒng)就會打印出本次所消費的所有金額。

          同樣的,加入我們還未點菜就進(jìn)入結(jié)賬功能,系統(tǒng)也會給出提示。

          退出系統(tǒng)

          當(dāng)我們輸入選擇為 0 時,表示我們退出系統(tǒng)。

          功能實現(xiàn)

          主界面

          系統(tǒng)主界面,主要是打印出功能選擇菜單,然后根據(jù)我們的輸入選擇不同的子功能。

          package com.cunyu;

          import java.util.ArrayList;
          import java.util.List;
          import java.util.Scanner;

          /**
           * Created with IntelliJ IDEA.
           *
           * @author : 村雨
           * @version : 1.0
           * @project : Java 實戰(zhàn)
           * @package : com.cunyu
           * @className : DishApp
           * @createTime : 2021/7/31 17:30
           * @email : [email protected]
           * @公眾號 : 村雨遙
           * @website : https://cunyu1943.github.io
           * @description : 系統(tǒng)主界面
           */

          public class DishApp {

              public static void main(String[] args) {
                  Dish dish = new Dish();
                  // 初始化菜單
                  List<Dish> dishList = dish.initMenu();

                  Scanner scanner = new Scanner(System.in);

                  List<Dish> orderedList = new ArrayList<>();
                  while (true) {
                      System.out.println("----------歡迎使用點餐系統(tǒng)--------");
                      System.out.println("----------【1】點菜--------------");
                      System.out.println("----------【2】參看已點菜品-------");
                      System.out.println("----------【3】刪除菜品-----------");
                      System.out.println("----------【4】結(jié)賬--------------");
                      System.out.println("----------【0】返回上一級/退出-----");

                      System.out.println("輸入你的選擇");
                      String choice = scanner.next();
                      switch (choice) {
                          case "1":
                              while (true) {
                                  dish.showMenu(dishList);
                                  System.out.println("請輸入菜品序號進(jìn)行點菜,輸入 0 則返回上一級菜單");
                                  int id = scanner.nextInt();
                                  if (id == 0) {
                                      break;
                                  }

                                  System.out.println("輸入菜品序號:" + id);

                                  System.out.println("你點的菜是:" + dishList.get(id - 1).getName());
                                  // 把已點的菜加入已點菜單
                                  orderedList.add(dishList.get(id - 1));
                              }
                              break;
                          case "2":
                              dish.showOrderedMenu(orderedList);
                              break;
                          case "3":
                              if (orderedList.isEmpty()) {
                                  System.out.println("當(dāng)前還未點菜,請重新輸入你的選擇");
                              } else {
                                  System.out.println("輸入要刪除菜品的序號");
                                  int id = scanner.nextInt();
                                  dish.deleteDish(id, dishList, orderedList);
                              }
                              break;
                          case "4":
                              dish.checkout(orderedList);
                              break;

                          case "0":
                              System.exit(0);
                          default:
                              break;
                      }
                  }
              }
          }

          主類設(shè)計

          主要涉及的菜品,于是定義一個菜品類,主要包括序號、菜品名、菜品單價三個屬性。

          package com.cunyu;

          /**
           * Created with IntelliJ IDEA.
           *
           * @author : 村雨
           * @version : 1.0
           * @project : Java 實戰(zhàn)
           * @package : com.cunyu
           * @className : Dish
           * @createTime : 2021/7/31 17:27
           * @email : [email protected]
           * @公眾號 : 村雨遙
           * @website : https://cunyu1943.github.io
           * @description : 菜品類
           */

          public class Dish {
              /**
               * 編號
               */

              private int id;
              /**
               * 菜名
               */

              private String name;
              /**
               * 價格
               */

              private double price;

              public int getId() {
                  return id;
              }

              public void setId(int id) {
                  this.id = id;
              }

              public String getName() {
                  return name;
              }

              public void setName(String name) {
                  this.name = name;
              }

              public double getPrice() {
                  return price;
              }

              public void setPrice(double price) {
                  this.price = price;
              }

              public Dish() {
              }

              public Dish(int id, String name, double price) {
                  this.id = id;
                  this.name = name;
                  this.price = price;
              }
          }

          功能接口

          上次的文章中,讀者建議我把各個功能獨立出接口,然后再實現(xiàn),所以這里先將各個功能的接口給出來。

          package com.cunyu;

          import java.util.List;

          /**
           * Created with IntelliJ IDEA.
           *
           * @author : 村雨
           * @version : 1.0
           * @project : Java 實戰(zhàn)
           * @package : com.cunyu
           * @className : DishInterface
           * @createTime : 2021/7/31 20:26
           * @email : [email protected]
           * @公眾號 : 村雨遙
           * @website : https://cunyu1943.github.io
           * @description :
           */

          public interface DishInterface {
              /**
               * 初始化菜單
               *
               * @return 返回餐廳當(dāng)前所提供的菜品列表
               */

              public List<Dish> initMenu();

              /**
               * 顯示菜單
               *
               * @param dishList 菜品列表
               */

              public void showMenu(List<Dish> dishList);


              /**
               * 顯示已經(jīng)點過的菜品
               *
               * @param orderedList 當(dāng)前已點菜品
               */

              public void showOrderedMenu(List<Dish> orderedList);

              /**
               * 移除菜品
               *
               * @param id          菜品對應(yīng)序號
               * @param dishList    菜品列表
               * @param orderedList 已點菜品列表
               */

              public void deleteDish(int id, List<Dish> dishList, List<Dish> orderedList);

              /**
               * 結(jié)賬
               *
               * @param orderedList
               */

              public void checkout(List<Dish> orderedList);
          }

          初始化菜單

          一般餐館都是提供的固定的菜單,所以這里沒有給出管理菜單的功能,直接進(jìn)行初始化后給出各個菜品,將其存入列表中。

          /**
               * 初始化菜單
               *
               * @return 初始化后的菜單
               */

          public List<Dish> initMenu() {
              List<Dish> dishList = new ArrayList<>();
              dishList.add(new Dish(1"黃金手抓骨"38));
              dishList.add(new Dish(2"鄉(xiāng)村爆火肉"58));
              dishList.add(new Dish(3"養(yǎng)生甲魚湯"68));
              dishList.add(new Dish(4"三鮮湯"28));
              dishList.add(new Dish(5"紫菜蛋花湯"18));
              dishList.add(new Dish(6"鐵板黃金蛋"38));
              dishList.add(new Dish(7"泡椒炒牛肉"48));
              dishList.add(new Dish(8"麻婆豆腐"18));
              dishList.add(new Dish(9"干煸豆角"28));
              dishList.add(new Dish(10"干鍋娃娃菜"29));
              dishList.add(new Dish(11"干鍋土豆絲"28));
              dishList.add(new Dish(12"清炒時蔬"25));
              dishList.add(new Dish(13"涼拌黃瓜"10));
              dishList.add(new Dish(14"胡椒皮蛋"15));
              dishList.add(new Dish(15"紅燒茄子"20));
              return dishList;
          }

          展示菜品列表

          初始化菜單后,把整個菜單展示給顧客看。

          /**
               * 展示菜單
               *
               * @param dishList 菜品列表
               */

          public void showMenu(List<Dish> dishList) {
              System.out.println("------------本店菜單------------");
              System.out.println("序號\t\t菜名\t\t\t\t單價");
              for (int i = 0; i < dishList.size(); i++) {
                  System.out.format("%d\t\t%s\t\t\t%.2f\n", dishList.get(i).getId(), dishList.get(i).getName(), dishList.get(i).getPrice());
              }
              System.out.println("---------------------------");
          }

          展示已點菜品

          /**
               * 查看已點的菜
               */

          public void showOrderedMenu(List<Dish> orderedList) {
              if (orderedList.isEmpty()) {
                  System.out.println("當(dāng)前您還未點餐,請重新輸入選擇");
              } else {
                  System.out.println("當(dāng)前您點的菜品如下");
                  for (int i = 0; i < orderedList.size(); i++) {
                      System.out.println(orderedList.get(i).getName());
                  }
              }

          }

          移除菜品

          找到對應(yīng)序號對應(yīng)的菜品,然后將其移除。

          /**
               * 刪除對應(yīng)菜品
               *
               * @param id          菜品對應(yīng)序號
               * @param dishList    菜品列表
               * @param orderedList 已點菜品列表
               */

          public void deleteDish(int id, List<Dish> dishList, List<Dish> orderedList) {
              if (!orderedList.isEmpty()) {
                  orderedList.remove(dishList.get(id - 1));
              }
          }

          結(jié)賬

          先判斷是否點菜,如果沒有則提示,若已經(jīng)點過餐,則直接結(jié)賬。

          /**
               * 結(jié)賬
               */

          public void checkout(List<Dish> orderedList) {
              double money = 0.0d;
              if (orderedList.isEmpty()) {
                  System.out.println("當(dāng)前您還未點餐,請重新輸入選擇");
              } else {
                  System.out.println("請稍等,正在結(jié)算中……");
                  for (int i = 0; i < orderedList.size(); i++) {
                      money += orderedList.get(i).getPrice();
                  }
                  System.out.format("你此次總共消費:¥ %.2f\n", money);
              }
          }

          總程序

          好了,實現(xiàn)以上各個模塊功能之后,將其整合到一起,就得到我們最后的總體程序。

          各部分的代碼都已經(jīng)貼出來的,不過為了大家更方便,我這這里給出總程序結(jié)構(gòu)。

          所有代碼均位于 com.cunyu 包下,然后分別是實體類 Dish、接口類 DishInterface 以及主程序 DishApp。

          總結(jié)

          好了,以上就是我們點菜系統(tǒng)的實現(xiàn)了。如果你對 Java SE 部分的知識掌握較好的話,這一定不是啥難事,畢竟是個十分簡單的控制臺程序,主要語法熟悉,稍微理理邏輯即可。

          好了,今天的內(nèi)容就到此結(jié)束了,如果你有什么好的建議,歡迎留言交流。

          最后的最后,貼出本設(shè)計的 Github 倉庫地址:https://github.com/cunyu1943/java-in-actions

          有需要的童鞋可以自取,當(dāng)然了,也希望大家給我一個 ? star,滿足一下我這個菜鳥的虛榮心呀 ~ ??????

          - END -


          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷五月激情 | 91人妻无码成人精品一区91 | 国产欧美精品久久久久 | 婷婷综合导航 | 思瑞与土豪国产一区二区 |