1. 程式人生 > >吃貨聯盟

吃貨聯盟

light highlight 訂單狀態 div true new string類型 void imp

public class OrderMsg {

    public static void main(String[] args) throws Exception {
        /**
         * 訂餐人姓名、選擇菜品、送餐時間、送餐地址、訂單狀態、總金額
         * 01.創建對應的數組
         * 02.數組的初始化
         * 03.顯示菜單
         * 04.根據用戶的選擇進去指定的模塊
         */
        String[] names = new String[6]; // 訂餐人姓名
        String[] dishMsgs = new String[6];// 選擇菜品
        int[] numbers = new int[6];// 菜品份數
        Date[] dates = new Date[6]; // 送餐時間
        String[] times = new String[6]; // 送餐時間對應的String類型的日期
        String[] addresses = new String[6];// 送餐地址
        int[] states = new int[6];// 訂單狀態 0:已經預定 1:已經完成
        double[] sumPrices = new double[6];// 總金額

        // 初始化數據
        names[0] = "小黑";
        dishMsgs[0] = "八仙過海";
        numbers[0] = 3;
        dates[0] = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        times[0] = sdf.format(dates[0]);
        addresses[0] = "天堂路1號院";
        states[0] = 1;
        sumPrices[0] = 5000;

        names[1] = "小白";
        dishMsgs[1] = "佛跳墻";
        numbers[1] = 5;
        dates[1] = new Date();
        times[1] = sdf.format(dates[1]);
        addresses[1] = "地域路2號院";
        states[1] = 1;
        sumPrices[1] = 500;

        // 初始化用戶可以選擇的菜
        String[] dishNames = { "八仙過海", "佛跳墻", "松鼠魚", "紅燒帶魚", "時令蔬菜", "辣土豆絲" };
        // 定義每個菜的單價
        double[] prices = { 88, 78.8, 58.0, 28.5, 50, 80 };
        // 定義點贊 的數組
        int[] praiseNums = new int[6];
        praiseNums[0] = 5;
        praiseNums[1] = 10;

        System.out.println("***********歡迎進入《吃貨聯盟》點餐系統***********");
        Scanner scanner = new Scanner(System.in);
        int num = -1; // 如果用戶輸入的是0 默認返回主菜單
        boolean isExit = false;// 定義一個標記 來標識 用戶是否退出系統 true:退出
        do {
            // 顯示菜單供用戶選擇
            System.out.println("當前系統時間是:" + sdf.format(new Date()));
            System.out.println("1:我要訂餐");
            System.out.println("2:查看餐袋");
            System.out.println("3:簽收訂單");
            System.out.println("4:刪除訂單");
            System.out.println("5:我要點贊");
            System.out.println("6:退出系統");
            System.out.println("**********************");
            System.out.println("請選擇:");
            int choose = scanner.nextInt(); // 根據用戶的選擇執行不同的功能
            switch (choose) {
            case 1:
                System.out.println("************我要訂餐************");
                // 定義一個標記判斷餐帶是否已滿
                boolean addFlag = false;
                for (int i = 0; i < names.length; i++) { // 訂餐人的集合
                    if (names[i] == null) {
                        addFlag = true;
                        System.out.println("請輸入訂餐人的姓名:");
                        names[i] = scanner.next(); // 獲取訂餐人的姓名
                        System.out.println("您可以選擇下列的菜品:");
                        System.out.println("序號\t\t\t菜名\t\t\t單價\t\t\t點贊數");
                        for (int j = 0; j < dishNames.length; j++) { // 遍歷菜品
                            String praiseNum = (praiseNums[j] > 0) ? praiseNums[j]
                                    + "個贊"
                                    : "";
                            System.out.println(j + 1 + "\t\t\t" + dishNames[j]
                                    + "\t\t\t" + prices[j] + "\t\t\t"
                                    + praiseNum);
                        }
                        // 用戶開始點菜
                        System.out.println("請您選擇菜品的編號:");
                        int chooseDishName = scanner.nextInt();
                        System.out.println("請您輸入點餐的份數:");
                        int number = scanner.nextInt();
                        System.out.println("請您輸入送餐的地址:");
                        String address = scanner.next();
                        System.out.println("請您輸入送餐的時間:(時:分:秒)");
                        String time = scanner.next();

                        /**
                         * 根據用戶的餐費 判斷是否收取送餐費   大於60免送餐費 
                         * 01.獲取用戶點的菜的單價
                         * 02.獲取總金額
                         * 03.判斷
                         */
                        double sumPrice = prices[chooseDishName - 1] * number;
                        double price = (sumPrice > 60) ? 0 : 6;
                        System.out.println("恭喜您訂餐成功!");
                        System.out.println("您定的菜品是:"
                                + dishNames[chooseDishName - 1] + "\t" + number
                                + "份");
                        System.out.print("餐費:" + sumPrice);
                        System.out.print("\t送餐費:" + price);
                        System.out.println("\t總費用:" + (price + sumPrice));
                        // 向數組中增加數據
                        times[i] = sdf.format(sdf.parse(time)); // 時間
                        addresses[i] = address; // 地址
                        sumPrices[i] = (sumPrice + price); // 總金額
                        dishMsgs[i] = dishNames[chooseDishName - 1]; // 定的菜品
                        states[i] = 0; // 訂餐的狀態
                        numbers[i] = number; // 份數
                        break;
                    }
                }
                if (!addFlag) {// 餐袋已經滿了
                    System.out.println("餐袋已經滿了");
                }
                break;
            case 2:
                System.out.println("************查看餐袋************");
                /**
                 * 顯示
                 *   編號  訂餐人  菜品(份數)   送餐時間   送餐地址   總金額     狀態
                 */
                System.out
                        .println("編號\t\t訂餐人\t\t菜品(份數)\t\t送餐時間 \t\t送餐地址\t\t總金額\t\t狀態\t\t點贊數量");
                for (int i = 0; i < names.length; i++) {
                    if (names[i] != null) { // 有人訂餐 的顯示
                        String state = (states[i] == 0) ? "已經預定" : "已經完成"; // 獲取狀態
                        String time = times[i]; // 獲取時間
                        String sumPrice = sumPrices[i] + "元"; // 總金額
                        String address = addresses[i]; // 地址
                        String dishMsg = dishMsgs[i]; // 菜品
                        int count = numbers[i];
                        System.out.println(i + 1 + "\t\t" + names[i] + "\t\t"
                                + dishMsg + "(" + count + ")" + "\t\t" + time
                                + " \t\t" + address + "\t\t" + sumPrice
                                + "\t\t" + state + "\t\t" + praiseNums[i]);
                    }
                }
                break;
            case 3:
                System.out.println("************簽收訂單************");
                /**
                 * 01.狀態為已經完成!不需要簽收
                 * 02.狀態為已經預定!需要簽收
                 * 03.沒有指定的訂單,不能簽收
                 */
                System.out.println("請您輸入需要簽收的訂單編號:");
                int sign = scanner.nextInt();
                // 定義一個標記 來判斷訂單是否被簽收
                int flag = 0;
                for (int i = 0; i < names.length; i++) {
                    if (names[i] != null && states[i] == 0) {// 01.有訂單 可以簽收
                        states[i] = 1;// 改變狀態
                        flag = 1;
                        break; // 必須退出 否則 後續的都會變成簽收
                    } else if (names[i] != null && states[i] == 1) {// 02.有訂單
                        flag = 2;
                    }
                }
                if (flag == 1) {
                    System.out.println("訂單已經簽收!");
                } else if (flag == 2) {
                    System.out.println("訂單不需要重復簽收!");
                } else {
                    System.out.println("沒有指定的訂單!請您核實!");
                }

                break;
            case 4:
                System.out.println("************刪除訂單************");
                System.out.println("請您輸入需要刪除的訂單編號:");
                int delNum = scanner.nextInt();
                // 定義一個標記 來判斷訂單是否被簽收以及是否存在
                int delFlag = 0;
                for (int i = 0; i < names.length; i++) {
                    if (names[i] != null && states[delNum - 1] == 1) { // 可以刪除
                                                                        // 有指定的訂單
                        // 狀態是已經完成
                        // 刪除位置 之後的所有元素 依次前移
                        for (int j = delNum - 1; j < names.length - 1; j++) {
                            names[j] = names[j + 1]; // 訂餐人
                            dishMsgs[j] = dishMsgs[j + 1];// 菜品
                            times[j] = times[j + 1];// 時間
                            addresses[j] = addresses[j + 1];// 地址
                            states[j] = states[j + 1];// 狀態
                            numbers[j] = numbers[j + 1];// 份數
                        }
                        delFlag = 1;
                        break;
                    } else if (names[i] != null && states[i] == 0) { // 訂單還沒有簽收
                        delFlag = 2;
                    }
                }
                if (delFlag == 1) {
                    System.out.println("訂單已經被刪除");
                } else if (delFlag == 2) {
                    System.out.println("訂單還沒有簽收 不允許刪除!");
                } else {
                    System.out.println("沒有找到指定的訂單!");
                }
                break;
            case 5:
                System.out.println("************我要點贊***************");
                System.out.println("編號\t\t\t菜名\t\t\t價格");
                for (int i = 0; i < dishNames.length; i++) { // 遍歷所有的菜名
                    String price = prices[i] + "元"; // 獲取價格
                    String name = dishNames[i];
                    System.out.println(i + 1 + "\t\t\t" + name + "\t\t\t"
                            + price);
                }
                System.out.println("請您輸入點贊的菜品編號:");
                int chooseNum = scanner.nextInt();
                praiseNums[chooseNum - 1]++;// 點贊數加+1
                System.out.println("謝謝參與!點贊成功!");
                break;
            case 6:
                // 退出系統
                isExit = true;
                break;
            default:
                // 退出系統
                isExit = true;
                break;
            }
            if (!isExit) { // 默認這是不退出
                System.out.println("輸入0返回主菜單!");
                num = scanner.nextInt();
            } else {
                break; // 退出系統
            }

        } while (num == 0);
        System.out.println("謝謝您的光臨!!!!!");
    }
}

  

吃貨聯盟