1. 程式人生 > 其它 >Java基礎應用--吃貨聯盟訂餐系統

Java基礎應用--吃貨聯盟訂餐系統

技術標籤:java

總體框架流程圖

在這裡插入圖片描述

Created with Raphaël 2.2.0 開始 彈出主介面, 提示選擇輸入1~6; 輸入數字>=6 結束 跳轉到數字n的介面, 輸入數字0跳回主介面 輸入數字0 yes no

1.我要訂餐

Created with Raphaël 2.2.0 開始 彈出選單列表+價格 提示使用者輸入資訊: 姓名,餐品,份數,時間,送貨地址,
彈出訂餐結果: 姓名,餐品,份數,時間,送貨地址,配送費,合計,狀態 (狀態後面要改) 結束

1.可以把所有資訊挨個用陣列儲存後輸出,然後再輸出。
這裡只用陣列儲存餐品,方便輸出。然後“姓名、餐品、份數、時間、送貨地址、配送費”統一轉換成字串,放到二位陣列的第一位;而狀態要放到二位陣列的第二位(分開用2個一維陣列也可以);
2.考慮使用者輸入錯誤的問題:餐品序號/時間可能輸入錯誤,錯誤的話,要跳轉回去要求重新輸入:
比如餐品序號:

Created with Raphaël 2.2.0 開始 輸入餐品序號n
n-1未超界 結束 yes no

2.檢視餐袋

直接輸出1.0裡的二維陣列即可,輸入0返回主介面;

3.簽收訂單

需要先遍歷二維陣列,確認非空元素個數,也就是訂單個數,防止輸入的數字超界;

Created with Raphaël 2.2.0 開始 彈出訂餐資訊列表 提示輸入需要簽收 的訂單序號n n-1未超界而且 n-1未被簽收 更改“已預訂”為“已完成” 結束 yes no

4.刪除訂單

Created with Raphaël 2.2.0 開始 彈出訂餐資訊列表 提示輸入需要刪除 的訂單序號n n-1未超界而且 n-1已被簽收 彈出刪除後的訂餐資訊列表 結束 yes no

5.我要點贊

Created with Raphaël 2.2.0 開始 彈出各菜品現有的點贊數 提示輸入要點贊 的菜品序號 n未超界 第n道菜品的點贊數++ 彈出各菜品的現在點贊數 結束 yes no

完整java程式碼如下:

下面展示一些 內聯程式碼片

import java.util.Scanner;
import java.util.Arrays;
public class Zuoye1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int cdh=0;
        String[]dishes={"炒方便麵","紅燒熊掌","幹鍋魚翅","爆炒鵝肝"};
        int[]price={100,50,60,66};
        int[]good={100,50,60,40};
        int sent=10;//配送費;
        String[][]list=new String[1024][];//儲存資訊的作用;
        do{
            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("5.我要點贊");
            System.out.println("6.退出系統");
            System.out.println("************************");
            System.out.print("請輸入選單序號:");
            cdh=sc.nextInt();
            switch(cdh){
                case 1:
                    System.out.println("我要訂餐");//一次只允許錄入一組資訊,想要錄入下一組,需要返回主介面重新進來
                    for (int i = 0; i < dishes.length; i++) {
                        System.out.println((i+1)+"  "+dishes[i]);
                    }
                    System.out.print("請輸入姓名:");
                    String name=sc.next();
                    int num=1;
                    do{
                        System.out.print("請輸入餐品序號:");
                        num=sc.nextInt();
                        if(num<1||num>dishes.length){
                            System.out.println("資料輸入有誤!");
                        }
                    }while(num<1||num>dishes.length);
                    System.out.print("請輸入份數:(正整數)");
                    int fenshu=sc.nextInt();
                    int time=0;
                    do {
                        System.out.print("請輸入時間:(在10~20之間的整數)");
                        time = sc.nextInt();
                        if(time<10||time>20){
                            System.out.println("資料輸入有誤!");
                        }
                    }while(time<10||time>20);
                    System.out.print("請輸入送貨地址:");
                    String address=sc.next();
                    for (int i = 0; i < list.length; i++) {//儲存訂餐資訊
                        if(list[i]==null){
                            list[i]=new String[2];//這一步是啥意思?二維陣列中的一維陣列在開始時候未指定長度;
                            list[i][0]=(i+1)+"\t"+name+"\t"+dishes[num-1]+"\t"+fenshu+
                                    "\t"+time+"\t"+address;
                            list[i][1]="已預訂";
                            break;
                        }
                    }
                    System.out.println("序號\t姓名\t餐品\t份數\t送餐時間\t送貨地址\t狀態");
                    for (int i = 0; i < list.length; i++) {//輸出訂餐資訊
                        if(list[i]==null){
                            break;
                        }else{
                            System.out.println(list[i][0]+list[i][1]);
                        }
                    }
                    break;
                case 2:
                    System.out.println("檢視餐袋");
                    System.out.println("序號\t姓名\t餐品\t份數\t送餐時間\t送貨地址\t狀態");
                    for (int i = 0; i < list.length; i++) {//輸出訂餐資訊
                        if(list[i]==null){
                            break;
                        }else{
                            System.out.println(list[i][0]+list[i][1]);
                        }
                    }
                    break;
                case 3:
                    System.out.println("簽收訂單");
                    System.out.println("序號\t姓名\t餐品\t份數\t送餐時間\t送貨地址\t狀態");
                    for (int i = 0; i < list.length; i++) {//輸出訂餐資訊
                        if(list[i]==null){
                            break;
                        }else{
                            System.out.println(list[i][0]+list[i][1]);
                        }
                    }
                    int changdu=0;
                    for (int i = 0; i < list.length; i++) {//遍歷二維陣列,確認已有訂單的長度;
                        if (Arrays.equals(list[i], null)) {
                            changdu = i;
                            break;
                        }
                    }
                        System.out.println("一共有"+changdu+"個定單");
                    int qianshou=1;
                    do {
                        System.out.println("請輸入需要簽收的訂單號:(請輸入正整數)");
                        qianshou=sc.nextInt();
                        if(qianshou<1||qianshou>changdu){
                            System.out.println("資料輸入有誤!");
                        }else if(list[qianshou-1][1].equals("已完成")){
                            System.out.println("不能簽收已完成的訂單!");
                        }else{
                            list[qianshou-1][1]="已完成";
                            break;
                        }
                    }while(qianshou<1||qianshou>changdu||list[qianshou-1][1].equals("已完成"));
                    break;
                case 4:
                    System.out.println("刪除訂單");
                    System.out.println("序號\t姓名\t餐品\t份數\t送餐時間\t送貨地址\t狀態");
                    for (int i = 0; i < list.length; i++) {//輸出訂餐資訊
                        if(list[i]==null){
                            break;
                        }else{
                            System.out.println(list[i][0]+list[i][1]);
                        }
                    }
                    int changdu2=0;
                    for (int i = 0; i < list.length; i++) {//遍歷二維陣列,確認已有訂單的長度;
                        if (Arrays.equals(list[i], null)) {
                            changdu2 = i;
                            break;
                        }
                    }
                    System.out.println("一共有"+changdu2+"個定單");
                    int shanchu=1;
                    do {
                        System.out.println("請輸入需要刪除的訂單號:(請輸入正整數)");
                        shanchu=sc.nextInt();
                        if(shanchu<1||shanchu>changdu2){
                            System.out.println("資料輸入有誤!");
                        }else if(list[shanchu-1][1].equals("已預訂")){
                            System.out.println("不能刪除未完成的訂單!");
                        }else{
                            if(shanchu==list.length+1){
                                list[shanchu-1]=null;
                            }else{
                                for (int j = shanchu-1; j < list.length-1; j++) {
                                    list[j]=list[j+1];
                                }
                            }
                            break;
                        }
                    }while(shanchu<1||shanchu>changdu2||list[shanchu-1][1].equals("已預定"));
                    System.out.println("序號\t姓名\t餐品\t份數\t送餐時間\t送貨地址\t狀態");
                    for (int i = 0; i < list.length; i++) {//輸出訂餐資訊
                        if(list[i]==null){
                            break;
                        }else{
                            System.out.println(list[i][0]+list[i][1]);
                        }
                    }
                    break;
                case 5:
                    System.out.println("我要點贊");
                    int dianzan=1;
                    do {
                        for (int i = 0; i < good.length; i++) {
                            System.out.println(i + 1 + "  " + dishes[i] + "  " + good[i]);
                        }
                            System.out.println("請輸入要點讚的菜品序號:(正整數)");
                            dianzan=sc.nextInt();
                            if(dianzan<1||dianzan>good.length){
                                System.out.println("資料輸入有誤!");
                            }else{
                                good[dianzan-1]++;
                                for (int i = 0; i < good.length; i++) {
                                    System.out.println(i + 1 + "  " + dishes[i] + "  " + good[i]);
                                }
                                break;
                            }
                    }while(dianzan<1||dianzan>good.length);

                    break;
                case 6:
                    System.out.println("謝謝光臨,歡迎下次再來!");
                    break;
                default:
                    System.out.println("輸入錯誤");
                    break;
            }
            System.out.println("輸入0返回主介面,輸入其它數字退出點餐系統");
            cdh=sc.nextInt();
        }while(cdh==0);
        System.out.println("您已退出點餐系統,歡迎下次再來!");
    }
}