項目案例–吃貨聯盟
一、項目準備:
1.開發環境:
- JDK1.8
- IntelliJ IDEA
2.技術點分析:
- 能理解程序基本概念 – 程序
- 會使用變數、數據類型
- 會使用順序、選擇、循環、跳轉語句編寫程序
- 會使用數組
3.任務描述:
只要動動手指,就能送餐上門」,網上訂餐深受現代人青睞,現開發一個網上訂餐系統,功能如下:
- 我要訂餐


- 查看餐袋

- 簽收訂單



- 刪除訂單



- 我要點贊

- 退出系統

二、需求:
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-tw/n/284336.html
微信掃一掃
支付寶掃一掃