1、
package com.dingcanxitong3; //創建一個訂餐的接口 public interface DingCan { public void dingcan(); }
package com.dingcanxitong3; //創建一個查看餐袋的接口 public interface ChaKan { public void chakan(); }
package com.dingcanxitong3; //創建一個簽收接口 public interface QianShou { public void qianshou(); }
package com.dingcanxitong3; //創建一個刪除接口 public interface ShanChu { public void shanchu(); }
package com.dingcanxitong3; //創建一個退出的接口 public interface TuiChu { public void tuichu(); }
package com.dingcanxitong3; //創建一個點贊接口 public interface DianZan { public void dianzan(); }
package com.dingcanxitong3; //創建一個功能的類實現各個功能接口 import java.util.Scanner; public class Functions implements DingCan,ChaKan,QianShou,ShanChu,DianZan,TuiChu{ int length = 5; String[] names = new String[length];//訂餐人 String[] descs = new String[length];//訂單餐品信息 int[] dates =new int[length];//送餐日期 String[] addresses = new String[length];//送餐地址 double[] moneys = new double[length];//總價 boolean[] status = new boolean[length];//訂餐狀態:true:完成;false未完成 int[] nums = new int[length];//訂餐數量 String [] foods = {"紅燒魚","蛋炒飯","黃燜雞"}; double [] prices = {15.00,10.00,16.00}; int [] zan = {10,20,30}; Scanner sc = new Scanner(System.in); @Override public void dingcan() { // TODO Auto-generated method stub System.out.println("****我要訂餐****"); int index = -1;//定義要添加的位置下標 for(int i = 0 ;i<length;i++) { //循環找到為空的數組下標 if(names[i]==null) { //如果i數組上的值為空 index = i; //把i賦值給index break; //跳出if } } if(index<0) { //如果index小於0,說明上個循環未找到為空的數組,則 System.out.println("當前餐袋已滿!!!"); //提示 }else { System.out.println("請輸入訂餐人姓名:"); //如果index不小於0,提示輸入姓名 names[index] = sc.next(); //訂餐人數組index接收控制台輸入的值 System.out.println("序號\t菜名\t單價\t點贊數量"); //輸出菜名 單價 點贊數量 int max = foods.length; //定義max 把菜品數組最大的下標賦值給它 for(int i = 0;i<foods.length;i++) { //循環找到不為空的菜品數組下標 if(foods[i]==null) { //如果數組下標為空了 把i賦值給max,跳出循環 max = i; break; } System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次"); } System.out.println("請選擇您要點的菜品編號:"); int id = 0; //定義輸入的菜品id do { id = sc.nextInt(); //接收控制台輸入的值 if(id<1||id>max) { //如果輸入的值小於0或者大於菜品數組不為空的最大下標 System.out.println("不存在此編號菜品,請重新輸入:"); //提示 } } while (id<1||id>max); descs[index] = foods[id-1]; //把菜品數組下標為輸入的值減一上的值,賦值給餐品信息數組index上的 System.out.println("請選擇您需要的份數:"); int num = sc.nextInt(); //定義份數num 接收控制台輸入的數據 nums[index] = num; //把控制台上的數據賦值給數組下標為index的值 System.out.println("請輸入送餐時間(送餐時間是10點至20點間整點送餐)"); int date = 0; //定義輸入的時間date do { date = sc.nextInt(); //接收 if(date<10||date>20) { //如果輸入的時間小於10或者大於20 System.out.println("您的輸入有誤,請輸入10~20間的整數!:"); //提示 } } while (date<10||date>20); dates[index] = date; //把輸入的時間輔助給時間數組下標為index上 System.out.println("請輸入送餐地址:"); addresses[index] = sc.next(); //把輸入地址賦值給地址數組下標為index上 double money = prices[id-1]*num; //把菜品的價格乘於份數 賦值給定義的money System.out.println("訂餐成功:"); System.out.println("您訂的是:"+foods[id-1]+" "+num+"份"); System.out.println("送餐時間:"+date+"點"); double song = 0.0; //定義送餐費 if(money<20) { //如果訂餐的價格小於20 song = 3.0; //送餐費增加3.0元 } moneys[index] = money+song; //把定餐的價格和送餐費賦值給總價格數組下標為index上的值 System.out.println("餐費:"+money+"。送餐費:"+song+"元,總計:"+(money+song)+"元"); } } @Override public void chakan() { // TODO Auto-generated method stub System.out.println("****查看餐袋****"); System.out.println("序號\t訂餐人\t餐品信息\t\t送餐日期\t\t送餐地址\t\t總金額\t訂單狀態"); for(int i = 0;i<length;i++) { //循環變量輸出訂餐的信息 if(names[i]==null) { //如果訂餐人數組為空則跳出循環 break; } String canpin = descs[i]+" "+nums[i]+"份"; String zhuangtai = status[i]?"已完成":"已預訂"; System.out.println((i+1)+"\t"+names[i]+"\t"+canpin+"\t\t"+dates[i]+"點\t\t"+addresses[i]+"\t\t"+moneys[i]+"元\t"+zhuangtai); } } @Override public void qianshou() { // TODO Auto-generated method stub System.out.println("****簽收訂單****"); System.out.println("請輸入要簽收的訂單編號:"); boolean isTrue = false; int id = -1; //定義簽收訂單的編號 do { id = sc.nextInt(); //接收輸入的要簽收的值 if(id<1||id>descs.length) { //如果訂單編號小於1,且大於訂餐信息數組的最大下標 isTrue = true; }else { if(descs[id-1]==null) { //如果訂餐信息數組下標“要簽收訂單編號減一”上的值為空 isTrue = true; }else { isTrue = false; //否則 } } if(isTrue) { System.out.println("不存在此編號的訂單信息,請重新輸入:"); } } while (isTrue); status[id-1] = true; //把true賦值給 狀態數組下標為要簽收的訂單序號減一 System.out.println("簽收完成"); //提示 } @Override public void shanchu() { // TODO Auto-generated method stub System.out.println("****刪除訂單****"); System.out.println("請輸入要刪除的訂單編號:"); int big = length; //定義下標 for(int i = 0;i<length;i++) { //循環找到訂餐信息為空的數組下標 if(descs[i]==null) { //如果訂餐信息數組為空 big = i; //把下標i賦值給big 跳出 break; } } int no = 0; //輸入的值 do { no = sc.nextInt(); //接收輸入的要刪除的序號 if(no<1||no>big) { //如果輸入的值小於1 或大於訂餐信息數組不為空的最大的下標 System.out.println("不存在此編號菜品,請重新輸入:"); //提示 } } while (no<1||no>big); if(status[no-1]==false) { //如果狀態數組下標為要刪除的序號減一的值==未完成 System.out.println("訂單未完成,不能刪除"); //提示 }else { for(int i=no-1;i<length-1;i++) { //循環讓要刪除的序號減一的下標開始,到最大數組下標減一,依次把后面的值移到前一個數組上 names[i] = names[i+1]; descs[i] = descs[i+1]; nums[i] = nums[i+1]; dates[i] = dates[i+1]; addresses[i] = addresses[i+1]; moneys[i] = moneys[i+1]; status[i] = status[i+1]; } //最后把最后一個數組上的值清空 names[length-1] = null; descs[length-1] = null; nums[length-1] = 0; dates[length-1] = 0; addresses[length-1] = null; moneys[length-1] = 0.0; status[length-1] = false; System.out.println("刪除訂單成功"); } } @Override public void dianzan() { // TODO Auto-generated method stub System.out.println("****我要點贊****"); System.out.println("序號\t菜名\t單價\t點贊數量"); int max = foods.length; //循環遍歷菜名 單價 點贊數 for(int i = 0;i<foods.length;i++) { if(foods[i]==null) { max = i; break; } System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次"); } System.out.println("請選擇您要點贊的菜品編號:"); int bianhao = 0; //定義 do { bianhao = sc.nextInt(); //接收 if(bianhao<1||bianhao>max) { //如果編號為小於1或大於菜單不為空的最大數組下標時 System.out.println("不存在此編號菜品,請重新輸入:"); } } while (bianhao<1||bianhao>max); zan[bianhao-1]++; //點贊數組下標輸入的編號減一的值自加 System.out.println("點贊成功,謝謝您的反饋"); } @Override public void tuichu() { // TODO Auto-generated method stub System.out.println("****退出系統****"); System.out.println("謝謝使用"); //退出系統 System.exit(1); } }
package com.dingcanxitong3; import java.util.Scanner; //創建一個側四類 public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Functions fun = new Functions(); int choose; do { System.out.println("******************************"); System.out.println("1、我要訂餐 2、查看餐袋 3、簽收訂單 4、刪除訂單 5、我要點贊 6、退出系統"); System.out.println("請選擇功能的編號(1-6):"); choose = sc.nextInt(); switch(choose) { case 1: fun.dingcan(); break; case 2: fun.chakan(); break; case 3: fun.qianshou(); break; case 4: fun.shanchu(); break; case 5: fun.dianzan(); break; case 6: fun.tuichu(); break; } }while(choose<7); } }