zoukankan      html  css  js  c++  java
  • 2019-1-8作业

    1、添加注释

    package com.java_2019_1_8;
    
    import java.util.Scanner;
    
    /**
     * 吃货联盟订餐系统
     * 
     * @author Mr.Zhou 2019-1-8
     */
    public class EatSystem {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("欢迎使用“吃货联盟订餐系统”");
    		String choose = "";//菜单选择的变量
    		//初始化数据
    		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];//订餐数量
    		double[] prices = new double[10];//单价
    		String[] foods = new String[10];//菜品信息
    		int[] zan = new int[10];//点赞数量
    		
    		zan[0] = 12;zan[2] = 5;zan[4]=25;
    		foods[0] = "黄焖鸡";foods[1] = "东坡肉";foods[2] = "蛋炒饭";foods[3] = "北京烤鸭";foods[4] = "大肘子";
    		prices[0] = 16.0;prices[1] = 15.5;prices[2] = 8.0;prices[3] = 49.9;prices[4] = 18.8;
    		
    		//初始化两个订单信息
    		names[0] = "陈明";
    		descs[0] = "黄焖鸡";
    		nums[0] = 2;
    		moneys[0] = 32.0;
    		dates[0] = 7;
    		addresses[0] = "北大青鸟";
    		status[0] = true;
    
    		names[1] = "刘铭辉";
    		descs[1] = "东坡肉";
    		nums[1] = 3;
    		moneys[1] = 46.5;
    		dates[1] = 8;
    		addresses[1] = "机房8";
    		status[1] = false;
    
    		do {
    			System.out.println("******************************");
    			System.out.println("1、我要订餐  2、查看餐袋  3、签收订单  4、删除订单  5、我要点赞  6、退出系统");
    			System.out.println("请选择:");
    			choose = sc.next();
    			switch (choose) {
    			case "1":
    				System.out.println("****我要订餐****");
    				int index = -1;//定义要添加的位置下标
    				for(int i = 0 ;i<length;i++) {
    					if(names[i]==null) {//以订单中表示用记名字的names[]数组来查看是否有空的位置可以下订单
    						index = i;//如果有空,记录此处们置的下标,以便将用户输入的信息作保存
    						break;
    					}
    				}
    				if(index<0) {//订单中位置全满
    					System.out.println("当前餐袋已满!!!");
    				}else {
    					System.out.println("请输入订餐人姓名:");
    					names[index] = sc.next();
    					System.out.println("序号	菜名	单价	点赞数量");
    					int max = foods.length;
    					for(int i = 0;i<foods.length;i++) {//显示菜单信息
    						if(foods[i]==null) {//如果菜单数组中有NULL,不进行打印
    							max = i;//记录菜单数组中最小下标为NULL的位置下标,这样菜品编号在菜品数组中就从0到max
    							break;
    						}
    						System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
    					}
    					System.out.println("请选择您要点的菜品编号:");
    					int id = 0;
    					do {//用do-while循环判断用户输入的菜品编号是否存在在菜单中
    						id = sc.nextInt();
    						if(id<1||id>max) {//如果用户选择的菜品编号没有在0到max中间(包含0和max),则提示输入有误,重新进行输入
    							System.out.println("不存在此编号菜品,请重新输入:");
    						}
    					} while (id<1||id>max);//因为输入不在0到max中间(包含0和max)中,所以while判断为TRUE,继续循环重新输入
    					//直到输入正确的选择跳出循环
    					descs[index] = foods[id-1];//将用户选择的菜品赋给记录订单餐品信息的数组descs[];下标为前面记录的空位置下标index
    					System.out.println("请选择您需要的份数:");
    					int num = sc.nextInt();
    					nums[index] = num;//将用户选择的菜品份数赋给记录订单餐品份数的数组nums[];下标为前面记录的空位置下标index
    					System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)");
    					int date = 0;
    					do {//送餐时间(送餐时间是10点至20点间整点送餐),判断用户输入的时间是否有误 
    						date = sc.nextInt();
    						if(date<10||date>20) {//如果用户输入的时间没有10到20中间(包含10和20),则返回重新输入
    							System.out.println("您的输入有误,请输入10~20间的整数!:");
    						}
    					} while (date<10||date>20);
    					dates[index] = date;//如果用户输入正确的时间,将用户输入的时间赋给记录订单送餐时间的数组dates[];下标为前面记录的空位置下标index
    					System.out.println("请输入送餐地址:");
    					addresses[index] = sc.next();//将用户输入的地址赋给记录订单送餐地址的数组address[];下标为前面记录的空位置下标index
    					double money = prices[id-1]*num;//计算用户订单菜品的金额
    					System.out.println("订餐成功:");
    					System.out.println("您订的是:"+foods[id-1]+" "+num+"份");
    					System.out.println("送餐时间:"+date+"点");
    					double song = 0.0;//定义送餐费变量
    					if(money<20) {//如果订单总额少于20元,则多加3元送餐费
    						song = 3.0;
    					}
    					moneys[index] = money+song;//计算总金额赋给记录订单总金额的数组moneys[],下标为前面记录的空位置下标index
    					System.out.println("餐费:"+money+"。送餐费:"+song+"元,总计:"+(money+song)+"元");
    				}
    
    				break;
    			case "2":
    				System.out.println("****查看餐袋****");
    				System.out.println("序号	订餐人	餐品信息		送餐日期		送餐地址		总金额	订单状态");
    				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)+"	"+names[i]+"	"+canpin+"	"+dates[i]+"点		"+addresses[i]+"		"+moneys[i]+"元	"+zhuangtai);
    				}
    				break;
    			case "3":
    				System.out.println("****签收订单****");
    				System.out.println("请输入要签收的订单编号:");
    				boolean isTrue = false;
    				int id = -1;
    				do {//判断输入的订单编号有没有实际的订单
    					id = sc.nextInt();//将用户输入的编号记录在变量id中
    					if(id<1||id>descs.length) {//以订单餐品信息数组的长度先作判断
    						isTrue = true;//如果不在些数组的长度0到length-1(包含0与length-1),则返回重新输入,如果有在,则进入下一轮判断 
    					}else {
    						if(descs[id-1]==null) {//判断输入的编号订单有没有信息,如果没有,返回重新输入
    							isTrue = true;
    						}else {
    							isTrue = false;//输入无误则跳出循环判断继续下一步
    						}
    					}
    					
    					if(isTrue) {
    						System.out.println("不存在此编号的订单信息,请重新输入:");
    					}
    				} while (isTrue);
    				status[id-1] = true;//将订单中记录状态的status[]数组中的下标为id-1(编号=下标+1)数组重新赋值 
    				System.out.println("签收完成");
    				break;
    			case "4":
    				System.out.println("****删除订单****");
    				System.out.println("请输入要删除的订单编号:");
    				int big = length;
    				for(int i = 0;i<length;i++) {//查看订单中实际订单的最大编号+1位置,记录下标并赋给变量big
    					if(descs[i]==null) {
    						big = i;
    						break;
    					}
    				}
    				
    				int no = 0;
    				do {//对用户输入的订单编号进行判断, 如果没有在1到big之间(包含1和big),则重新输入
    					no = sc.nextInt();
    					if(no<1||no>big) {
    						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++) {
    						//因为订单编号是用户输入的序号再+1,
    						//所以删除操作只要把订单信息各个数组中从第no个的数组开始全部往前移动,把前一个数组覆盖
    						//往前移动后,最后一个再手动赋值为空
    						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("删除订单成功");
    				}
    				
    				break;
    			case "5":
    				System.out.println("****我要点赞****");
    				System.out.println("序号	菜名	单价	点赞数量");
    				int max = foods.length;
    				for(int i = 0;i<foods.length;i++) {//记录最大菜单编号,并记录在max中,实际菜单编号在0到max-1中
    					if(foods[i]==null) {
    						max = i;
    						break;
    					}
    					System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
    				}
    				System.out.println("请选择您要点赞的菜品编号:");
    				int bianhao = 0;
    				do {
    					bianhao = sc.nextInt();
    					if(bianhao<1||bianhao>max) {//判断用户输入的号码+1后有没有在菜单编号在0到max-1中
    						System.out.println("不存在此编号菜品,请重新输入:");
    					}
    				} while (bianhao<1||bianhao>max);
    				zan[bianhao-1]++;//如果输入无误,则菜品点赞数组zan(输入的号码-1)的值加1
    				System.out.println("点赞成功,谢谢您的反馈");
    				break;
    				
    			case "6":
    				System.out.println("****退出系统****");
    				System.out.println("谢谢使用");
    				break;
    
    			default:
    				System.out.println("选择错误,请重新选择:");
    				break;
    			}
    		}while(!"6".equals(choose));
    	}
    }
    

      

  • 相关阅读:
    多线程 线程队列的实现
    如何使用vagrant在虚拟机安装hadoop集群
    【leetcode】Rotate List
    麒麟(Kylin)与Ubuntu的寓意相通
    山寨APP恶意吸费隐患 门槛底致监管盲点
    2013年软件设计师之考前复习笔记:IP地址
    .gitkeep
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法...
    windows常用命令行命令
    PhpStorm terminal无法输入命令的解决方法
  • 原文地址:https://www.cnblogs.com/chenxj/p/10240363.html
Copyright © 2011-2022 走看看