import java.util.Scanner;
import javax.print.attribute.standard.PrinterLocation; import javax.xml.parsers.DocumentBuilder;
import com.sun.org.apache.bcel.internal.generic.DASTORE; import com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.NamespaceWildcardIterator; import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable; import com.sun.org.apache.xpath.internal.operations.Equals; import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLService;
public class Demo6 { public static void main(String[] args) { // 创建数据主题部分----订单信息,菜品信息 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]; // 订单状态 double[] sumPrices = new double[4]; // 总金额
// 创建俩个假数据,俩套订单
names[0] = "张晴";
dishMegs[0] = "红烧带鱼 2份";
times[0] = 13;
addresses[0] = "天成路207号";
states[0] = 1;
sumPrices[0] = 76.0;
names[1] = "张晴";
dishMegs[1] = "鱼香肉丝 2份";
times[1] = 10;
addresses[1] = "天成路207号";
states[1] = 0;
sumPrices[1] = 20.0;
// 菜品---
String[] dishNames = new String[4]; // 餐品名
double[] prices = new double[4]; // 单价
int[] praiseNums = new int[4]; // 点赞数
dishNames[0]="红烧带鱼";
prices[0]=38.0;
dishNames[1]="鱼香肉丝";
prices[1]=20.0;
dishNames[2]="时令蔬菜";
prices[2]=10.0;
// 扫描器
Scanner input = new Scanner(System.in);
int num = 0;
// 完成框架
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.print("请选择:");
// 选择
int choice = input.nextInt();
//标记
boolean isAdd =false; //是否可以添加,是否可以订餐
boolean isSignOrder=false;
int index =0;
boolean isDel=false;
switch (choice) {
case 1:
//在订餐之前判断餐袋有没有慢---如果慢了,要提示餐袋已满,不能订餐;如果没有满,才能操作以下订餐
for(int j=0;j<names.length;j++){
if (names[j]==null) {
//找到空位,标记设为true
isAdd =true;
index =j;
break;
}
}
//表示餐袋没有满
if (isAdd) {
isAdd =true;
System.out.println("***我要订餐***");
System.out.println("请输入订餐人的姓名:");
String name=input.next();
System.out.println("序号\t菜名\t单价");
for (int i = 0; i < dishNames.length; i++) {
//判断数组中存在菜品的信息就打印输出,不然不输出
if (dishNames[i]!=null) {
String dishInfo ="";
dishInfo+=i+1+"\t"+dishNames[i]+"\t"+prices[i]+"\t";
if (praiseNums[i]!=0) {
dishInfo+=praiseNums[i]+"赞";
}
System.out.println(dishInfo);
}
}
//选择订单菜品的编号
System.out.println("请选择你要点的菜品编号:");
int dishNo=input.nextInt();
//选择份数
System.out.println("请选择您需要的份数:");
int n=input.nextInt();
String dishMeg =dishNames[dishNo-1]+""+n+"份"; //拼接字符串
//选择送餐的时间
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();
//计算餐费
double totalPrice; //总餐费
double dishCharge; //小费
//不算消费的价格
double dishPrice= prices[dishNo-1]*n;
dishCharge =dishPrice>50?0:6; //计算获得消费
totalPrice =dishCharge+dishPrice;
//餐费的信息:餐费76.0圆,送餐费0.0元,总计:76.0元
String orderInfo = "";
System.out.println("订餐成功!");
orderInfo+="您订的是:"+dishMeg+"\n"+"送餐时间:"+time+"点\n餐费:"+dishPrice+"元,送餐费"+dishCharge+"元,总计:"+totalPrice+"元。";
System.out.println(orderInfo);
//存入数据组中
names[index] = name;
dishMegs[index] = dishMeg;
times[index] = time;
addresses[index] = address;
states[index] = 0;
sumPrices[index] = totalPrice;
} else {
//餐袋已满
System.out.println("餐袋已满!不能订餐!");
break;
}
break;
case 2:
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t总金额\t订单状态");
for (int i = 0; i < names.length; i++) {
String dishInfo = "";
if (names[i]!=null) {
String state =states[i]==0?"已预定":"已完成";
dishInfo+=i+1+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+times[i]+"点\t"+addresses[i]+"\t"+sumPrices[i]+"\t"+state;
System.out.println(dishInfo);
}else {
//一旦遇到为null就不打印了,跳出循环
break;
}
}
break;
case 3:
System.out.println("***签收订单***");
System.out.println("请选择要签收的订单号:");
int orderId = input.nextInt();
//签收的订单可能出现的情况: 1.你输入的订单号不存在---给出提示
//2.你输入的订单号是已完成的状态:=====不能签收,给出提示
//3. 你输入的订单号可以签收:======改变状态,给出提示,签收完成
for(int i =0;i<names.length;i++) {
//3. 你输入的订单号可以签收:======改变状态,给出提示,签收完成
if (names[i]!=null && i==orderId-1 && states[i]==0) {
System.out.println("订单签收成功!");
break;
//2.你输入的订单号是已完成的状态:=====不能签收,给出提示
}else if(names[i]!=null && i==orderId-1 && states[i]==1) {
isSignOrder = true;
states[i]=1;//改变签收状态是已完成
System.out.println("您选择的订单已完成签收,不能再次签收!");
}
}
//表示数字不能进行签收
if (!isSignOrder) {
System.out.println("您选择的订单不存在");
}
break;
case 4:
System.out.println("***删除订单***");
System.out.println("请输入要删除的订单序号:");
int delId = input. nextInt();
//分析:1 你输入的订单需要存在。
//2 并且是可以删除的状态 state=1;才可以删除
//3.删除需要讲六个数组里面对应位置的元素删除掉
for(int i=0;i<names.length;i++) {
//2 并且是可以删除的状态 state=1;才可以删除
if (names[i]!=null && i==(delId-1) && states[i]==1) {
isDel = true;
//找到删除的索引位置---delId-1>>>>i
//索引位置后面元素全部迁移
for(int j =i+1;j<=names.length-1;j++) {
names[j-1] = names [j];
dishMegs[j-1] = dishMegs [j];
times[j-1] = times [j];
addresses[j-1] = addresses [j];
states[j-1] = states[j];
sumPrices[j-1] = sumPrices [j];
}
//最后一位置空
int lastIndex = names.length-1;
names [lastIndex] =null;
dishMegs[lastIndex]=null;
times [lastIndex]=0;
addresses[lastIndex]=null;
states[lastIndex]=0;
sumPrices[lastIndex]=0.0;
}else if (names[i]!=null && i==(delId-1) && states[i]==0) {
isDel =true;
System.out.println("您选择的订单未签收,不能删除");
}
}
//根据标记为判断你输入的数字是不是合法
if (!isDel) {
System.out.println("你删除的订单不存在!");
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号"+"\t菜名"+"\t单价");
System.out.println("1"+"\t红烧带鱼"+"\t38");
System.out.println("2"+"\t鱼香肉丝"+"\t20");
System.out.println("3"+"\t时令蔬菜"+"\t10");
System.out.println("请输入点赞的序号:");
int dian = input.nextInt();
switch (dian) {
case 1:
praiseNums[0]+=1;
System.out.println("点赞成功!");
break;
case 2:
praiseNums[1]+=1;
System.out.println("点赞成功!");
break;
case 3:
praiseNums[2]+=1;
System.out.println("点赞成功!");
break;
}
break;
case 6:
System.out.println("***退出系统***");
num = -1;
break;
default:
System.out.println("请输入一个正确的数字!");
break;
}
if (choice >= 1 && choice <= 5) {
System.out.println("输入0返回:");
num = input.nextInt();
if (num != 0) {
break;
}
}
} while (num == 0);
//程序结束
System.out.println("程序结束,欢迎您下次再来!!!");
}
}