java初學者簡易小程序「java項目開發案例經典」

項目案例–吃貨聯盟

一、項目準備:

1.開發環境:

  • JDK1.8
  • IntelliJ IDEA

2.技術點分析:

  • 能理解程序基本概念 – 程序
  • 會使用變量、數據類型
  • 會使用順序、選擇、循環、跳轉語句編寫程序
  • 會使用數組

3.任務描述:

只要動動手指,就能送餐上門」,網上訂餐深受現代人青睞,現開發一個網上訂餐系統,功能如下:

  • 我要訂餐
JAVA項目案例詳解(帶代碼)
JAVA項目案例詳解(帶代碼)
  • 查看餐袋
JAVA項目案例詳解(帶代碼)
  • 簽收訂單
JAVA項目案例詳解(帶代碼)
JAVA項目案例詳解(帶代碼)
JAVA項目案例詳解(帶代碼)
  • 刪除訂單
JAVA項目案例詳解(帶代碼)
JAVA項目案例詳解(帶代碼)
JAVA項目案例詳解(帶代碼)
  • 我要點贊
JAVA項目案例詳解(帶代碼)
  • 退出系統
JAVA項目案例詳解(帶代碼)

二、需求:

1.需求分析:

買家:

買家訂單基本信息-用戶名,時間,地址,數量等

賣家:

菜品信息-單價、品種、點贊數

模塊劃分:

我要訂餐–添加–insert -C(create) 查看餐袋–查詢–read -R 簽收訂單–修改–update -U 刪除訂單–刪除–delete -D 基本所有的項目都是在對數據進行增刪改查(CRUD) 我要點贊–輔助功能 退出系統–流程控制

2.編寫要求:

項目名—Foods 包名–cn.xx.controll 類名–OrderingMsg 項目編寫完成需要製作成運行jar及bat文件

3.編寫步驟:

定義變量–測試數據–搭建總框: do…while中嵌套switch,將跳轉切換使用數字進行替換 查看訂單 查看之前–循環之前先判定是否為空 添加訂單 作業:補全是否繼續的功能 添加註意打印小票和數組添加數據的分開操作 簽收訂單: 判定簽收的情況:不存在該訂單/存在不能簽收/簽收 刪除訂單: 將需要刪除的數據之後的所有數據全部前移,然後將最後一條廢數據清空 我要點贊: 顯示菜單,然後將指定的點贊菜品添加1

三、代碼分析:

1.定義變量:

//定義買家變量--數組
String[] names=new String[4];            //訂餐人姓名
int[] times=new int[4];                  //訂餐時間-整點
String[]  addresses=new String[4];       //訂餐地址
String[] dishMegs=new String[4];         //所選菜品信息
double[] sumPrices=new double[4];        //總金額
int[] states=new int[4];                 //訂單狀態信息
        
//定義賣家菜品變量--數組
String[] dishNames={"大肘子","鍋包肉","辣鴨頭","麻辣蝦"};     //菜品信息
double[] prices={59,58,48,69};                        //菜品單價
int[] praiseNums={4,5};                               //菜品點贊數

2.框架模塊:

do{
    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.println("請選擇");
    num=input.nextInt();
    switch (num) {
        case 1:
            System.out.println("我要訂餐");
            break;
        case 2:
            System.out.println("查看餐袋");
            break;
        case 3:
            System.out.println("簽收訂單");
            break;
        case 4:
            System.out.println("刪除訂單");
            break;
        case 5:
            System.out.println("我要點贊");
            break;
        case 6:
            System.out.println("退出系統");
            isExit=true;
            break;
        default:
            isExit=true;
            break;
    }

    //判定是否回退到一級菜單
    if(!isExit){
        System.out.println("輸入0返回");
        num=input.nextInt();
    }else{
        break;
    }
}while(num==0);
System.out.println("歡迎下次使用!");  

3.查看餐袋:

for (int i = 0; i <names.length; i++) {
    //判定---如果用戶信息為空,該訂單不進行打印
    if(names[i]!=null){
        String state=(states[i]==0)?"已預訂":"已完成";
        String  sumPrice=sumPrices[i]+"元";
        String time=times[i]+"時";
        System.out.println((i+1)+" tt"+names[i]+" tt"
                           +dishMegs[i]+" tt"+time
                           +" tt"+addresses[i]+" tt"+sumPrice+" tt"+state);
    }
}

4.我要訂餐:

for (int i = 0; i < names.length; i++) {
    //往數組添加內容-需要先獲取數組空的位置-第一個位置--循環結束掉
    if(names[i]==null){
        //進入判定則標誌着可以進行數據添加的空位---將標記進行修改
        isAdd=true;
        //添加訂單
        System.out.println("請輸入用戶名");  //模擬登陸
        String name=input.next();
        //打印菜品信息
        System.out.println("序號  t菜名 t單價 t點贊數");
        for (int j = 0; j < dishNames.length; j++) {
            String  price=prices[j]+"元";
            String  praise=(praiseNums[j]>0)?praiseNums[j]+"贊":"";
            System.out.println((j+1)+" t"+dishNames[j]+" t"+price+" t"+praise);
        }
        System.out.println("請輸入你選擇的菜品的序號");
        int  chooseDish=input.nextInt();
        System.out.println("請輸入房購買的份數");
        int number=input.nextInt();
        //處理訂餐信息和訂餐總額
        String dishMeg=dishNames[chooseDish-1]+""+number+"份";
        double sumPrice=prices[chooseDish-1]*number;
        //判定是否需要進行配送費:超過50免配送費
        double deliCharge=(sumPrice>=50)?0:5;    //配送費
        //配送時間-如果時間輸入不正確需要重複輸入直到輸入正確為止  10  -20
        System.out.println("請輸入配送時間(10-20的整點)送餐");
        int  time=input.nextInt();
        /*while(!(time>=10&&time<=20)){
                            System.out.println("您輸入的時間不正確,請重新輸入");
                            time=input.nextInt();
                        }*/
        while(time<10 ||time>20){
            System.out.println("您輸入的時間不正確,請重新輸入");
            time=input.nextInt();
        }
        System.out.println("請輸入送餐地址");
        String address=input.next();

        //打印小票
        System.out.println("訂餐成功!");
        System.out.println("您的訂餐是"+dishMeg);
        System.out.println("餐費是"+sumPrice+",配送費是"+deliCharge+",總金額是"+(sumPrice+deliCharge));

        //將數據添加到數組中
        names[i]=name;
        dishMegs[i]=dishMeg;
        times[i]=time;
        addresses[i]=address;
        sumPrices[i]=sumPrice+deliCharge;
        //當將當前循環中添加完成以後直接循環結束
        break;
    }
}
//如果整個循環結束都沒有找到空位,則表示當前餐袋已滿
if(!isAdd){
    System.out.println("對不起,餐袋已滿!");
}

5.簽收訂餐:

for (int i = 0; i <names.length; i++) {
    //判定---如果用戶信息為空,該訂單不進行打印
    if(names[i]!=null){
        String state=(states[i]==0)?"已預訂":"已完成";
        String  sumPrice=sumPrices[i]+"元";
        String time=times[i]+"時";
        System.out.println((i+1)+" tt"+names[i]+" tt"+dishMegs[i]+" tt"+time
                           +" tt"+addresses[i]+" tt"+sumPrice+" tt"+state);
    }
}

6.刪除訂單:

for (int i = 0; i < names.length; i++) {
    if(names[i]!=null&&states[i]==1&&delId==i+1){
        //能找到訂單並可以刪除
        isDelFind=true;
        //執行刪除操作,刪除元素以後的所有數據依次移動--後續多個數據
        for (int j = delId-1; j < names.length-1; j++) {
            names[j]=names[j+1];
            dishMegs[j]=dishMegs[j+1];
            times[j]=times[j+1];
            addresses[j]=addresses[j+1];
            states[j]=states[j+1];
        }
        //最後一個數據進行清空還原處理
        names[names.length-1]=null;
        dishMegs[dishMegs.length-1]=null;
        times[times.length-1]=0;
        addresses[addresses.length-1]=null;
        states[states.length-1]=0;
        System.out.println("刪除訂單成功!");
        break;
    }else if(names[i]!=null&&states[i]==0&&delId==i+1){
        //能找到訂單但是不能刪除
        isDelFind=true;
        System.out.println("該訂單未簽收,不能被刪除!");
        break;
    }
}

//如果循環結束都沒有找到訂單則表示不存在
if(!isDelFind){
    System.out.println("您要刪除的訂單不存在!");
}

7.我要點贊:

for (int i = 0; i < dishNames.length; i++) {
    String price=prices[i]+"元";
    String praiseNum=(praiseNums[i]>0)?praiseNums[i]+"贊":"";
    System.out.println((i+1)+"t "+dishNames[i]+"t "+price+"t "+praiseNum);
}
System.out.println("請輸入您需要點贊的菜品序號");
int praiseId=input.nextInt();
//將點贊內容進行自增
praiseNums[praiseId-1]++;
System.out.println("點贊成功!");

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/284336.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-22 15:07
下一篇 2024-12-22 15:07

相關推薦

發表回復

登錄後才能評論