作者: 乔克斯
查看: 15857|回复: 35

主题标签Tag

打印 上一主题 下一主题

[源码] 【查询身份证信息】根据身份证号查询持有者信息

[复制链接]
跳转到指定楼层
楼主
乔克斯 发表于 2014-7-25 23:21:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
查看: 15857|回复: 35
根据身份证号查询持有者信息

  此程序是离线程序,在没有网的情况下也可以运行,原理也很简单,身份证号本身就包含着很多信息,比如生日,老家,年龄,这些都可以分析出来。

废话不多时,上图上码上附件。

效果图:


代码截图:




部分代码:
[C#] 纯文本查看 复制代码
        #region 查询身份证相关信息
        public static IDCard GetIDCard(string ID) {
            IDCard cd = new IDCard();
            if (CheckCard(ID.Trim()))//如果通过CheckCard方法验证成功
                {
                string card = ID.Trim();//获取输入的身份证号码
                if (card.Length == 15)          //如果输入的是15位的身份证号码,需要将其转换成18位
                    {
                    int[] w = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
                    char[] a = new char[] { '1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2' };
                    string newID = "";
                    int s = 0;
                    newID = ID.Trim().Insert(6, "19");
                    for (int i = 0; i < 17; i++) {
                        int k = Convert.ToInt32(newID[i]) * w[i];
                        s = s + k;
                    }
                    int h = 0;
                    Math.DivRem(s, 11, out h);
                    newID = newID + a[h];
                    card = newID;               //最后将转换成18位的身份证号码赋值给card
                }
                int addnum = Convert.ToInt32(card.Remove(6));//获取身份证号码中的地址码
                string numAddress = LoadAddress(addnum);
                if (numAddress != "")//如果存在
                    {
                    string address = numAddress;//获取地址码对应的归属地
                    string birthday = card.Substring(6, 8);//从身份证号码中截取出公民的生日
                    string byear = birthday.Substring(0, 4);//获取出生年份
                    string bmonth = birthday.Substring(4, 2);//获取出生月份
                    if (bmonth.Substring(0, 1) == "0")//如果月份是以0开头
                        {
                        bmonth = bmonth.Substring(1, 1);//去掉0
                    }
                    string bday = birthday.Substring(6, 2);//获取出生“日”
                    if (bday.Substring(0, 1) == "0")//如果“日”以0开头
                        {
                        bday = bday.Substring(1, 1);//去掉0
                    }
                    string sex = "";//性别
                    if (ID.Trim().Length == 15)//如果输入的身份证号码是15位
                        {
                        int PP = Convert.ToInt32(ID.Trim().Substring(14, 1)) % 2;//判断最后一位是奇数还是偶数
                        if (PP == 0)//如果是偶数
                            {
                            sex = "女";//说明身份证号码的持有者是女性
                        } else {
                            sex = "男";//如果是奇数则身份证号码的持有者是男性
                        }
                    }
                    if (ID.Trim().Length == 18)//如果输入的身份证号码是18位
                        {
                        int PP = Convert.ToInt32(ID.Trim().Substring(16, 1)) % 2;//判断倒数第二位是奇数还是偶数
                        if (PP == 0)//如果是偶数
                            {
                            sex = "女";//说明身份证号码的持有者是女性
                        } else {
                            sex = "男";//如果是奇数则身份证号码的持有者是男性
                        }
                    }
                    cd.Address = address;//显示身份证持有者的归属地
                    DateTime btime = new DateTime(Convert.ToInt32(byear), Convert.ToInt32(bmonth), Convert.ToInt32(bday));
                    cd.Birthday = btime;//显示身份证持有者的生日
                    cd.Zodiac = GetAtomFromBirthday(btime);//显示身份证持有者的星座
                    cd.Constellation = getZodiac(btime);//显示身份证持有者的生肖
                    cd.Age = DateTime.Now.Year - btime.Year;//显示身份证持有者的年龄
                    string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
                    string sday = Day[Convert.ToInt16(btime.DayOfWeek)];
                    cd.TDayOfWeek = sday;
                    cd.Sex = sex;//显示身份证持有者的性别
                    cd.Msg = "合法的公民身份证号!";//显示验证结果
                    cd.CardNumber = ID;
                } else {
                    cd.Msg = "公民身份证号输入有误!";
                }
            } else {
                cd.Msg = "非法公民身份证号!";
            }
            return cd;
        }
        #endregion


身份证查询源码:


评分

参与人数 2金钱 +6 收起 理由
cskin + 1 神马都是浮云
xiaobo + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 转播转播
回复 论坛版权

使用道具 举报

33#
在路上09284275 发表于 2019-9-20 20:53:34 | 只看该作者
离线都可以用,确实是个好东西,感谢楼主
32#
jacksonwong 发表于 2019-5-25 12:10:36 | 只看该作者
谢谢分享!
回复

使用道具 举报

31#
河里的星星 发表于 2018-12-18 10:02:29 | 只看该作者
学习一个 ,感觉很给力
30#
coolhq 发表于 2018-12-16 14:07:34 | 只看该作者
多谢分享
回复

使用道具 举报

29#
Qyang 发表于 2016-3-19 02:23:16 | 只看该作者
刚好拿来查查东西
28#
y1665780783 发表于 2016-1-31 18:04:24 | 只看该作者
有点意思
回复

使用道具 举报

27#
lelenet 发表于 2016-1-31 01:05:33 | 只看该作者
AForge.NET
回复

使用道具 举报

26#
xxxxxxxx 发表于 2015-11-3 22:05:31 | 只看该作者
好东西XIEXIE
25#
好人一生平安 发表于 2015-10-31 14:57:45 | 只看该作者
写的还不错
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-11-23 11:27, Processed in 0.691545 second(s), 40 queries , Gzip On.

快速回复 返回顶部 返回列表