中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么實現飯店點菜系統

發布時間:2022-01-26 14:08:30 來源:億速云 閱讀:148 作者:zzz 欄目:開發技術

這篇“java怎么實現飯店點菜系統”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java怎么實現飯店點菜系統”文章吧。

JAVA實現飯店點菜系統

在這個暑假,我會將一些網絡上比較經典的java編程練習題。 做一做,發布到博客來。是對我自己學習的監督,也是為了方便大家借鑒學習交流。大家一起共同進步。

這個點菜系統,和我之前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 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);
        //第二種聲明方法   這兩種方法 大家都要學會
        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);
    }
}

以上就是關于“java怎么實現飯店點菜系統”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎左旗| 镇宁| 西吉县| 武功县| 成都市| 巫溪县| 嫩江县| 娱乐| 新营市| 图木舒克市| 惠州市| 龙里县| 石河子市| 手机| 重庆市| 石台县| 林西县| 南雄市| 荣昌县| 鹿泉市| 霸州市| 乌鲁木齐市| 阳泉市| 潍坊市| 札达县| 乌拉特后旗| 深水埗区| 千阳县| 右玉县| 安岳县| 遂溪县| 宁国市| 镇原县| 武邑县| 枣强县| 元谋县| 甘德县| 张家界市| 龙岩市| 义乌市| 故城县|