关于使用Java进行排班的问题

直接上代码,自己看。

package student_on_duty;                                                                                                       
/**
     * 1. 这是一个最简单值日生轮班排班的程序。只用到了一维数组、for循环和if判断
     * 2.   现在可以输入姓名、星期、日期来分别查看不同的数据
     * 3.    关于去掉双休后在数组产生null值得问题,我用list另外写了一个DeleteArrayNull
     *        的 方法放在了method1里面。这里直接导入了(这个方法我放在最后贴出来)
     * 4. 我这里直接使用的系统时间,  有多少人就产生多少人的排班 。没有循环人,因为感觉没多大用。
     *    使用完了再产生一次排班就好了,何必写哪没用的东西。
     * 5. 输入条 件有漏洞,特别是日期这里。
     * 6.有改进的地方,把数组换成list集合,可以进行人员的删除和增加。我这里没有用,直接写死了
     * 7. 几个数组的长度也写死了,可以自己拿过去用的时候自己改改。毕竟这里只是一个例子。
     *8.  注释是我自己调试和修改程序的痕迹                                               =    =   !!
     * 9. 写的比较复杂。难点就是怎么去掉系统的双休                                    --     ! !
     *     
     *     @author 作者
     *     
     */
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner; 
import method1.DeleteArrayNull;
public class StudentOnDuty {
    public static void main(String[] args) {
        // 用户输入窗口   
         String aa = null ;
           Calendar calendar = Calendar.getInstance();  
        System.out.println("输入下列查询条件之一:(格式: 日期20xx-0x-0x、 姓名xxx、星期xxx) 开始查询!");
        Scanner sc=new Scanner(System.in);       
           String[]student_on_duty={"赵","钱","孙","李","周","吴","郑","王",
                                    "冯","陈","褚","卫","蒋 ","沈","韩","杨",
                                    "朱","秦","尤","许","何","吕","施","张"};  //人员名单
           //定义各种数组
           String [] riqi=new String[50] ; //值班日期
           String [] paihaohou=new String[24] ; //排班后名单
           String []  newriqi=new String[24];
  //           这个日期判断会导致日期集合里面出现NULL值,
           for(int i=0;i<riqi.length;i++) {
           calendar.add(Calendar.DATE, +1);
           Date   ss=calendar.getTime();
            aa=new SimpleDateFormat( "yyyy-MM-dd EEEE").format(ss) ;
            if( (!aa.contains("星期六"))) {
               if((!aa.contains("星期日"))) {                   
                       riqi[i]=aa;                                   
               }
               }
            }
           //去掉riqi数组里面的null值,并把新产生的数组赋值给 newriqi
          newriqi = DeleteArrayNull.deleteArrayNull(riqi);   
      
           //姓名和日期星期匹配
                  for(int j=0;j< student_on_duty.length; j++) {
                       // 姓名和日期匹配后写入数组
                         paihaohou[j] = (newriqi[j]+"是:"+student_on_duty[j]+"值日。");  
                    //    System.out.println(paihaohou[j]); //查看 paihaohou数组值得产生
                         }   
                  //编写查询条件 1.姓名 2.星期  3.日期  
                  try {
             System.out.println("输入查询条件:");                         
                       String query_name =sc.next();
                        for(int i=0;i< paihaohou.length;i++) {                
                            if( paihaohou[i].contains( query_name )) {
                                 System.out.println(paihaohou[i]);                    
                         }                  
                        }
                  }         // 最好写个异常方法类,这 里直接拿来用    
                        catch(IndexOutOfBoundsException e) {
                            System.out.println("超过查询范围了,请重新输入");
                        }catch(NullPointerException e) {
                            System.out.println("没有查到相关信息,请重新输入查询条件!");
                        }
              finally {
                            System.out.println("谢谢使用!");
                        }      
                 sc.close();
                }
                }
                       
//                       
//         }                 
//           break;                   
//
//       //  按星期查找
//        case 1 : { System.out.println("输入星期:");
//            String query_week =sc.next(); 
//            for(int i=0;i< paihaohou.length;i++) {
//                if( paihaohou[i].contains(query_week  )) {
//                     System.out.println(paihaohou[i]);
//            }
//            }      
//        };
//         break ;
//        
//         //按日期查找
//        case 2:{   System.out.println("输入日期:");
//            String query_date =sc.next();            
//            for(int i=0;i< paihaohou.length;i++) {
//                if( paihaohou[i].contains(query_date )) {
//                     System.out.println(paihaohou[i]);
//            }
//            }         
//        };
//        break;     
//    }


    去掉String数组NULL 值的方法:

package method1;

import java.util.ArrayList;

/***
     * 去除String数组中的空值
     */
public class DeleteArrayNull {

    public static String[] deleteArrayNull(String string[]) {
        String strArr[] = string;

        // step1: 定义一个list列表,并循环赋值
        ArrayList<String> strList = new ArrayList<String>();
        for (int i = 0; i < strArr.length; i++) {
            strList.add(strArr[i]);
        }

        // step2: 删除list列表中所有的空值
        while (strList.remove(null));
        while (strList.remove(""));

        // step3: 把list列表转换给一个新定义的中间数组,并赋值给它
        String strArrLast[] = strList.toArray(new String[strList.size()]);

        return strArrLast;
    }
}

运行结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值