/**
* 吃貨聯盟 訂單類
* @author 張歡
*
*/
public class OrderSet {
String[] names = new String[4]; //訂餐人姓名
String[] dishMegs = new String[4]; //保存菜品名及份數
int[] times =new int[4]; //送餐時間
String[] addresses = new String[4]; //保存送餐地址
int[] states = new int[4]; //保存訂單狀態: 0表示已預訂,1表示已完成
double[] sumPrices = new double[4]; //保存訂單的總金額
}
/**
* 吃貨聯盟 訂單管理工具類
* @author 張歡
*
*/
public class OrdeUtil {
String[] disNames={"紅燒帶魚","魚香肉絲","時令蔬菜"};
double[]prices ={38,20,10};
int[] praiseNums=new int [3];
OrderSet oSet =new OrderSet();//創建OrderSet類的對象為oset
//實現初始化
public void initial(){
//第一條訂單
oSet.names[0]="張晴";
oSet.dishMegs [0]="紅燒帶魚";
oSet. times[0]=12;
oSet.addresses[0]="天成路207";
oSet.sumPrices[0]=76.0;
oSet.states[0]=1;
//第二條訂單
oSet.names[1]="張晴";
oSet.dishMegs [1]="魚香肉絲";
oSet. times[1]=18;
oSet.addresses[1]="天成路207";
oSet.sumPrices[1]=80.0;
oSet.states[1]=0;
}
public boolean add(){//訂餐就是增加訂單
boolean isAdd=false;
Scanner input=new Scanner(System.in);
for (int i = 0; i < oSet.names.length; i++) {
if(oSet.names[i]==null){//找到第一個為空的位置
isAdd=true;//可以訂餐
System.out.println("請輸入訂餐姓名:");
String name=input.next();
System.out.println("序號"+"\t"+"菜名"+"\t"+"單價"+"\t"+"點贊數");
for (int k = 0; k <disNames.length; k++) {//顯示供選擇的菜品信息
String price=prices[k]+"元";
String praiseNum=(praiseNums[k])>0?praiseNums[k]+"贊":"0";
System.out.println((k+1)+"\t"+disNames[k]+"\t"+price+"\t"+praiseNum);
}
System.out.println("請選擇您要點的菜品編號:");//用戶點菜
int chooseDish=input.nextInt();
System.out.println("請選擇您需要的份數");
int number=input.nextInt();
String dishMeg=disNames[chooseDish-1]+""+number+"份";
double sumprice=prices[chooseDish-1]*number;
double deliChaege=(sumprice>=50)?0:5;//餐費滿50元,免送餐費
System.out.println("請輸入送餐時間(送餐時間是10點至20點之間整點送餐)");
int time=input.nextInt();
while(time<10||time>20){
System.out.println("您的輸入有誤,請輸入10-20之間的整數!");
time=input.nextInt();
}
System.out.println("請輸入送餐地址");
String address=input.next();
//無需添加狀態,默認是0,既已預定狀態
System.out.println("訂餐成功!");
System.out.println("您定的是:"+dishMeg);
System.out.println("送餐時間是:"+time+"點");
System.out.println("餐費"+sumprice+"元,送餐費"+deliChaege+"元,總計"+(sumprice+deliChaege)+"元");
//添加數據
oSet.names[i]=name;
oSet.dishMegs[i]=dishMeg;
oSet.times[i]=time;
oSet.addresses[i]=address;
oSet.sumPrices[i]=sumprice+deliChaege;
isAdd=false;
break;
}//if結束
}//for循環結束
if(isAdd){
System.out.println("對不起!您的餐帶已滿。");
return false;
}else{
return true;
}
}//add()結束
//查看餐袋
public void find(){
System.out.println("序號\t訂餐人\t餐品信息\t\t送餐時間\t送餐地址\t\t總金額\t訂單狀況");
for (int i = 0; i <oSet.names.length; i++) {
String state=oSet.states[i]==0 ?"已預定":"已完成";//把0 1的狀態改為字符串
if(oSet.names[i]!=null)
System.out.println((i+1)+"\t"+oSet.names[i]+"\t"+oSet.dishMegs[i]+"\t"
+oSet.times[i]+"\t"+oSet.addresses[i]+"\t"+oSet.sumPrices[i]+"元"+"\t"+state);
}//for
}//find
public void qscd(){//簽收訂單
Scanner input=new Scanner(System.in);
System.out.println("請輸入定單序號");
int orderNo=input.nextInt();
boolean flag=false;
for (int i = 0; i <oSet.names.length; i++) {
if(oSet.names[i]!=null && oSet.states[i]==0 && orderNo==(i+1)){//訂單狀態為0,改為已簽收
oSet.states[i]=1;//已經簽收
System.out.println("訂單已經簽收成功!");
flag=true;
}else if(oSet.names[i]!=null && oSet.states[i]==1 && orderNo==(i+1)){//訂單狀態為1,已經簽
System.out.println("訂單已經是簽收狀態");
flag=true;
}
}//for
if(flag){
System.out.println("已簽收");
}else{
System.out.println("沒有此序號的訂單");
}
}//簽收訂單方法結束
//刪除訂單
public void deletedd(){
Scanner input=new Scanner(System.in);
boolean delFlag=false;//標記是否找到要刪除的訂單
System.out.println("請輸入要刪除的訂單號");
int deleteId=input.nextInt();
for (int i = 0; i <oSet.names.length; i++) {
if(oSet.names[i]!=null && oSet.states[i]==1 && deleteId==(i+1)){//狀態值為已完成,
delFlag=true;//可以刪除已經簽收的了
int index = 0;//從后往前 到要刪除的位置 ,移動
for (int K = deleteId-1; K<oSet.names.length-1; K++) {
oSet.names[K]=oSet.names[K+1];
oSet.addresses[K]=oSet.addresses[K+1];
oSet.dishMegs[K]=oSet.dishMegs[K+1];
oSet.states[K]=oSet.states[K+1];
oSet.sumPrices[K]=oSet.sumPrices[K+1];
oSet.times[K]=oSet.times[K+1];
index=K;//記錄的最后一次就是有內容的最后一個位置
}
//最后儲存了內容的一位清空
oSet.names[index]=null;
oSet.addresses[index]=null;
oSet.dishMegs[index]=null;
oSet.states[index]=0;
oSet.sumPrices[index]=0;
oSet.times[index]=0;
System.out.println("已經刪除完畢");
break;
}else if(oSet.names[i]!=null && oSet.states[i]==0 && deleteId==(i+1)){//狀態值為已預定
System.out.println("預定訂單的狀態不可刪除"); //預定訂單的狀態不可刪除
delFlag=true;
}
}//for結束
if(delFlag){
System.out.println("已經執行完畢");
}else{
System.out.println("沒有要刪除的訂單號!");
}
}//deleteOrder方法結束
//點贊
public void praise(){
Scanner input =new Scanner(System.in);
//顯示菜品信息
System.out.println("序號"+"\t"+"菜品"+"\t"+"單價");
for (int i = 0; i < disNames.length; i++) {
String price=prices[i]+"元";
String praiseNum=(praiseNums[i]>0)?praiseNums[i]+"贊":"";
System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+praiseNum);
}
System.out.println("請選擇您要點贊的菜品");
int praiseNum=input.nextInt();
praiseNums[praiseNum-1]++;//贊數+1
System.out.println("點贊成功!");
}
}
//main方法
public class Chuolianmeng {
public static void main(String[] args) {
OrdeUtil ou=new OrdeUtil();
boolean flag = false;
int num = 0;
do {
System.out.println("歡迎使用“吃貨聯盟訂單系統”");
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("******************************************\n");
Scanner input=new Scanner(System.in);
System.out.println("請選擇:");
int xz=input.nextInt();
switch(xz){
case 1:
flag = ou.add();
break;
case 2:
ou.find();
break;
case 3:
ou.qscd();
break;
case 4:
ou.deletedd();
break;
case 5:
ou.praise();
break;
case 6:
break;
}
if(flag){
System.out.println("輸出0返回!");
num = input.nextInt();
}
} while (num == 0);
}
}