亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2022年01月25日 15:34:39   作者:timeㄨ?若情  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)飯店點(diǎn)菜系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

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

在這個暑假,我會將一些網(wǎng)絡(luò)上比較經(jīng)典的java編程練習(xí)題。 做一做,發(fā)布到博客來。是對我自己學(xué)習(xí)的監(jiān)督,也是為了方便大家借鑒學(xué)習(xí)交流。大家一起共同進(jìn)步。

這個點(diǎn)菜系統(tǒng),和我之前Java課程設(shè)計中的小學(xué)生數(shù)學(xué)練習(xí)有點(diǎn)像。不過少了文件操作,相對比較簡單。

我實(shí)現(xiàn)的效果 如圖

最重要的 還是面向?qū)ο蟮乃枷?,我們要理解并使用?/strong>

1.在點(diǎn)菜系統(tǒng)中,我們?yōu)榱朔奖?飯店添加菜譜 ,我們要使用一個list 集合 ,可以改變長度大小。
2.每一個 菜品 都是一個對象 我們要封裝起來,包括 三個屬性 : 編號,菜名 ,價格
3.對點(diǎn)菜的具體需求 ,我們要 寫 每一個 靜態(tài)方法。在main 方法中, 按照客戶點(diǎn)菜的過程來設(shè)計流程。

看到了效果圖 。我們直接貼代碼, 在代碼中解釋 。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
?* 太原理工大學(xué)---軟件學(xué)院---李同學(xué)
?* java實(shí)現(xiàn) 點(diǎn)菜系統(tǒng)
?* 歡迎大家一起交流。評論或者私信。
?*/

public class menu {
? ? //聲明兩個集合,第一個用來保存 飯店菜單,第二個用來保存 客戶所點(diǎn)菜單
? ? static List<menu> dishList = new ArrayList<>();
? ? static List<menu> personList = new ArrayList<>();
? ? int id;
? ? String name;
? ? double price;
? ? //構(gòu)造方法,每一個菜 都是一個對象
? ? 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);
? ? ? ? //第二種聲明方法 ? 這兩種方法 大家都要學(xué)會
? ? ? ? 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é)賬
? ? ? ? ?* 首先是一個 while(true) 的 “死循環(huán)” ?嗎,每執(zhí)行一次 就輸出一次 飯店服務(wù) number 方法
? ? ? ? ?* 第二 客戶選擇 服務(wù) ?sc.nextInt(); 客戶輸入的數(shù)字使用switch 進(jìn)行區(qū)分
? ? ? ? ?* 進(jìn)入 switch 后, 根據(jù)客戶的要求,執(zhí)行不同的 case?
? ? ? ? ?* 在執(zhí)行 case 1 ?時 也就進(jìn)入了點(diǎn)菜環(huán)節(jié)?
? ? ? ? ?* 再次出現(xiàn)一個 while(true) 先將飯店的五個菜 展示給客戶。等待客戶點(diǎn)菜 于是 sc.nextInt();
? ? ? ? ?* 不同編號,對應(yīng)不同的菜品,對應(yīng)集合。 將客戶選擇的菜品,保存在personList 集合中
? ? ? ? ?* 注意到:在showDish方法中,有一個 “按 0 返回上一級 ” 實(shí)現(xiàn)代碼
? ? ? ? ?* 就是 case 1 中的 if 條件語句 ?:客戶選擇 0 即為結(jié)束點(diǎn)菜 重新返回飯店服務(wù)
? ? ? ? ?* 剩余的 case 2 ?3 ? 4 ?應(yīng)該比較好理解。 不懂可以私信我哦!
? ? ? ? ?* 還有一個小技巧就是 case 3 ?中 沒有使用break 而是使用了 return 原因是 : break 只是會天廚switch 循環(huán),
? ? ? ? ?* 而在結(jié)賬以后,我們需要結(jié)束這個點(diǎn)菜系統(tǒng) 使用 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("親,您點(diǎn)了:" + 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("點(diǎn)菜 ---> 2");
? ? ? ? System.out.println("結(jié)賬 ---> 3");
? ? ? ? System.out.println("退菜 ---> 4");
? ? ? ? System.out.println("---根據(jù)編號選擇服務(wù)---");

? ? }
? ? //展示飯店菜單方法
? ? public static void showDish() {
? ? ? ? System.out.println("----請您點(diǎn)菜----");
? ? ? ? //遍歷集合,將之前聲明的對象集合 全部展示到控制臺
? ? ? ? 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ù)序號點(diǎn)菜,按 0 返回上一級---");
? ? }

? ? //展示客戶已點(diǎn)菜單
? ? public static void showOrder() {
? ? ? ? System.out.println("----您已點(diǎn)菜品----");
? ? ? ? //注釋掉的這個方法,不適合使用退菜操作。因?yàn)?每一個菜品前面的id 值不是真正的集合次序
? ? ? ? /*for (menu dish : personList) {
? ? ? ? ? ? System.out.println(dish.id + " ?" + dish.name + " ? " + dish.price + "元");
? ? ? ? }*/

? ? ? ? //為了方便客戶能夠正確的選擇菜品編號,我們采用 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é)賬,請稍等!----");
? ? ? ? // 另一種遍歷集合的方法。大家學(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);
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論