溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)

發(fā)布時(shí)間:2022-01-26 14:08:30 來源:億速云 閱讀:141 作者:zzz 欄目:開發(fā)技術(shù)

這篇“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)”文章吧。

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)的效果 如圖

java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)

java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)

java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)

java怎么實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)

最重要的 還是面向?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è)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

AI