杨校老师课堂之工具类-验证身份证信息编写

简介: 杨校老师课堂之工具类-验证身份证信息编写
package cn.javabs.utils;


import cn.javabs.file.FileReaderWriter;


/**
 * @author Mryang
 *  验证身份证信息
 */
public class ValidatorCardNo {
  
  //校验加权因子数组
  private  static final int[] checkCodes = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
  //最后一位列表字符
  private  static final String  str = "10X98765432" ;
  
  /**
   * 验证身份证号码位数是否为18位
   * 
   */
  public  static  boolean  validatorLength(String no){
    return  no.length() == 18 ? true : false ;
  }
  
  /**
   * 验证身份证号码是否是数字或最后一位是字母
   * @param no
   * @return
   */
  public  static  boolean  validatorStyle(String no){
    String last_char = no.substring(17, 18);
    if(!last_char.equals("0") && !ValidatorNum.isNum(last_char) && !last_char.equalsIgnoreCase("x")){
      System.out.println("身份证最后一位出现非法字符!");
      return  false ;
    }
    if(!ValidatorNum.isNum(no.substring(1, 17))){
      System.out.println("身份证前17位出现非数值字符!");
      return  false ;
    } 
    return  checkBirth(no);
  }
  
  /**
   * 验证身份证出生年月日是否合法
   * @return 合法返回true,否则返回false
   */
  public static  boolean checkBirth(String  no){
    String birth = no.substring(6,14);
    int year, month, day;   
    try{
      year = Integer.valueOf(birth.substring(0,4));
      month = Integer.valueOf(birth.substring(4,6));
      day = Integer.valueOf(birth.substring(6, 8));
    } catch (Exception e) {
      return false;
    }
    if((year >= 1900 && year <= 2010) && (month >=1 && month <= 12) && (day >= 1 && day <= 31)) {
      return true;
    }
    return false;
  }
  
  /**
   * 验证身份证地址码
   * @param no
   * @return
   */
  public  static  String  checkAddrCode(String  no){
    String addr = FileReaderWriter.readAddress(no);
    return  addr ;
  }
  
  /**
   * 验证身份证最后一位是否正确
   * @param
   * @return
   */
  public  static  boolean  checkCheckCode(String no){
    String chCode = no.substring(17,18);
    if(caculateCheckCode(no).equalsIgnoreCase(chCode)){
      return true;
    }
    return false;
  }
  
  /**
   * 计算身份证最后一位
   * @param   合法的身份证号码前17位
   * @return  合法的身份证号码最后一位
   */
  public  static  String  caculateCheckCode(String no){
    int total = 0;    //校验值和
    int length = 18;  //身份证长度
    int[] ins = new int[length];
    int i = 0;
    try{
      for( ; i < length - 1; i++) {
        ins[i] = Integer.valueOf(no.substring(i, i+1));
        total += (ins[i]*checkCodes[i]);
      }
    } catch(NumberFormatException e) {
      return null;
    }
    int modResult = total % 11;
    
    return str.substring(modResult, modResult+1);
  } 
}

目录
相关文章
|
4月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
156 0
|
6月前
|
JSON JavaScript 数据格式
杨校老师课堂之封装操作消息提醒工具类ResultCode【简直太好用】
杨校老师课堂之封装操作消息提醒工具类ResultCode【简直太好用】
34 0
|
6月前
杨校老师课堂之编写验证码
杨校老师课堂之编写验证码
19 0
|
6月前
|
前端开发 Java
杨校老师课堂之使用Ajax校验用户名是否可用
杨校老师课堂之使用Ajax校验用户名是否可用
24 0
|
6月前
杨校老师课堂之Servlet的重构为BaseServlet的步骤【内含视频讲解】
杨校老师课堂之Servlet的重构为BaseServlet的步骤【内含视频讲解】
33 0
|
7月前
|
小程序 JavaScript Java
基于Java的大学生心理健康答题小程序设计与实现(亮点:选题新颖、可以发布试卷设置题目、自动判卷、上传答案、答案解析)
基于Java的大学生心理健康答题小程序设计与实现(亮点:选题新颖、可以发布试卷设置题目、自动判卷、上传答案、答案解析)
97 0
|
7月前
|
JavaScript 小程序 Java
基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)
基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)
75 0
|
XML 安全 JavaScript
当面试官突然提到第三方登录时,我不禁微笑了~ 探秘WeChat公众号扫码关注登录!
当面试官突然提到第三方登录时,我不禁微笑了~ 探秘WeChat公众号扫码关注登录!
65 0
当面试官突然提到第三方登录时,我不禁微笑了~ 探秘WeChat公众号扫码关注登录!
|
运维 Linux API
金鱼哥RHCA回忆录:DO447管理高级清单--创建和更新动态清单
第十二章 管理高级清单--创建和更新动态清单
172 0
金鱼哥RHCA回忆录:DO447管理高级清单--创建和更新动态清单
|
安全 Java 数据安全/隐私保护
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)