根据身份证号码自动获取出生日期,性别,籍贯

Q1:数据库

由于数据有点多,我们在这就不展示了(需要的联系我,我发给你)

i

这是里面所用到的一些架包,包等等。相信大家对这一块都已经了解了,我就不说废话了。

Q2:html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <script src=js/jquery-1.11.3.js></script>
    身份证号码:<input type="text" id="idCard"/>
    出生日期:<input type="text" id="birthday"/>
    性别:<input type="radio" name="sex" value="男" id="nan"/>男<input type="radio" name="sex" value="女" id="nv"/>女
    籍贯:<input type="text" id="place"/>
    <input type="button" value="确定" id="btnok"/>
    <script>
        var app={
                select:function(){
                    var cardid=$("#idCard").val();
                    var place=cardid.substring(0,6);
                    $.ajax({
                        type:‘post‘,
                        url:‘S_area_codeaction?action=select‘,
                        data:{areaCode:place},
                        success:function(data){
                            console.log(data);
                            $("#place").val(data[0].detail);
                        }
                    });
                },
                start:function(){
                    $("#btnok").click(function(){
                        var cardid=$("#idCard").val();
                        var nian=cardid.substring(6,10);//1998
                        var yue=cardid.substring(10,12);
                        var ri=cardid.substring(12,14);
                        var birthdays=nian+"-"+yue+"-"+ri;
                        /* var a=IsDate(birthdays); */
                        /* if(a){ */
                            $("#birthday").val(nian+"年"+yue+"月"+ri+"日");
                            var sex=cardid.substring(16,17);
                            if(sex%2==0){
                                $("#nv").prop("checked",true);
                            }else{
                                $("#nan").prop("checked",true);
                            }
                            app.select();
                        /* } */
                    });
                }
        };
        app.start();      //下面可以判断日期:
        /* function IsDate(str)
        {
            arr = str.split("-");
            if(arr.length == 3)
            {
                intYear = parseInt(arr[0],10);
                intMonth = parseInt(arr[1],10);
                intDay = parseInt(arr[2],10);
                if(isNaN(intYear) || isNaN(intMonth) || isNaN(intDay))
                {
                    return false;
                }
                if(intYear > 2100 || intYear < 1900 || intMonth > 12 || intMonth < 0 || intDay > 31 || intDay < 0)
                {
                    return false;
                }
                if((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && intDay > 30)
                {
                    return false;
                }
                if(intYear % 100 == 0 && intYear % 400 || intYear % 100 && intYear % 4 == 0)
                {
                    if(intDay > 29)
                        return false;
                }
                else
                {
                    if(intDay > 28)
                        return false;
                }
                return true;

            }
            return false;
        } */
    </script>
</body>
</html>

Q3:Servlet(S_area_codeaction)

package action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bo.S_area_codeboimpl;
import com.vo.S_area_code;

import jsonUtil.JsonUtils;

@WebServlet("/S_area_codeaction")
public class S_area_codeaction extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public S_area_codeaction() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        String action=request.getParameter("action");
        if(action.equals("select")) {
            select(request,response);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
    //查询
    public void select(HttpServletRequest request, HttpServletResponse response) {
        S_area_codeboimpl si=new S_area_codeboimpl();
        int areaCode=Integer.parseInt(request.getParameter("areaCode"));
        List<S_area_code> lists=si.getAllList(areaCode);
        List<S_area_code> list=new ArrayList<S_area_code>();
        for(S_area_code item:lists) {
            list.add(new S_area_code(item.getID(),item.getAreaCode(),item.getProvince(),item.getCity(),item.getDistrict(),item.getDetail()));
        }
        try {
            response.getWriter().print(JsonUtils.toJson(list));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Q4:JsonUtils(注释出现了乱码,大家理解一下。当然也可以将改正的方法发给我,谢了。)

package jsonUtil;

import java.text.SimpleDateFormat;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtils {
    /**
     *  搴忓垪鍖栨垚json
     * */
    public static String toJson(Object obj) {
        // 瀵硅薄鏄犲皠鍣?
        ObjectMapper mapper = new ObjectMapper();
        String result = null;
        // 搴忓垪鍖杣ser瀵硅薄涓簀son瀛楃涓?
        try {
            result = mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 鍙嶅簭鍒楀寲鎴愬璞?
     * */
    public static <T> T toObject(String json,Class<T> valueType) {
        //瀵硅薄鏄犲皠鍣?
        ObjectMapper mapper=new ObjectMapper();
        T result=null;
        try {
            result=mapper.readValue(json,valueType);

        }catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

Q5:com.vo

package com.vo;

public class S_area_code {
    int ID;
    int areaCode;
    String province;
    String city;
    String district;
    String detail;
    public S_area_code() {}
    public S_area_code(int iD, int areaCode, String province, String city, String district, String detail) {
        super();
        ID = iD;
        this.areaCode = areaCode;
        this.province = province;
        this.city = city;
        this.district = district;
        this.detail = detail;
    }
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public int getAreaCode() {
        return areaCode;
    }
    public void setAreaCode(int areaCode) {
        this.areaCode = areaCode;
    }
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getDistrict() {
        return district;
    }
    public void setDistrict(String district) {
        this.district = district;
    }
    public String getDetail() {
        return detail;
    }
    public void setDetail(String detail) {
        this.detail = detail;
    }

}

Q6:com.dao

package com.dao;

import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;

import com.vo.S_area_code;

import util.DBUtil;

public class S_area_codedaoimpl {    public List<S_area_code> getAllList(int areaCode){        String sql="select * from s_area_code where areaCode=?";        ResultSet rs=(ResultSet)DBUtil.execute(sql, new Object[] {areaCode});        List<S_area_code> list=new ArrayList<S_area_code>();        S_area_code model=null;        try {            while(rs.next()) {                model=new S_area_code();                model.setID(rs.getInt(1));                model.setAreaCode(rs.getInt(2));                model.setProvince(rs.getString(3));                model.setCity(rs.getString(4));                model.setDistrict(rs.getString(5));                model.setDetail(rs.getString(6));                list.add(model);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return list;    }}

Q7:com.bo

package com.bo;

import java.util.List;

import com.dao.S_area_codedaoimpl;
import com.vo.S_area_code;

public class S_area_codeboimpl {
    S_area_codedaoimpl si=new S_area_codedaoimpl();
    public List<S_area_code> getAllList(int areaCode){
        return si.getAllList(areaCode);
    }
}

Q8:DBUtil

package util;

import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class DBUtil {
    //连接对象
    //Statement 命令对象
    //打开连接
    //关闭连接
    //得到一个连接对象
    //查询(有参,无参)
    //修改(有参,无参)

    static Connection conn = null;
    static Statement stmt = null;
    //驱动,服务器地址,登录用户名,密码
    static String DBDRIVER;
    static String DBURL;
    static String DBUSER;
    static String DBPWD;

    static {
        //先创建资源文件,扩展名为.properties
        //内容是以:dbuser=sa  格式
        Properties prop = new Properties();//先获取资源对象
        try {
            prop.load(Thread.currentThread().getContextClassLoader().
                    getResourceAsStream("resources/dbconfig.properties"));
            DBDRIVER = prop.getProperty("DBDRIVER");
            DBURL = prop.getProperty("DBURL");
            DBUSER = prop.getProperty("DBUSER");
            DBPWD = prop.getProperty("DBPWD");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //打开连接
    public static void open() {
        //加载驱动
        try {
            Class.forName(DBDRIVER);
            conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
                e.printStackTrace();
        }
    }
    //关闭连接
    public static void close() {
        try {
            if(stmt!=null && stmt.isClosed())
                    stmt.close();
            if(conn!=null && !conn.isClosed())
                conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //得到一个连接对象,当用户使用DBUtil无法解决个性问题时
    //可以通过本方法获得连接对象
    public static Connection getConnection() {
        try {
            if(conn==null ||conn.isClosed())
                open();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    //executeQuery
    //executeUpdate
    //execute
    //获得查询的数据集
    //不带参数的查询
    //select * from student where name=‘‘ and sex=‘‘
    public static ResultSet executeQuery(String sql) {
        try {
            open();//保证连接是成功的
            stmt = conn.createStatement();
            return stmt.executeQuery(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    //修改表格内容
    public static int executeUpdate(String sql) {
        int result = 0;
        try {
            open();//保证连接是成功的
            stmt = conn.createStatement();
            result = stmt.executeUpdate(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            close();
        }
        return result;
    }
    //如果执行的查询或存储过程,会返回多个数据集,或多个执行成功记录数
    //可以调用本方法,返回的结果,
    //是一个List<ResultSet>或List<Integer>集合
    public static Object execute(String sql) {
        boolean b=false;
        try {
            open();//保证连接是成功的
            stmt = conn.createStatement();
            b = stmt.execute(sql);
            //true,执行的是一个查询语句,我们可以得到一个数据集
            //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
            if(b){
                return stmt.getResultSet();
            }
            else {
                return stmt.getUpdateCount();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(!b) {
                close();
            }
        }
        return null;
    }

    //
    //select * from student where name=? and sex=?
    //带参数的查询,只有输入参数
    public static ResultSet executeQuery(String sql,Object[] in) {
        try {
            open();//保证连接是成功的
            PreparedStatement pst = conn.prepareStatement(sql);
            for(int i=0;i<in.length;i++)
                pst.setObject(i+1, in[i]);
            stmt = pst;//只是为了关闭命令对象pst
            return pst.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    //带参数修改,只有输入参数
    public static int executeUpdate(String sql,Object[] in) {
        try {
            open();//保证连接是成功的
            PreparedStatement pst = conn.prepareStatement(sql);
            for(int i=0;i<in.length;i++)
                pst.setObject(i+1, in[i]);
            stmt = pst;//只是为了关闭命令对象pst
            return pst.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            //e.printStackTrace();
        }finally {
            close();
        }
        return 0;
    }
    public static Object execute(String sql,Object[] in) {
        boolean b=false;
        try {
            open();//保证连接是成功的
            PreparedStatement pst = conn.prepareStatement(sql);
            for(int i=0;i<in.length;i++)
                pst.setObject(i+1, in[i]);
            b = pst.execute();
            //true,执行的是一个查询语句,我们可以得到一个数据集
            //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
            if(b){
                System.out.println("----");
                /*List<ResultSet> list = new ArrayList<ResultSet>();
                list.add(pst.getResultSet());
                while(pst.getMoreResults()) {
                    list.add(pst.getResultSet());
                }*/
                return pst.getResultSet();
            }
            else {
                System.out.println("****");
                List<Integer> list = new ArrayList<Integer>();
                list.add(pst.getUpdateCount());
                while(pst.getMoreResults()) {
                    list.add(pst.getUpdateCount());
                }
                return list;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(!b) {
                System.out.println("====");
                close();
            }
        }
        return null;
    }
    //调用存储过程  proc_Insert(?,?,?)
    public static Object executeProcedure(String procName,Object[] in) {
        open();
        try {
            procName = "{call "+procName+"(";
            String link="";
            for(int i=0;i<in.length;i++) {
                procName+=link+"?";
                link=",";
            }
            procName+=")}";
            CallableStatement cstmt = conn.prepareCall(procName);
            for(int i=0;i<in.length;i++) {
                cstmt.setObject(i+1, in[i]);
            }
            if(cstmt.execute())
            {
                return cstmt.getResultSet();
            }
            else {
                return cstmt.getUpdateCount();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

    /*
     * 调用存储过程,并有输出参数
     * @procName ,存储过程名称:proc_Insert(?,?)
     * @in ,输入参数集合
     * @output,输出参数集合
     * @type,输出参数类型集合
     * */
    public static Object executeOutputProcedure(String procName,
            Object[] in,Object[] output,int[] type){
        Object result = null;
        try {
            CallableStatement cstmt = conn.prepareCall("{call "+procName+"}");
            //设置存储过程的参数值
            int i=0;
            for(;i<in.length;i++){//设置输入参数
                cstmt.setObject(i+1, in[i]);
                //print(i+1);
            }
            int len = output.length+i;
            for(;i<len;i++){//设置输出参数
                cstmt.registerOutParameter(i+1,type[i-in.length]);
                //print(i+1);
            }
            boolean b = cstmt.execute();
            //获取输出参数的值
            for(i=in.length;i<output.length+in.length;i++)
                output[i-in.length] = cstmt.getObject(i+1);
            if(b) {
                result = cstmt.getResultSet();
            }
            else {
                result = cstmt.getUpdateCount();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }
    //调用存储过程查询出所有的值
        public static Object executeProcedures(String procName) {
            open();
            try {
                procName = "{call "+procName+"}";
                CallableStatement cstmt = conn.prepareCall(procName);
                if(cstmt.execute())
                {
                    return cstmt.getResultSet();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        public static void main(String[] msg) {
            open();
        }
}

Q9:配置文件

DBDRIVER=com.mysql.jdbc.Driver
DBURL=jdbc:mysql://localhost:3306/areadb?serverTimezone=GMT%2B8
DBUSER=root
DBPWD=

注意:此数据库使用的是MySql数据库

该有的代码我都贴了,除了一些架包,这个,需要的q我,我发给你。

结果:

输入身份证号码后,当然这里我的身份证号码被我去掉了,你懂的!

这样,在今后项目中,给用户的体验感就会很强,只需要身份证号码就行。

原文地址:https://www.cnblogs.com/zywds/p/9368109.html

时间: 2024-11-29 10:15:53

根据身份证号码自动获取出生日期,性别,籍贯的相关文章

身份证号码自动生成程序(Python)

今天收到一个小需求:需要一个自动生成身份证号码的小程序.近期用python较多,因此打算用python实现. 需求细化: 1.身份证必须能够通过身份证校验程序. 2.通过查询,发现身份证号码是有国家标准的,标准号为  GB 11643-1999  可以从百度下载到这个文档http://zhidao.baidu.com/share/b838c7683bb70af8166efd810a398fec.html 现行身份证号为18位,分别为6位地址码,8位生日,3位顺序码,一位校验码.具体例子可见下图.

输入身份证号码自动读取生日与性别(delphi)

一.格式介绍: [15位号码格式] 1.第l一6位数为行政区划代码; 2.第7-12位数为出生日期代码; 3.第13---15位数为分配顺序代码; (1).行政区划代码,是指公民第一次申领居民身份证时的常住户口所在地的行政地区. (2).出生日期代码,第7-8位数代表年份(年份前面二位数省略),第9-10位数代表月份(月份为l位数的前面加零).第11一12位数代表日期(日期为1位数的前面加零). (3).分配顺序代码,是按人口数统一合理分配以固定顺序给予每个人的顺序号,最末一位数是奇数的分配给男

js根据身份证号码解析获取出生年月日、性别、年龄

function getAnalysisIdCard(card, num) { if (num == 1) { //获取出生日期 let birth = card.substring(6, 10) + "-" + card.substring(10, 12) + "-" + card.substring(12, 14); return birth; } if (num == 2) { //获取性别 if (parseInt(card.substr(16, 1)) %

C# 根据身份证号码判断出生日期和性别

18位的身份证,前面六位代表了你户籍所在地,第七位到第十四位代表了你的出生年月,第十五位到第十七为代表了你的性别(偶数为女,奇数为男),根据这一信息,我在系统开发的录入员工的身份证后控件焦点转移时根据身份证号码获得生日和性别. 用C#写的代码如下: /// <summary> /// 在控件验证 textBox_IdentityCard 的 Validated事件中定义身份证号码的合法性并根据身份证号码得到生日和性别 /// </summary> private void text

SQL 根据身份证号码获取年龄的函数

在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的 create or replace function FUNC_COMPARE_SFZHM( sfzhm in varchar2) --输入身份证号码 return number /* 函数说明,返回值0为小于18岁:值为1是大于75岁:其他情况是返回值为2 在这个函数里用到了trunc(months_between()) 然后就是将身份证号码里的年月日组合成'yyyy-mm-dd'

详细验证身份证号码规则和姓名(汉字)的java代码

一.验证汉字的正则表达式 /** 是否是汉字的正则 */ private String regexIsHanZi = "[\\u4e00-\\u9fa5]+"; * @param str要匹配的字符串 * @param reg 正则 public static boolean matchRegular(String str, String reg) { Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.m

常用js工具类之关于身份证号码验证的几个实用函数

身份证号码有效性验证 function isIDCard(idcard) { idcard = idcard.toUpperCase(); // 对身份证号码做处理 var ereg; var Y, JYM; var S, M; /*基本校验*/ //if (String.isNullOrEmpty(idcard)) return false; var idcard_array = new Array(); idcard_array = idcard.split(""); /*身份号码

vue表单:输入身份证号码则自动获取对应的年龄和性别,,若不输入身份证号则自己填写年龄和性别

<el-input :ref="item.meta.system_id" v-model="temp[item.meta.valueKey]" clearable oninput="if(value.length>18)value=value.slice(0,18)" :disabled="item.meta.disabled" :placeholder="item.meta.placeholder ?

根据身份证获取出生日期及性别

CreateTime--2017年6月2日11:45:16Author:Marydon 第一步:身份证号格式校验 /** * 身份证号格式校验 */ function idValidator(obj) { var provinces={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"