通过身份证号获取个人信息(JAVA代码)

  • 个人思路
    • 如果有错误,欢迎留言
    • 代码

个人思路

文档下载地址:
身份证对应省区

1、首先对身份证进行输入
对身份证信息进行匹配看是否符合身份证规则,我是利用正则表达式进行判断。身份证最后一位是校验码还要判断校验码是否正确。如果全部正确则身份证输入写法没错。
2、获取身份证地址
如果获取的身份证地址为空,则判断出该身份证输入错误直接结束接下来的程序。
3.获取出生日期
由于正则表达式的过程中已经判断书写的日期是否正确,所以此处必定返回一个正确的出生日期
4.获取性别和办理地公安代码
通过规则直接获取出来即可

如果有错误,欢迎留言

可以点击此处下载身份证前六位代表地区的文件(蓝奏云)

代码

package regex;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class IDcard {static Scanner scanner = new Scanner(System.in);
//主方法区public static void main(String[] args) {IDcard idCard = new IDcard();boolean flag = true;while (flag) {flag = idCard.menu();           }}
//主菜单private boolean menu() {boolean flag = true;System.out.println("************");System.out.println("1-根据身份证查询个人信息");System.out.println("2-退出");System.out.println("************");String order = scanner.nextLine();if (!is_rightorder(order)) {flag = false;}if (Integer.valueOf(order) == 1)operation();return flag;}
//具体操作private void operation() {System.out.println("请输入正确身份证号");String id = scanner.nextLine();if (!check_id(id)) {String adress = openFile(id);// 获取当前地址if(adress ==null) {System.out.println("匹配不到地址");return ;}String birth = getBirth(id);// 获取出生日期String security = id.substring(14,16);//当地派出所代码String sex = getSex(id.substring(16,17));System.out.println("地址:"+adress+"\n出生日期:"+birth+"\n当地派出所代码:"+security+"\n性别:"+sex);}}
//获取性别private String getSex(String sex) {if(Integer.valueOf(sex)%2==0) {return "女";}return "男";}
//获取生日private String getBirth(String id) {String birth = id.substring(6,10)+"年"+id.substring(10,12)+"月"+id.substring(12,14)+"日";return birth;}// 检测是否是正确的命令private boolean is_rightorder(String order) {int o = Integer.valueOf(order);if ("".equals(order)) {return false;}if (o < 1 || o >= 2) {return false;}return true;}//检测id是否为真省份证号
//  将前面的身份证bai号码17位数分别乘以du不同的系数。从第一位zhi到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
//  2.将这17位数字和系数相乘的结果相加。
//  3.用加出来和除以11,看余数是多少? private boolean check_id(String id) {int sum = 0;boolean flag = true;String regex = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}(\\d{1}|x|X)$";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(id);flag = m.matches();//身份证信息符合规范sum = Integer.valueOf(id.charAt(0))*7+Integer.valueOf(id.charAt(1))*9+Integer.valueOf(id.charAt(2))*10+Integer.valueOf(id.charAt(3))*5+Integer.valueOf(id.charAt(4))*8+Integer.valueOf(id.charAt(5))*4+Integer.valueOf(id.charAt(6))*2+Integer.valueOf(id.charAt(7))*1+Integer.valueOf(id.charAt(8))*6+Integer.valueOf(id.charAt(9))*3+Integer.valueOf(id.charAt(10))*7+Integer.valueOf(id.charAt(11))*9+Integer.valueOf(id.charAt(12))*10+Integer.valueOf(id.charAt(13))*5+Integer.valueOf(id.charAt(14))*8+Integer.valueOf(id.charAt(15))*4+Integer.valueOf(id.charAt(16))*2;sum = sum%11;char check = id.charAt(17);int a = -1;if(check == 'x') {a = 10;}else {a = Integer.valueOf(check);}if(sum != a) {     //判断校验值是否正确flag = false;}return flag;}// 打开文件匹配地址private String openFile(String id) {id = id.substring(0, 6);File file = new File("E:\\Downloads\\idcard\\idcard\\locationcode.txt");try {//          FileReader fr = new FileReader(f);InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");BufferedReader br = new BufferedReader(isr);String line;while ((line = br.readLine()) != null) {if (line.contains(id)) {line = line.replaceAll("\\d*\\s", "");
//                  System.out.println(line);return line;}}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}
}

通过身份证号获取个人信息(JAVA代码)相关推荐

  1. 根据身份证号获取相关信息(籍贯、性别、出生日期...)

    根据身份证号获取相关信息(籍贯.性别.出生日期-) 首先我的只是个demo,身份证号也是写死的.仅供参考! 通过访问其他HTTP接口,将身份证号当作参数.调用接口返回相关信息 效果展示: **接口地址 ...

  2. 利用身份证号获取生日信息

    1 问题 如何利用Java程序从身份证号中获取生日信息. 2 方法 采用"截图+文字+代码"的方式描述. //调用函数获取当前日期以及截取身份证号码中的数字 import java ...

  3. 【学习】身份证号获取个人信息

    身份证具有明显的代表唯一性,通过身份证号可以获取到哪些信息?社保在校验添加缴费人信息时,需要根据输入的身份证号获取信息,格式验证通过后将获取到的信息填充.这就需要了解一些规格. 现在新一代的身份证居多 ...

  4. 通过微信公众号获取用户信息(java版)

    最近由于公司业务,就开始研究微信开发的流程,说实话,这东西刚开始看到时候和看天书的一样,总算,看了一天的文档,测试代码终于出来了. 1.首先需要到微信网站去设置一下,我是直接用的微信测试号. 接口配置 ...

  5. 依据银行卡号获取银行信息Java代码

    package com.epay.web;import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  6. 根据身份证号获取个人信息的类

    public Hashtable GetResult()         {             areaInfo.Add("110000", "北京市") ...

  7. js脚本根据身份证号获取性别、年龄、家庭地址、生日

    做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个 当身份证号的焦点失去选中后,根据身份证号获取性别.年龄.家庭地址.生日 直接上代码: index.html & ...

  8. java代码实现根据身份证号获取性别,年龄

    根据身份证号获取性别,年龄 // 根据身份编号获取性别public static String getGenderByIdCard(String idCard) {String sGender = & ...

  9. 根据身份证号获取信息

    1.根据身份证号获取年龄 export function analyzeIDCard(IDCard){let age = 0,yearBirth,monthBirth,dayBirth;//获取用户身 ...

最新文章

  1. IM4Java + GraphicsMagick 实现高清图片剪裁处理
  2. 控件无法安装,windows已经阻止此软件因为无法验证发行者
  3. 和逛微博、刷朋友圈一样玩转 GitHub
  4. jQuery 效果函数(三)
  5. MySQL带ALL关键字的子查询
  6. python 报错 too many values to unpack (expected 3) 的解决方案
  7. mysql 测试快生产慢_生产上MySQL慢查询优化实战,SQL优化实战
  8. Unity3D-相关函数功能
  9. clickhouse 分布式表
  10. MATLAB怎么做出三叶玫瑰线,matlab复习题
  11. RabbitMQ的项目实际应用
  12. Markdown的基础语法
  13. 新安装的apache无法解析php,apache无法解析php
  14. Excel导入SQL datetime的处理
  15. vue实现上传图片并预览效果 html+css+js
  16. 在matlab下计算信源熵
  17. SuperMap iDesktopX 影像/栅格数据不用导入导出即可分析处理啦!
  18. 实战 | 计算器/数码管数字识别 基于OpenCV和EasyOCR/PaddleOCR(附源码)
  19. EEPROM存储芯片24C02
  20. [词性] 七、冠词二 [不使用冠词的场合]

热门文章

  1. C++类 ——初始化列表
  2. 雅虎邮件门发酵:爱尔兰开始深入调查雅虎电邮被黑事件
  3. python输出数字和字符串_Python中的数值和字符串
  4. 高德地图的绘制路线、批量标记点和点的信息展示
  5. error setting certificate verify locations
  6. 中国筷子的十二种忌讳(转)
  7. 关于提高企业进行人才梯队建设的效率,我们有三个建议
  8. 从熵的角度去看公司变迁
  9. 从苹果logo到冤案的发生 谈人类注意力饱和现象
  10. 用 MSER 算法提取特征区域