JAVA项目源码分析—快递E栈

一、主要涉及知识:

1、 分支结构
2、 数组

二、源码解析

第一步,先创建三个数组:快递单号、快递公司名称、取件码

// 创建快递信息存储数组(假定存储有3个快递)
// 快递单号
   String[] ordersId = new String[3];
// 快递公司名称
   String[] names = new String[3];
// 取件码
   int[] codes = new int[3];
        

第二步,对两个选择操作分别使用两个switch语句

其中,第一个switch(num){} 是对 快递员 和 用户 这两者的选择

System.out.println("\n请输入您的身份信息: 1-快递员       2-用户");
        	int num = sc.nextInt();
        	switch(num) {
        	    case 1:  // 表示这是快递员在操作        	    
        	    	System.out.println("请选择操作: A-存快递 B-删除快递 C-修改快递信息 D-查看所有快递信息");
        	        String num2 = sc.next();  
                    switch(num2){
                       //此处A,B,C,D为简写,详细代码在下文
                        case "A":
                        case "B":
                        case "C":
                        case "D":    
                    }
                    break;
                   
                 case 2: // 表示这是用户在操作	            	 	            	
 	            	System.out.println("请输入取件码:");
 	            	int code1 = sc.nextInt();
 	            	int index4 = -1;
 	            	// 寻找匹配的取件码
 	            	for(int i= 0;i<ordersId.length;i++) {
 	            		if(codes[i] !=0 && codes[i] == code1) {
 	            			index4 = i;
 	            			break;
 	            		}
 	            	}
 	            	
 	            	if(index4 == -1) {
 	            		System.out.println("未找到该快递");
 	            	}else {
 	            		// 取快递
 	            		ordersId[index4] = null;
 	            		// 这两个可删可不删
 	            		names[index4] = null;
 	            		codes[index4] = 0;
 	            		System.out.println("您已取件成功!");
 	            	}
 	        	    break;
            }

操作选择

第二个语句 switch(num2){} 是对快递员的四个操作进行选择,分别是:

A- 存快递 :

case "A":  // 存快递         	        	  
      // 遍历数组查找是否还有空位置,进行添加 
      int index = -1; // 该变量用来判断快递柜是否存满       	        	   
      for(int i = 0 ; i < ordersId.length; i++) {
        	 if(ordersId[i] == null) {
        	     index = i;
        	     break;//遇到一个就跳出循环
        	  }
        }
       // 判断快递柜是否存满,并进行相关操作
       if(index == -1) {
        	 System.out.println("快递柜已满,无法继续存入");
        }else {
        	// 如果有空位置 ,则存入以下数据:
        	// index 可以换成 i
        	// 录入单号
            System.out.println("请输入快递单号:");
            String number = sc.next();
            ordersId[index] = number;
             // 录入公司名称
            System.out.println("请输入公司名称:");
            String company = sc.next();
            names[index] = company;
            // 随机生成 1-1000的取件码 ,其中 Math.random()*1000 表示0-999个数据
            int code = (int)( Math.random()*1000) +1;        	        		   
        	codes[index] = code;
        	System.out.println("此快递已经存入,取件码是:  "+ code);
        	}  
        break;

存快递

B- 删除快递:

case"B"://删除快递
		System.out.println("请输入要删除的快递单号:");
		Stringnumber2=sc.next();
		intindex1=-1;//该变量用来判断是否匹配到对应快递单号
		for(inti=0;i<ordersId.length;i++){
		if(ordersId[i].equals(number2)){
			index1=i;			
			break;//匹配到就直接跳出循环
		}
		}
		//判断是否匹配到快递单号,并进行相关操作
		if(index1==-1){
			System.out.println("该快递单号不存在!");
		}else{
			//清空数组中对应的值
			ordersId[index1]=null;
			//这两个可删可不删,因为前面都是依据ordersId是否为null判断
			names[index1]=null;
			codes[index1]=0;
			System.out.println("已删除该快递单号");
		}				
		break;

删除

C- 修改快递信息操作:

case"C"://修改快递信息
        System.out.println("请输入要修改的快递单号:");
		Stringnumber3=sc.next();
		intindex2=-1;//该变量用来判断是否匹配到对应快递单号
		
		for(inti=0;i<ordersId.length;i++){			
			if(ordersId[i].equals(number3)){
			index2=i;
			break;//匹配到就直接跳出循环
			}
		}
		//判断是否匹配到快递单号,并进行相关操作
		if(index2==-1){
			System.out.println("该快递单号不存在!");
		}else{
			//修改对应的快递信息
			//将新快递单号赋值给数组中对应位置
			System.out.println("请输入新的快递单号:");
			Stringnewnumber=sc.next();
			ordersId[index2]=newnumber;
			//将新公司名称赋值给数组中对应位置
			System.out.println("请输入新的公司名称:");
			Stringnewcompany=sc.next();
			names[index2]=newcompany;
			//将新的取件码赋值给数组中对应位置
			intnewcode=(int)(Math.random()*1000)+1;
			codes[index2]=newcode;
            System.out.println("您已修改成功!"+"新的取件码:"+newcode);
		}				
		break;

修改

D- 查看操作:

case"D"://查看操作
		int index3=-1;//该变量用来判断快递柜是否全空			
		for(inti=0;i<ordersId.length;i++){
		   if(ordersId[i]!=null){
		      index3=0;//这里可以赋予任何不为-1的值
		      break;//只要有一个,说明快递柜不为空就立即跳出
		    }
		}
		if(index3==-1){
		    System.out.println("快递柜为空,暂无快递");
		}else{
			System.out.println("所有快递信息如下:");
            System.out.println("快递单号\t公司名称\t取件码");
            for(inti=0;i<ordersId.length;i++){
	              if(ordersId[i]!=null){
                       System.out.println(ordersId[i]+"\t"+names[i]+"\t"+codes[i]);
	              }
            }
		}
		break; //结束case"D",跳出switch(num2)语句

快递员查看

对于用户的取件操作:

case2://表示这是用户在操作				
		System.out.println("请输入取件码:");
		intcode1=sc.nextInt();
		intindex4=-1;
		//寻找匹配的取件码
		for(inti=0;i<ordersId.length;i++){
			if(codes[i]!=0&&codes[i]==code1){
				index4=i;
				break;
			}
		}
		
		if(index4==-1){
			System.out.println("未找到该快递");
		}else{
			//取快递
			ordersId[index4]=null;
			//这两个可删可不删
			names[index4]=null;
			codes[index4]=0;
			System.out.println("您已取件成功!");
		}
		break;	

用户取件

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值