吃货联盟

202 阅读5分钟

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("程序结束,欢迎您下次再来!!!");
	}

	
	
	
	
	
	
	
	
	
	
	
	}