當前位置:網站首頁>手把手教你寫一個點菜系統(附源碼),阿裏牛逼

手把手教你寫一個點菜系統(附源碼),阿裏牛逼

2021-08-20 04:46:21 Android我愛死你了

  • @author : 村雨

  • @version : 1.0

  • @project : Java 實戰

  • @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;

}

}

複制代碼




### 功能接口



上次的文章中,讀者建議我把各個功能獨立出接口,然後再實現,所以這裏先將各個功能的接口給出來。




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

package com.cunyu;

import java.util.List;

/**

  • Created with IntelliJ IDEA.

  • @author : 村雨

  • @version : 1.0

  • @project : Java 實戰

  • @package : com.cunyu

  • @className : DishInterface

  • @createTime : 2021/7/31 20:26

  • @email : [email protected]

  • @公眾號 : 村雨遙

  • @website :  https://cunyu1943.github.io

  • @description :

*/

public interface DishInterface {

/**

 * 初始化菜單

 *

 * @return 返回餐廳當前所提供的菜品列錶

 */

public List<Dish> initMenu();



/**

 * 顯示菜單

 *

 * @param dishList 菜品列錶

 */

public void showMenu(List<Dish> dishList);





/**

 * 顯示已經點過的菜品

 *

 * @param orderedList 當前已點菜品

 */

public void showOrderedMenu(List<Dish> orderedList);



/**

 * 移除菜品

 *

 * @param id          菜品對應序號

 * @param dishList    菜品列錶

 * @param orderedList 已點菜品列錶

 */

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



/**

 * 結賬

 *

 * @param orderedList

 */

public void checkout(List<Dish> orderedList);

}

複制代碼




### 初始化菜單



一般餐館都是提供的固定的菜單,所以這裏沒有給出管理菜單的功能,直接進行初始化後給出各個菜品,將其存入列錶中。




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

/**

 * 初始化菜單

 *

 * @return 初始化後的菜單

 */

public List<Dish> initMenu() {

List<Dish> dishList = new ArrayList<>();

dishList.add(new Dish(1, "黃金手抓骨", 38));

dishList.add(new Dish(2, "鄉村爆火肉", 58));

dishList.add(new Dish(3, "養生甲魚湯", 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;

}

複制代碼




### 展示菜品列錶



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




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

/**

 * 展示菜單

 *

 * @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("---------------------------");

}

複制代碼




### 展示已點菜品




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

/**

 * 查看已點的菜

 */

public void showOrderedMenu(List<Dish> orderedList) {

if (orderedList.isEmpty()) {

    System.out.println("當前您還未點餐,請重新輸入選擇");

} else {

    System.out.println("當前您點的菜品如下");

    for (int i = 0; i < orderedList.size(); i++) {

        System.out.println(orderedList.get(i).getName());

    }

}

}

複制代碼




### 移除菜品



找到對應序號對應的菜品,然後將其移除。




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

/**

 * 删除對應菜品

 *

 * @param id          菜品對應序號

 * @param dishList    菜品列錶

 * @param orderedList 已點菜品列錶

 */

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

if (!orderedList.isEmpty()) {

    orderedList.remove(dishList.get(id - 1));

}

}

複制代碼




### 結賬



先判斷是否點菜,如果沒有則提示,若已經點過餐,則直接結賬。




     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

/**

 * 結賬

 */

public void checkout(List<Dish> orderedList) {

double money = 0.0d;

if (orderedList.isEmpty()) {

    System.out.println("當前您還未點餐,請重新輸入選擇");

} else {

    System.out.println("請稍等,正在結算中……");

    for (int i = 0; i < orderedList.size(); i++) {

        money += orderedList.get(i).getPrice();

    }

    System.out.format("你此次總共消費:¥ %.2f\n", money);

}

}

複制代碼




總程序

---



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



各部分的代碼都已經貼出來的,不過為了大家更方便,我這這裏給出總程序結構。



![](https://s2.51cto.com/images/20210820/1629405187406316.jpg)



所有代碼均比特於 `com.cunyu` 包下,然後分別是實體類 `Dish`、接口類 `DishInterface` 以及主程序 `DishApp`。



總結

--



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





# 總結

總體來說,如果你想轉行從事程序員的工作,Java開發一定可以作為你的第一選擇。但是不管你選擇什麼編程語言,提昇自己的硬件實力才是拿高薪的唯一手段。

如果你以這份學習路線來學習,你會有一個比較系統化的知識網絡,也不至於把知識學習得很零散。我個人是完全不建議剛開始就看《Java編程思想》、《Java核心技術》這些書籍,看完你肯定會放弃學習。建議可以看一些視頻來學習,當自己能上手再買這些書看又是非常有收獲的事了。

這些視頻如果需要的話,可以無償分享給大家,**[點擊這裏即可免費領取](https://gitee.com/vip204888/java-p7)**

![](https://s2.51cto.com/images/20210820/1629405188350692.jpg)
     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.

版權聲明
本文為[Android我愛死你了]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2021/08/20210820044620641z.html

隨機推薦