小項目,吃貨聯盟,java初級小項目,源代碼


1:項目的實現效果、功能如圖所示。

2:項目的源代碼如下:

 

 1 import java.util.Scanner;  2 
 3 /**
 4  * 吃貨聯盟訂餐管理系統  5  *  6  */
 7 public class OrderingMsg {  8     public static void main(String[] args) {  9         // 數據主體:一組訂單信息
 10         String[] names = new String[4]; // 訂餐人名稱
 11         String[] dishMegs = new String[4]; // 所選菜品
 12         int[] times = new int[4]; // 送餐時間
 13         String[] addresses = new String[4]; // 送餐地址
 14         int[] states = new int[4]; // 訂單狀態: 0:已預定 1:已完成
 15         double[] sumPrices = new double[4]; // 總金額  16         
 17         //初始化2個訂單信息
 18         names[0] = "張晴";  19         dishMegs[0] = "紅燒帶魚 2份";  20         times[0] = 12;  21         addresses[0] = "天成路207號";  22         sumPrices[0] = 76.0;  23         states[0] = 1;  24         
 25         names[1] = "張晴";  26         dishMegs[1] = "魚香肉絲 2份";  27         times[1] = 18;  28         addresses[1] = "天成路207號";  29         sumPrices[1] = 20.0;  30         
 31         
 32         // 供選擇的菜品信息
 33         String[] dishNames = { "紅燒帶魚", "魚香肉絲", "時令鮮蔬" }; // 菜品名稱
 34         double[] prices = new double[] { 38.0, 20.0, 10.0 }; // 菜品單價
 35         int[] praiseNums = new int[3];  36 
 37         Scanner input = new Scanner(System.in);  38         int num = -1; // 用戶輸入0返回主菜單,否則退出系統
 39         boolean isExit = false; // 標志用戶是否退出系統: true:退出系統
 40 
 41         System.out.println("\n歡迎使用“吃貨聯盟訂餐系統”");  42         // 循環:顯示菜單,根據用戶選擇的數字執行相應功能
 43         do {  44             // 顯示菜單 
 45             System.out.println("****************************");  46             System.out.println("1、我要訂餐");  47             System.out.println("2、查看餐袋");  48             System.out.println("3、簽收訂單");  49             System.out.println("4、刪除訂單");  50             System.out.println("5、我要點贊");  51             System.out.println("6、退出系統");  52             System.out.println("****************************");  53             System.out.print("請選擇:");  54             int choose = input.nextInt(); // 記錄用戶選擇的功能編號
 55             boolean isAdd = false;  //記錄是否可以訂餐
 56             boolean isSignFind = false;  //找到要簽收的訂單
 57             boolean isDelFind = false;  //找到要刪除的訂單  58             // 根據用戶選擇的功能編號執行相應功能
 59             switch (choose) {  60             case 1:  61                 // 我要訂餐
 62                 System.out.println("***我要訂餐***");  63                 for (int j = 0; j < names.length; j++) {  64                    if(names[j] == null){  //找到第一個空位置,可以添加訂單信息
 65                        isAdd = true;  //置標志位,可以訂餐
 66                        System.out.print("請輸入訂餐人姓名:");  67                        String name = input.next();  68                     // 顯示供選擇的菜品信息
 69                     System.out.println("序號" + "\t" + "菜名"+"\t"+"單價");  70                     for (int i = 0; i < dishNames.length; i++) {  71                         String price = prices[i] + "元";  72                         String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i]  73                                 + "贊" : "";  74                         
 75                         System.out.println((i + 1) + "\t" + dishNames[i] + "\t"    +price+"\t"+ priaiseNum);  76  }  77                     // 用戶點菜
 78                     System.out.print("請選擇您要點的菜品編號:");  79                     int chooseDish = input.nextInt();  80                     System.out.print("請選擇您需要的份數:");  81                     int number = input.nextInt();  82                     String dishMeg =  dishNames[chooseDish - 1]  83                             +" "+ number + "份";  84                     double sumPrice = prices[chooseDish - 1] * number;  85                     //餐費滿50元,免送餐費10元
 86                     double deliCharge = (sumPrice>=50)?0:6;  87 
 88                     System.out.print("請輸入送餐時間(送餐時間是10點至20點間整點送餐):");  89                     int time = input.nextInt();  90                     while (time < 10 || time > 20) {  91                         System.out.print("您的輸入有誤,請輸入10~20間的整數!");  92                         time = input.nextInt();  93  }  94                     System.out.print("請輸入送餐地址:");  95                     String address = input.next();  96                                         
 97                     //無需添加狀態,默認是0,即已預定狀態。
 98                     System.out.println("訂餐成功!");  99                     System.out.println("您訂的是:"+dishMeg); 100                     System.out.println("送餐時間:"+time+"點"); 101                     System.out.println("餐費:"+sumPrice+"元,送餐費"+deliCharge+"元,總計:"+(sumPrice+deliCharge)+"元。"); 102                     
103                     //添加數據
104                     names[j] = name; 105                     dishMegs[j] = dishMeg; 106                     times[j] = time; 107                     addresses[j] = address; 108                     sumPrices[j] = sumPrice+deliCharge; 109                     
110                     break; 111  } 112  } 113                 if(!isAdd){ 114                     System.out.println("對不起,您的餐袋已滿!"); 115  } 116                 break; 117             case 2: 118                 // 查看餐袋
119                 System.out.println("***查看餐袋***"); 120                 System.out.println("序號\t訂餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t總金額\t訂單狀態"); 121                 for(int i=0;i<names.length;i++){ 122                     if(names[i]!=null){ 123                         String state = (states[i]==0)?"已預定":"已完成"; 124                         String date = times[i]+"日"; 125                         String sumPrice = sumPrices[i]+"元"; 126                         System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+date+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state); 127  } 128  } 129                 break; 130             case 3: 131                 // 簽收定單
132                 System.out.println("***簽收定單***"); 133                 System.out.print("請選擇要簽收的訂單序號:"); 134                 int signOrderId = input.nextInt(); 135                 for(int i=0;i<names.length;i++){ 136                     //狀態為已預定,序號為用戶輸入的訂單序號:可簽收 137                     //狀態為已完成,序叼為用戶輸入胡訂單序號:不可簽收 
138                     if(names[i]!=null && states[i]==0 && signOrderId==i+1){ 139                         states[i] = 1; //將狀態值置為已完成
140                         System.out.println("訂單簽收成功!"); 141                         isSignFind = true; 142                     }else if(names[i]!=null && states[i]==1 && signOrderId==i+1){ 143                         System.out.println("您選擇的訂單已完成簽收,不能再次簽收!"); 144                         isSignFind = true; 145  } 146  } 147                 //未找到的訂單序號:不可簽收
148                 if(!isSignFind){ 149                     System.out.println("您選擇的訂單不存在!"); 150  } 151                 break; 152             case 4: 153                 // 刪除訂單
154                 System.out.println("***刪除訂單***"); 155                 System.out.print("請輸入要刪除的訂單序號:"); 156                 int delId = input.nextInt(); 157                 for(int i=0;i<names.length;i++){ 158                     //狀態值為已完成 序號值為用戶輸入的序號:可刪除 159                     //狀態值為已預定 序號值為用戶輸入的序號:不可刪除
160                     if(names[i]!=null && states[i]==1 && delId==i+1){ 161                         isDelFind = true; 162                         //執行刪除操作:刪除位置后的元素依次前移
163                         for(int j=delId-1;j<names.length-1;j++){ 164                             names[j] = names[j+1]; 165                             dishMegs[j] = dishMegs[j+1]; 166                             times[j] = times[j+1]; 167                             addresses[j] = addresses[j+1]; 168                             states[j] = states[j+1]; 169  } 170                         //最后一位清空
171                         names[names.length-1] = null; 172                         dishMegs[names.length-1] = null; 173                         times[names.length-1] = 0; 174                         addresses[names.length-1] = null; 175                         states[names.length-1] = 0; 176                         
177                         System.out.println("刪除訂單成功!"); 178                         break; 179                     }else if(names[i]!=null && states[i]==0 && delId==i+1){ 180                         System.out.println("您選擇的訂單未簽收,不能刪除!"); 181                         isDelFind = true; 182                         break; 183  } 184  } 185                 
186                 //未找到該序號的訂單:不能刪除
187                 if(!isDelFind){ 188                     System.out.println("您要刪除的訂單不存在!"); 189  } 190                 break; 191             case 5: 192                 // 我要點贊
193                 System.out.println("***我要點贊***"); 194                 // 顯示菜品信息
195                 System.out.println("序號" + "\t" + "菜名"+"\t"+"單價"); 196                 for (int i = 0; i < dishNames.length; i++) { 197                     String price = prices[i] + "元"; 198                     String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i] 199                             + "贊" : "0贊"; 200                     
201                     System.out.println((i + 1) + "\t" + dishNames[i] + "\t"    +price+"\t"+ priaiseNum); 202  } 203                 System.out.print("請選擇您要點贊的菜品序號:"); 204                 int priaiseNum = input.nextInt(); 205                 praiseNums[priaiseNum-1]++;  //贊數加1
206                 System.out.println("點贊成功!"); 207                 break; 208             case 6: 209                 // 退出系統
210                 isExit = true; 211                 break; 212             default: 213                 //退出系統
214                 isExit = true; 215                 break; 216  } 217             if (!isExit) { 218                 System.out.print("輸入0返回:"); 219                 num = input.nextInt(); 220             } else { 221                 break; 222  } 223         } while (num == 0); 224         System.out.println("謝謝使用,歡迎下次光臨!"); 225  } 226 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM