您好,登錄后才能下訂單哦!
這篇“java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)”文章吧。
在這個(gè)暑假,我會(huì)將一些網(wǎng)絡(luò)上比較經(jīng)典的java編程練習(xí)題。 做一做,發(fā)布到博客來。是對(duì)我自己學(xué)習(xí)的監(jiān)督,也是為了方便大家借鑒學(xué)習(xí)交流。大家一起共同進(jìn)步。
這個(gè)點(diǎn)菜系統(tǒng),和我之前Java課程設(shè)計(jì)中的小學(xué)生數(shù)學(xué)練習(xí)有點(diǎn)像。不過少了文件操作,相對(duì)比較簡(jiǎn)單。
我實(shí)現(xiàn)的效果 如圖
最重要的 還是面向?qū)ο蟮乃枷?,我們要理解并使用?/strong>
1.在點(diǎn)菜系統(tǒng)中,我們?yōu)榱朔奖?飯店添加菜譜 ,我們要使用一個(gè)list 集合 ,可以改變長(zhǎng)度大小。
2.每一個(gè) 菜品 都是一個(gè)對(duì)象 我們要封裝起來,包括 三個(gè)屬性 : 編號(hào),菜名 ,價(jià)格
3.對(duì)點(diǎn)菜的具體需求 ,我們要 寫 每一個(gè) 靜態(tài)方法。在main 方法中, 按照客戶點(diǎn)菜的過程來設(shè)計(jì)流程。
看到了效果圖 。我們直接貼代碼, 在代碼中解釋 。
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 太原理工大學(xué)---軟件學(xué)院---李同學(xué) * java實(shí)現(xiàn) 點(diǎn)菜系統(tǒng) * 歡迎大家一起交流。評(píng)論或者私信。 */ public class menu { //聲明兩個(gè)集合,第一個(gè)用來保存 飯店菜單,第二個(gè)用來保存 客戶所點(diǎn)菜單 static List<menu> dishList = new ArrayList<>(); static List<menu> personList = new ArrayList<>(); int id; String name; double price; //構(gòu)造方法,每一個(gè)菜 都是一個(gè)對(duì)象 public menu(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } public static void main(String[] args) { //聲明對(duì)象 本飯店只會(huì)五個(gè)菜。O(∩_∩)O哈哈~ //第一種聲明方法,并添加到飯店菜單中。 menu dish2 = new menu(1, "魚香肉絲", 28.0); dishList.add(dish2); menu dish3 = new menu(2, "燉王八", 58.0); dishList.add(dish3); menu dish4 = new menu(3, "家常涼菜", 18.0); dishList.add(dish4); //第二種聲明方法 這兩種方法 大家都要學(xué)會(huì) dishList.add(new menu(4,"山西過油肉",38.0)); dishList.add(new menu(5,"西湖牛肉羹",36.0)); Scanner sc = new Scanner(System.in); /** * 接下來就是 點(diǎn)菜系統(tǒng)的核心代碼了。有點(diǎn)復(fù)雜,大家慢慢理解。 * 我盡量注釋寫全 * 我們要了解 點(diǎn)菜需求 : 1. 飯店有哪些菜 2. 客戶點(diǎn)菜 點(diǎn)菜完畢 * 重新展示飯店服務(wù) 供客戶再次選擇 3.客戶點(diǎn)了哪些菜 4.客戶退菜 5. 結(jié)賬 * 首先是一個(gè) while(true) 的 “死循環(huán)” 嗎,每執(zhí)行一次 就輸出一次 飯店服務(wù) number 方法 * 第二 客戶選擇 服務(wù) sc.nextInt(); 客戶輸入的數(shù)字使用switch 進(jìn)行區(qū)分 * 進(jìn)入 switch 后, 根據(jù)客戶的要求,執(zhí)行不同的 case * 在執(zhí)行 case 1 時(shí) 也就進(jìn)入了點(diǎn)菜環(huán)節(jié) * 再次出現(xiàn)一個(gè) while(true) 先將飯店的五個(gè)菜 展示給客戶。等待客戶點(diǎn)菜 于是 sc.nextInt(); * 不同編號(hào),對(duì)應(yīng)不同的菜品,對(duì)應(yīng)集合。 將客戶選擇的菜品,保存在personList 集合中 * 注意到:在showDish方法中,有一個(gè) “按 0 返回上一級(jí) ” 實(shí)現(xiàn)代碼 * 就是 case 1 中的 if 條件語句 :客戶選擇 0 即為結(jié)束點(diǎn)菜 重新返回飯店服務(wù) * 剩余的 case 2 3 4 應(yīng)該比較好理解。 不懂可以私信我哦! * 還有一個(gè)小技巧就是 case 3 中 沒有使用break 而是使用了 return 原因是 : break 只是會(huì)天廚switch 循環(huán), * 而在結(jié)賬以后,我們需要結(jié)束這個(gè)點(diǎn)菜系統(tǒng) 使用 return 就會(huì)直接 這個(gè)程序 。 */ 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("親,您點(diǎn)了:" + dish.name + " 菜"); personList.add(dish); } } case 2: showOrder(); break; case 3: paying(); return; case 4 : System.out.println("輸入您要退掉菜品的編號(hào)"); int id = sc.nextInt(); exitDish(id); break; } } } // 展示主菜單方法。 public static void number() { System.out.println("歡迎光臨小帥菜館!"); System.out.println("----主菜單----"); System.out.println("菜單 ---> 1"); System.out.println("點(diǎn)菜 ---> 2"); System.out.println("結(jié)賬 ---> 3"); System.out.println("退菜 ---> 4"); System.out.println("---根據(jù)編號(hào)選擇服務(wù)---"); } //展示飯店菜單方法 public static void showDish() { System.out.println("----請(qǐng)您點(diǎn)菜----"); //遍歷集合,將之前聲明的對(duì)象集合 全部展示到控制臺(tái) 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("---根據(jù)序號(hào)點(diǎn)菜,按 0 返回上一級(jí)---"); } //展示客戶已點(diǎn)菜單 public static void showOrder() { System.out.println("----您已點(diǎn)菜品----"); //注釋掉的這個(gè)方法,不適合使用退菜操作。因?yàn)?nbsp;每一個(gè)菜品前面的id 值不是真正的集合次序 /*for (menu dish : personList) { System.out.println(dish.id + " " + dish.name + " " + dish.price + "元"); }*/ //為了方便客戶能夠正確的選擇菜品編號(hào),我們采用 1 2 3 4 的順序輸出已點(diǎn)菜品 for(int i = 0; i < personList.size();i++){ System.out.println( (i+1) + " " + personList.get(i).name + " " + personList.get(i).price + "元"); } } // 結(jié)賬 遍歷 personList 集合的 price 累加即可 public static void paying() { double total = 0f; System.out.println("----正在結(jié)賬,請(qǐng)稍等!----"); // 另一種遍歷集合的方法。大家學(xué)習(xí)哦 for (menu dish : personList) { total += dish.price; } System.out.println("您共消費(fèi):" + total + "元"); } //退菜操作 使用集合的 remove 方法。 采用有參數(shù)的方法。先告訴客戶要退掉的菜品,再執(zhí)行remove操作,這兩句代碼不能顛倒 public static void exitDish(int i){ System.out.println("您已退掉:" + personList.get(i-1).name + " " + personList.get(i-1).price + "元"); personList.remove(i-1); } }
以上就是關(guān)于“java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。