/**
* 吃货联盟 订单类
* @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("序号"+" "+"菜名"+" "+"单价"+" "+"点赞数");
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)+" "+disNames[k]+" "+price+" "+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("序号 订餐人 餐品信息 送餐时间 送餐地址 总金额 订单状况");
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)+" "+oSet.names[i]+" "+oSet.dishMegs[i]+" "
+oSet.times[i]+" "+oSet.addresses[i]+" "+oSet.sumPrices[i]+"元"+" "+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("序号"+" "+"菜品"+" "+"单价");
for (int i = 0; i < disNames.length; i++) {
String price=prices[i]+"元";
String praiseNum=(praiseNums[i]>0)?praiseNums[i]+"赞":"";
System.out.println((i+1)+" "+disNames[i]+" "+price+" "+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("******************************************
");
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);
}
}