第一篇:java实现二代身份证信息查询程序
本文是在java平台上编写的二代身份证信息查询程序,可以查询二代身份证的基本信息,包括文字信息和图像信息。用到的Jar包是JNative.jar,这个很容易就能下载到,下载后添加到工程的外部jar库中。另外,程序装载了sdtapi.DLL和WltRS.DLL文件,这两个文件必须放到C:WindowsSystem32目录下。只有一个java文件,需要说明的是:用到的测试设备接口是RS232串口,USB的接口程序可自行修改。资料是在网上用积分买的,现免费共享给手上没有积分的朋友下载。
package com.a;
import javax.swing.*;import org.xvolks.jnative.JNative;import org.xvolks.jnative.Type;import org.xvolks.jnative.exceptions.NativeException;import org.xvolks.jnative.pointers.Pointer;import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;import java.awt.*;import javax.imageio.ImageIO;import java.io.*;import java.util.StringTokenizer;import java.awt.event.*;
public class IdentityInfoReader extends JFrame implements ActionListener { private static final long serialVersionUID =-***8441L;JLabel[] label = new JLabel[10];JButton showBmp;JTextField[] text = new JTextField[9];String[] labelItem = {“姓名:”, “性别:”, “民族:”, “出生年月:”, “地址:”, “身份证号:”, “签发机构:”, “期限起始:”, “期限终止:”};JNative openJN = null, findJN = null, selectJN = null, readJN = null, MngJN = null, BmpJN = null, closeJN = null;JButton readJB, exitJB;int iPort = 1;int iIfOpen = 1;
public InformationReader(String str){
super(str);
System.loadLibrary(“sdtapi”);
try {
try {
init();
} catch(NativeException e){
} catch(UnsupportedEncodingException e){
e.printStackTrace();
}
} catch(IllegalAccessException e){
}
label[0] = new JLabel(“二代身份证信息”);
label[0].setBounds(200, 20, 95, 25);
getContentPane().add(label[0]);
for(int j = 1;j < labelItem.length + 1;j++){
label[j] = new JLabel(labelItem[j1]);} text[0].setText(Info[0]);if(Info[1].charAt(0)== '1'){ text[1].setText(“男”);} else if(Info[1].charAt(0)== '2')text[1].setText(“女”);char[] nationChar = new char[2];Info[1].getChars(1, 3, nationChar, 0);String nationStr = “";nationStr = String.valueOf(nationChar);if(nationStr.equals(”01“))text[2].setText(”汉“);else if(nationStr.equals(”02“))text[2].setText(”蒙古族“);else if(nationStr.equals(”03“))text[2].setText(”回族“);else if(nationStr.equals(”04“))text[2].setText(”藏族“);else if(nationStr.equals(”05“))text[2].setText(”维吾尔族“);else if(nationStr.equals(”06“))text[2].setText(”苗族“);else if(nationStr.equals(”07“))text[2].setText(”彝族“);else if(nationStr.equals(”08“))text[2].setText(”壮族“);else if(nationStr.equals(”09“))text[2].setText(”布依族“);else if(nationStr.equals(”10“))text[2].setText(”朝鲜族“);else if(nationStr.equals(”11“))text[2].setText(”满族“);else if(nationStr.equals(”12“))text[2].setText(”侗族“);else if(nationStr.equals(”13“))text[2].setText(”瑶族“);else if(nationStr.equals(”14“))text[2].setText(”白族“);else if(nationStr.equals(”15“))text[2].setText(”土家族“);else if(nationStr.equals(”16“))text[2].setText(”哈尼族“);else if(nationStr.equals(”17“))text[2].setText(”哈萨克族“);else if(nationStr.equals(”18“))text[2].setText(”傣族“);else if(nationStr.equals(”19“))text[2].setText(”黎族“);
else if(nationStr.equals(”20“))text[2].setText(”傈僳族“);else if(nationStr.equals(”21“))text[2].setText(”佤族“);else if(nationStr.equals(”22“))text[2].setText(”畲族“);else if(nationStr.equals(”23“))text[2].setText(”高山族“);else if(nationStr.equals(”24“))text[2].setText(”拉祜族“);else if(nationStr.equals(”25“))text[2].setText(”水族“);else if(nationStr.equals(”26“))text[2].setText(”东乡族“);else if(nationStr.equals(”27“))text[2].setText(”纳西族“);else if(nationStr.equals(”28“))text[2].setText(”景颇族“);else if(nationStr.equals(”29“))text[2].setText(”柯尔克孜族“);else if(nationStr.equals(”30“))text[2].setText(”土族“);else if(nationStr.equals(”31“))text[2].setText(”达翰尔族“);else if(nationStr.equals(”32“))text[2].setText(”仫佬族“);else if(nationStr.equals(”33“))text[2].setText(”羌族“);else if(nationStr.equals(”34“))text[2].setText(”布朗族“);else if(nationStr.equals(”35“))text[2].setText(”撒拉族“);else if(nationStr.equals(”36“))text[2].setText(”毛南族“);else if(nationStr.equals(”37“))text[2].setText(”仡佬族“);else if(nationStr.equals(”38“))text[2].setText(”锡伯族“);else if(nationStr.equals(”39“))text[2].setText(”阿昌族“);else if(nationStr.equals(”40“))text[2].setText(”普米族“);else if(nationStr.equals(”41“))text[2].setText(”哈萨克族“);else if(nationStr.equals(”42“))text[2].setText(”怒族“);else if(nationStr.equals(”43“))text[2].setText(”乌孜别克族“);else if(nationStr.equals(”44“))text[2].setText(”俄罗斯族“);else if(nationStr.equals(”45“))text[2].setText(”鄂温克族“);else if(nationStr.equals(”46“))
text[2].setText(”德昂族“);
else if(nationStr.equals(”47“))
text[2].setText(”保安族“);
else if(nationStr.equals(”48“))
text[2].setText(”裕固族“);
else if(nationStr.equals(”49“))
text[2].setText(”京族“);
else if(nationStr.equals(”50“))
text[2].setText(”塔塔尔族“);
else if(nationStr.equals(”51“))
text[2].setText(”独龙族“);
else if(nationStr.equals(”52“))
text[2].setText(”鄂伦春族“);
else if(nationStr.equals(”53“))
text[2].setText(”赫哲族“);
else if(nationStr.equals(”54“))
text[2].setText(”门巴族“);
else if(nationStr.equals(”55“))
text[2].setText(”珞巴族“);
else if(nationStr.equals(”56“))
text[2].setText(”基诺族“);
else if(nationStr.equals(”57“))
text[2].setText(”其它“);
else if(nationStr.equals(”98“))
text[2].setText(”外国人入籍“);
String BirthyearStr = ”“;
char[] BirthyearChar = new char[4];
Info[1].getChars(3, 7, BirthyearChar, 0);
BirthyearStr = String.valueOf(BirthyearChar);
String BirthmonthStr = ”“;
char[] BirthmonthChar = new char[2];
Info[1].getChars(7, 9, BirthmonthChar, 0);
BirthmonthStr = String.valueOf(BirthmonthChar);
String BirthdateStr = ”“;
char[] BirthdateChar = new char[2];
Info[1].getChars(9, 11, BirthdateChar, 0);
BirthdateStr = String.valueOf(BirthdateChar);
text[3].setText(BirthyearStr + ”年“ + BirthmonthStr + ”月“ + BirthdateStr + ”日“);
char[] addressChar = new char[Info[1].length()18];
Info[2].getChars(18, Info[2].length(), issueChar, 0);
String issueStr = ”“;
issueStr = String.valueOf(issueChar);
text[6].setText(issueStr);
char[] startyearChar = new char[4];
Info[3].getChars(0, 4, startyearChar, 0);
String startyearStr = ”“;
startyearStr = String.valueOf(startyearChar);
char[] startmonthChar = new char[2];
Info[3].getChars(4, 6, startmonthChar, 0);
String startmonthStr = ”“;
startmonthStr = String.valueOf(startmonthChar);
char[] startdateChar = new char[2];
Info[3].getChars(6, 8, startdateChar, 0);
String startdateStr = ”“;
startdateStr = String.valueOf(startdateChar);
text[7].setText(startyearStr + ”年“ + startmonthStr + ”月“ + startdateStr + ”日“);
char[] endyearChar = new char[4];
Info[3].getChars(8, 12, endyearChar, 0);
String endyearStr = ”“;
endyearStr = String.valueOf(endyearChar);
char[] endmonthChar = new char[2];
Info[3].getChars(12, 14, endmonthChar, 0);
String endmonthStr = ”“;
endmonthStr = String.valueOf(endmonthChar);
char[] enddateChar = new char[2];
Info[3].getChars(14, 16, enddateChar, 0);
String enddateStr = ”“;
enddateStr = String.valueOf(enddateChar);
text[8].setText(endyearStr + ”年“ + endmonthStr + ”月“ + enddateStr + ”日“);
int count1 = d.getSize();
byte[] byteArray1 = new byte[count1];
for(i = 0;i < count1;i++)
byteArray1[i] = c.getAsByte(i);
try {
File myFile = new File(”zp.wlt“);
FileOutputStream out = new FileOutputStream(myFile);
out.write(byteArray1, 0, count1-1);
} catch(IOException t){
}
closeJN.invoke();
// System.out.println(closeJN.getRetVal());
int l = 0;
System.loadLibrary(”WltRS“);
BmpJN = new JNative(”WltRS“, ”GetBmp“);
BmpJN.setRetVal(Type.INT);
BmpJN.setParameter(l++, ”zp.wlt“);
BmpJN.setParameter(l++, 1);
BmpJN.invoke();
if(readJN.getRetVal().equals(”144“))
System.out.println(”相片解码成功!“);
else
System.out.println(”相片解码不成功!“);
Image image = null;
try {
image = ImageIO.read(new File(”zp.bmp“));
} catch(IOException ex){
}
ImageIcon icon = new ImageIcon(image);
showBmp.setIcon(icon);
getContentPane().add(showBmp);
setVisible(true);
a.dispose();
b.dispose();
c.dispose();
d.dispose();
e.dispose();
} catch(NativeException e){
} catch(UnsupportedEncodingException e){
e.printStackTrace();
}
} catch(IllegalAccessException e){
} }
public static void main(String agrs[]){
InformationReader informationReader = new InformationReader(”二代身份证信息读取");
informationReader.setSize(500, 500);} }
第二篇:简单的员工信息查询java程序
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
public class Employee extends JFrame implements ActionListener{
String titles[]={“工号:”,“姓名:”,“性别:”,“出生日期:”,“联系电话:”,“家庭住址:”,“个人情况:”};
JTextField employeeID=new JTextField(8);
JTextField employeeName=new JTextField(8);
JTextField employeeSex=new JTextField(2);
JTextField employeeBirthday=new JTextField(6);
JTextField employeePhone=new JTextField(11);
JTextField employeeAddress=new JTextField(20);
JTextArea employeeResume=new JTextArea();
JButton first=new JButton(“首页”);
JButton next=new JButton(“下一条”);
JButton previous=new JButton(“上一条”);
JButton last=new JButton(“尾页”);
Statement stmt;
ResultSet rs;
Employee(){
super(“员工信息查询”);
setSize(350,330);
try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection conn=DriverManager.getConnection(“jdbc:odbc:mydb”,“sa”,“123”);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(“select * from mdb”);
getContentPane().setLayout(new BorderLayout(0,8));
JPanel p[]=new JPanel[6];
for(int i=0;i<6;i++){
p[i]=new JPanel(new FlowLayout(FlowLayout.LEFT,10,0));
p[i].add(new JLabel(titles[i]));
}
p[0].add(employeeID);
p[1].add(employeeName);
p[2].add(employeeSex);
p[3].add(employeeBirthday);
p[4].add(employeePhone);
p[5].add(employeeAddress);
JPanel p1=new JPanel(new GridLayout(6,1,0,8));
JScrollPane jsp=new JScrollPane(employeeResume,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jsp.setPreferredSize(new Dimension(250,80));
for(int i=0;i<6;i++)
p1.add(p[i]);
JPanel p2=new JPanel(new FlowLayout(FlowLayout.LEFT,10,0));
p2.add(new JLabel(titles[6]));
p2.add(jsp);
JPanel p3=new JPanel();
p3.add(first);
p3.add(previous);
p3.add(next);
p3.add(last);
getContentPane().add(p1,“North”);
getContentPane().add(p2,“Center”);
getContentPane().add(p3,“South”);
next.addActionListener(this);
previous.addActionListener(this);
first.addActionListener(this);
last.addActionListener(this);
rs.first();
display();
}catch(Exception e){e.printStackTrace();}
setVisible(true);
}
public void actionPerformed(ActionEvent e){
try{
if(e.getSource()==next)rs.next();
else if(e.getSource()==previous)rs.previous();
else if(e.getSource()==first)rs.first();
else if(e.getSource()==last)rs.last();
display();
}catch(Exception ee){ee.printStackTrace();}
}
boolean display(){
try{
employeeID.setText(rs.getString(“employeeID”));
employeeName.setText(rs.getString(“employeeName”));
employeeSex.setText(rs.getString(“employeeSex”));
employeeBirthday.setText(rs.getString(“employeeBirthday”));
employeePhone.setText(rs.getString(“employeePhone”));
employeeAddress.setText(rs.getString(“employeeAddress”));
}employeeResume.setText(rs.getString(“employeeResume”));}catch(SQLException e){e.printStackTrace();return false;}return true;}public static void main(String[] args){JFrame.setDefaultLookAndFeelDecorated(true);Employee em=new Employee();}
第三篇:身份证信息查询接口 查询身份证具体信息
身份证信息查询接口 查询身份证具体信息
身份证信息查询接口可以查询身份证上具体信息,包括地区、性别、出生日期等情况。接口名称:身份证信息查询接口 接口平台:聚合数据
接口地址:http://apis.juhe.cn/idcard/index 支持格式:JSON/XML 请求方式:get 请求示例:http://apis.juhe.cn/idcard/index?key=KEY&cardno=***211 请求参数: 名称 cardno dtype key 类型 必填
说明 身份证号码
返回数据格式:json或xml,默认json 你申请的key
您
申
请的string Y string Y string Y 调用样例及调试工具:
API测试工具 返回字段: 名称 error_code reason data area sex
类型 int string-string string
说明 返回码 返回说明 返回结果集 地区 性别 birthday
string 出生日期
身份证号码归属地数据库调用代码JSON返回示例: { “resultcode”:“200”, “reason”:“成功的返回”, “result”:{ “area”:“浙江省温州市平阳县”, “sex”:“男”, “birthday”:“1989年03月08日” } } 身份证号码归属地数据库调用代码XML返回示例:
第四篇:更换二代身份证的通知
关于做好城乡居民养老保险制度实施前参保人员更
换二代身份证的通知
各镇(区)政府,县直有关部门、直属机构、企事业单位:
开展城乡居民社会养老保险试点工作是县委、县政府今年为民办的一件实事。按照县委、县政府的有关工作要求,我县城乡居民养老保险试点工作准备启动,将于7、8月份组织农村居民进行参保登记、费用征缴、养老金发放等工作。各镇(区)要依据参保人员二代身份证建立详细的参保信息档案,并纳入全县计算机信息管理系统。代办银行将为参保的居民开设参保缴费和发放养老金存折。为确保计算机信息准确和代办银行存折开设成功,保证符合领取养老金待遇的居民按时领取养老金,确保城乡居民养老保险试点工作顺利开展,现就符合参保条件的城乡居民补办或更换二代身份证工作通知如下:
一、各镇(区)、有关部门要高度重视,迅速进行安排部署,广泛宣传,积极动员广大城乡居民补办或更换二代身份证。
二、镇(区)公安分局、派出所要做好服务工作,安排各基层派出所抽调专人,负责补办或更换二代身份证,积极配合、支持各镇(区)开展工作。
三、无身份证或身份证遗失的农村居民、没有更换二代身份证的农村居民务必在6月底前补办或更换。
四、在办理城乡居民养老保险参保登记时,无二代身份证的城乡居民,将不受理参保登记,不予发放养老金。
第五篇:身份证相关信息
一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。
GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。
二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下:
1.地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
2.出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。
3.顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
4.校验码(R),一位数字,通过前17位数字根据一定计算得出。
三、关于地址码含义的详细解释:
身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下:
A:国内区域
华北三省二市
东北三省
华东六省一市
华南六省
西南四省一市 6 西北五省
台湾
港澳
B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码
按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。
具体省(直辖市,自治区,特别行政区)代码如下:
11-15 京 津 冀 晋 蒙
21-23 辽 吉 黑
31-37 沪 苏 浙 皖 闽 赣 鲁
41-46 豫 鄂 湘 粤 桂 琼
50-54 渝 川 贵 云 藏
61-65 陕 甘 青 宁 新
81-82 港 澳
CD:城市代码
从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市代码从省会开始排,比如2101=沈阳 2102=大连„„ 只有地级城市有独立的城市代码,县级市没有。
EF:市辖区、郊区、郊县、县级市代码
如果EF=00,指代这个城市,不特定区县;对于非直辖市,如EF=01,指代市辖区(任意一个区),02开始指代特定的区。
其中:
E=0代表市辖区,E=1代表郊区,E=2代表郊县,E=8代表县级市。
对于直辖市,从01开始就依次排区,没有市区和郊区的代码区分。:
有关更详细的资料见附录。
四、生日期码(YYYYMMDD)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
五、顺序码(XXX)(身份证第十五位到十七位)是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生,而且和他同年月日生的男生至少有两个,他们的后四位是001*和003*。分配顺序码中“999、998、997、996”四个顺序号分别为男女性百岁以上老人专用的特定编号。
六、关于校验码
校验码是通过一系列数学计算得出来的,具体校验的计算方式如下:
1.对前17位数字本体码加权求和
公式为:S = Sum(Ai * Wi), i = 0,..., 16
其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
通俗解释:身份证第一位数字X7+第二位X9+第三位X10+第四位X5+第五位X5+第六位X8+第七位X4+第八位X1+第九位X6+第十位X3+十一位X7+十二位X9+十三位X10+十四位X5+十五位X8+十六位X4+十七位X2;计算出总和(用S)表示。2.以11对计算结果取模
Y = mod(S, 11)
通俗解释:用S除以11,看最后的余数。如果除尽,为0;余数为1,则计为1;最大余数为10;全部数字为0-10共11个数字。(用Y表示)。
3.根据模的值得到对应的校验码
对应关系为:
Y值: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
通俗解释:余数为0,则校验码为1;依次类推:余数为1,则校验码对应0;以下:2--X;3--9;4--8;5--7;6--6;7--5;8--4;9-3;10-2。
如果校验码不符合这个规则,则肯定是假号码。
关于18位身份证号码尾数是“X”的一种解释:因为按照上面的规则,校验码有11个,而不是10个,所以不能用0-9表示。所以如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。