java源代码是给你一个身份证号,通过面板身份证号的输入,显示出该身份证主人的出生年月,省份,性别等资料

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java源代码是给你一个身份证号,通过面板身份证号的输入,显示出该身份证主人的出生年月,省份,性别等资料相关的知识,希望对你有一定的参考价值。

需要有面板,和异常处理 并生成文件

参考技术A 我当初用struts1和hibernate做了个简单的!主要的逻辑代码在下面!数据库里号码对应的城市在网上可以查的到
package dao;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;

import entity.Shenfenzhen;

public class IdDao
private static Configuration configuration = new Configuration().configure() ;

private static SessionFactory sessionFactory =configuration.buildSessionFactory();
private static Session session = null;

public Info query(String s)
Info info = null;
StringBuffer stringBuffer = new StringBuffer(s);
if(s.length()==18)
String end = stringBuffer.substring(17);
//System.out.println(end);
if(!end.matches("\\d||x"))
return null;



else if(s.length()==15)
stringBuffer.insert(6, "19");
stringBuffer.append("3");

int i = Integer.parseInt(stringBuffer.substring(0, 6));
//System.out.println(i);
session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(Shenfenzhen.class);
criteria.add(Expression.eq("num", i));
List<Shenfenzhen> list = criteria.list();
String address = null;
try
address = list.get(0).getAddress();
catch (Exception e)
return null;

i = Integer.parseInt(stringBuffer.substring(16,17));
String sex = null;
if(i%2==0)
sex = "女";
else
sex = "男";

//System.out.println(i);
stringBuffer = new StringBuffer(stringBuffer.substring(6, 14));
// stringBuffer.insert(4, "-");
// stringBuffer.insert(7, "-");
//System.out.println(stringBuffer);
String ss = stringBuffer.toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String brithday="";
int year=0;
int month =0;
int day =0;
try
Date date = dateFormat.parse(ss);
//System.out.println(date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
day = calendar.get(Calendar.DAY_OF_MONTH);
brithday = (String)(year + "年" + month + "月" + day + "日");
catch (ParseException e)
// TODO Auto-generated catch block
e.printStackTrace();

info = new Info(address, brithday, sex);
Calendar c = Calendar.getInstance();
int nowYear = c.get(Calendar.YEAR);
int nowMonth = c.get(Calendar.MONTH);
int nowDay = c.get(Calendar.DAY_OF_MONTH);

if(nowYear<year)
info = null;
else if(nowYear ==year && nowMonth<month )
info = null;
else if(nowYear == year && nowMonth==month && nowDay<day)
info = null;

closeSession(session);
return info;


// public static void main(String[] args)
// IdDao dao = new IdDao();
// dao.query("342522998711224513");
// System.out.println("x".matches("\\d||x"));
//
private void closeSession(Session session)
if(session !=null)
session.close();



C零基础视频-26-身份证号校验程序

第二代身份证号的组成

第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右):
AABBCCYYYYMMDDXXXV

AA BB CC YYYY MM DD XXX V
2 2 2 4 2 2 3 1
出生年 出生月 出生日 顺序码 校验码

其中,最后一位校验数字,是通过之前的信息计算得来,拿到一个身份证号,可以通过重新计算校验数字并与最后一位做比较,判断是否身份证号不合要求。

校验算法

身份证校验算法的计算过程是:

  • 根据各位权重,求得校验和
  • 对校验和取余(11),求得校验序号
  • 根据校验序号,找到对应的校验码

各位权重

身份证号从左往右各位的权重是:
技术图片

校验码表

校验序号 0 1 2 3 4 5 6 7 8 9 10
对应符号 1 0 X 9 8 7 6 5 4 3 2

程序代码

#include <stdio.h>

int g_IDCard[18] = { 0 };

int g_Factor[17] = { 7, 9, 10, 5, 8,
                     4, 2, 1, 6, 3,
                     7, 9, 10, 5, 8,
                     4, 2 };

char Validate[11] = { '1', '0', 'X', '9', '8', 
                      '7', '6', '5', '4', '3', 
                      '2' };



int CalcIDCheckNumber()
{
    int nRet = 0;

    for (int i = 0; i < sizeof(g_IDCard) / sizeof(g_IDCard[0]) - 1; i++)
    {
        nRet += g_IDCard[i]*g_Factor[i];
    }
    return nRet % 11;
}

void ConvertStr2IDAry(char* strID)
{
    for (int i = 0; i < sizeof(g_IDCard) / sizeof(g_IDCard[0]) - 1; i++)
    {
        g_IDCard[i] = strID[i] - '0';
    }
}

int IsIDNumberValidated(char* strIDNumber)
{
    ConvertStr2IDAry(strIDNumber);
    int nValue = CalcIDCheckNumber();
    if (Validate[nValue] == strIDNumber[17])
        return 1;
    else
        return 0;
}

int main(int argc, char* argv[])
{
    if (IsIDNumberValidated("43042120090805523X"))
    {
        printf("校验合格
");
    }
    else
    {
        printf("校验失败
");
    }
    
    return 0;
}

以上是关于java源代码是给你一个身份证号,通过面板身份证号的输入,显示出该身份证主人的出生年月,省份,性别等资料的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python设计一个通过身份证号判断省份的程序?

java项目中怎么自动生成身份证号和手机号

C零基础视频-26-身份证号校验程序

java编程输入18位身份证号办别女性男女 代码?

java身份证号位数校验

使用java判断输入身份证号位数是不是正确,判断输入是不是有效