項目案例–吃貨聯盟
一、項目準備:
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("點贊成功!");
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。
發表評論
請登錄后評論...
登錄后才能評論