java實現飯店點菜系統
本文實例為大傢分享瞭java實現飯店點菜系統的具體代碼,供大傢參考,具體內容如下
JAVA實現飯店點菜系統
在這個暑假,我會將一些網絡上比較經典的java編程練習題。 做一做,發佈到博客來。是對我自己學習的監督,也是為瞭方便大傢借鑒學習交流。大傢一起共同進步。
這個點菜系統,和我之前Java課程設計中的小學生數學練習有點像。不過少瞭文件操作,相對比較簡單。
我實現的效果 如圖
最重要的 還是面向對象的思想,我們要理解並使用。
1.在點菜系統中,我們為瞭方便 飯店添加菜譜 ,我們要使用一個list 集合 ,可以改變長度大小。
2.每一個 菜品 都是一個對象 我們要封裝起來,包括 三個屬性 : 編號,菜名 ,價格
3.對點菜的具體需求 ,我們要 寫 每一個 靜態方法。在main 方法中, 按照客戶點菜的過程來設計流程。
看到瞭效果圖 。我們直接貼代碼, 在代碼中解釋 。
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 太原理工大學---軟件學院---李同學 * java實現 點菜系統 * 歡迎大傢一起交流。評論或者私信。 */ public class menu { //聲明兩個集合,第一個用來保存 飯店菜單,第二個用來保存 客戶所點菜單 static List<menu> dishList = new ArrayList<>(); static List<menu> personList = new ArrayList<>(); int id; String name; double price; //構造方法,每一個菜 都是一個對象 public menu(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } public static void main(String[] args) { //聲明對象 本飯店隻會五個菜。O(∩_∩)O哈哈~ //第一種聲明方法,並添加到飯店菜單中。 menu dish1 = new menu(1, "魚香肉絲", 28.0); dishList.add(dish1); menu dish2 = new menu(2, "燉王八", 58.0); dishList.add(dish2); menu dish3 = new menu(3, "傢常涼菜", 18.0); dishList.add(dish3); //第二種聲明方法 這兩種方法 大傢都要學會 dishList.add(new menu(4,"山西過油肉",38.0)); dishList.add(new menu(5,"西湖牛肉羹",36.0)); Scanner sc = new Scanner(System.in); /** * 接下來就是 點菜系統的核心代碼瞭。有點復雜,大傢慢慢理解。 * 我盡量註釋寫全 * 我們要瞭解 點菜需求 : 1. 飯店有哪些菜 2. 客戶點菜 點菜完畢 * 重新展示飯店服務 供客戶再次選擇 3.客戶點瞭哪些菜 4.客戶退菜 5. 結賬 * 首先是一個 while(true) 的 “死循環” 嗎,每執行一次 就輸出一次 飯店服務 number 方法 * 第二 客戶選擇 服務 sc.nextInt(); 客戶輸入的數字使用switch 進行區分 * 進入 switch 後, 根據客戶的要求,執行不同的 case * 在執行 case 1 時 也就進入瞭點菜環節 * 再次出現一個 while(true) 先將飯店的五個菜 展示給客戶。等待客戶點菜 於是 sc.nextInt(); * 不同編號,對應不同的菜品,對應集合。 將客戶選擇的菜品,保存在personList 集合中 * 註意到:在showDish方法中,有一個 “按 0 返回上一級 ” 實現代碼 * 就是 case 1 中的 if 條件語句 :客戶選擇 0 即為結束點菜 重新返回飯店服務 * 剩餘的 case 2 3 4 應該比較好理解。 不懂可以私信我哦! * 還有一個小技巧就是 case 3 中 沒有使用break 而是使用瞭 return 原因是 : break 隻是會天廚switch 循環, * 而在結賬以後,我們需要結束這個點菜系統 使用 return 就會直接 這個程序 。 */ while (true) { number(); int num = sc.nextInt(); switch (num) { case 1: while (true) { showDish(); int id = sc.nextInt(); if (id == 0) { break; } else { menu dish = dishList.get(id - 1); System.out.println("親,您點瞭:" + dish.name + " 菜"); personList.add(dish); } } case 2: showOrder(); break; case 3: paying(); return; case 4 : System.out.println("輸入您要退掉菜品的編號"); int id = sc.nextInt(); exitDish(id); break; } } } // 展示主菜單方法。 public static void number() { System.out.println("歡迎光臨小帥菜館!"); System.out.println("----主菜單----"); System.out.println("菜單 ---> 1"); System.out.println("點菜 ---> 2"); System.out.println("結賬 ---> 3"); System.out.println("退菜 ---> 4"); System.out.println("---根據編號選擇服務---"); } //展示飯店菜單方法 public static void showDish() { System.out.println("----請您點菜----"); //遍歷集合,將之前聲明的對象集合 全部展示到控制臺 for (int i = 0; i < dishList.size(); i++) { menu dish = dishList.get(i); System.out.println(dish.id + " " + dish.name + " " + dish.price + "元"); } System.out.println("---根據序號點菜,按 0 返回上一級---"); } //展示客戶已點菜單 public static void showOrder() { System.out.println("----您已點菜品----"); //註釋掉的這個方法,不適合使用退菜操作。因為 每一個菜品前面的id 值不是真正的集合次序 /*for (menu dish : personList) { System.out.println(dish.id + " " + dish.name + " " + dish.price + "元"); }*/ //為瞭方便客戶能夠正確的選擇菜品編號,我們采用 1 2 3 4 的順序輸出已點菜品 for(int i = 0; i < personList.size();i++){ System.out.println( (i+1) + " " + personList.get(i).name + " " + personList.get(i).price + "元"); } } // 結賬 遍歷 personList 集合的 price 累加即可 public static void paying() { double total = 0f; System.out.println("----正在結賬,請稍等!----"); // 另一種遍歷集合的方法。大傢學習哦 for (menu dish : personList) { total += dish.price; } System.out.println("您共消費:" + total + "元"); } //退菜操作 使用集合的 remove 方法。 采用有參數的方法。先告訴客戶要退掉的菜品,再執行remove操作,這兩句代碼不能顛倒 public static void exitDish(int i){ System.out.println("您已退掉:" + personList.get(i-1).name + " " + personList.get(i-1).price + "元"); personList.remove(i-1); } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。