吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 21723|回复: 82
收起左侧

[Windows] 2020年1月9日更新-【身份证号码校验工具】-VB编译(内含学习源代码)

    [复制链接]
英姿飒爽d木叶君 发表于 2019-12-30 16:38
本帖最后由 英姿飒爽d木叶君 于 2020-1-9 18:12 编辑

身份证号码校验工具-VB编译版


一、前言   
最近在学习VB,主要目的是为了提高办公效率,最近学习到了数据库和网络接口,做了一个身份证号码校验工具,本着大家一起学习的原则的原则,上来发给大家参考下,如有错误的地方请指正,
工具主要功能如下:

  • 身份证号码校验,利用公式识别出身份证号码是否正确;
  • 识别性别,是男是女(身份证的倒数第二位数字判断)
  • 识别省份(前两位)、市(3-4位)、县(5-6位)
  • 识别年龄(当前日期减7-14位)
  • 识别星座(根据生日11-14位来判断)
  • 识别属相(根据出生年判断)

二、软件截图
         截图.jpg
        
三、工具下载地址
https://www.lanzouj.com/i8kg5nc

            
三、部分源码(仅供学习)
[Visual Basic] 纯文本查看 复制代码
'计算星座
Sub 星座()
    Dim 星座$
    If 主窗口.身份证号码s = "" Then
        星座 = ""
    Else
            Dim 日期%
            日期 = Int(Mid(主窗口.身份证号码s, 11, 4))
            If 日期 >= 1222 Or 日期 <= 119 Then
                星座 = "魔蝎"
            ElseIf 日期 >= 120 And 日期 <= 218 Then
                星座 = "水瓶"
            ElseIf 日期 >= 219 And 日期 <= 320 Then
                星座 = "双鱼"
            ElseIf 日期 >= 321 And 日期 <= 419 Then
                星座 = "白羊"
            ElseIf 日期 >= 420 And 日期 <= 520 Then
                星座 = "金牛"
            ElseIf 日期 >= 521 And 日期 <= 621 Then
                星座 = "双子"
            ElseIf 日期 >= 622 And 日期 <= 722 Then
                星座 = "巨蟹"
            ElseIf 日期 >= 723 And 日期 <= 822 Then
                星座 = "狮子"
            ElseIf 日期 >= 823 And 日期 <= 922 Then
                星座 = "处女"
            ElseIf 日期 >= 923 And 日期 <= 1023 Then
                星座 = "天秤"
            ElseIf 日期 >= 1024 And 日期 <= 1121 Then
                星座 = "天蝎"
            ElseIf 日期 >= 1122 And 日期 <= 1221 Then
                星座 = "射手"
    End If
    主窗口.星座.Caption = 星座 & "座"
    End If
End Sub


[Visual Basic] 纯文本查看 复制代码
'计算属相
Sub 属相()
    Dim 属相$
    If 主窗口.身份证号码s = "" Then
        属相 = ""
    Else
        Dim 全属相$
        全属相 = "猴鸡狗猪鼠牛虎兔龙蛇马羊"
        属相 = Mid(全属相, (CInt(Mid(主窗口.身份证号码s, 7, 4)) Mod 12) + 1, 1)
        主窗口.属相.Caption = 属相
    End If
End Sub


[Visual Basic] 纯文本查看 复制代码
'身份证号码正确性校验
Sub 身份证号码校验()

Dim 身份证号码$, 正确性校验$, i%
i = 2

    身份证号码 = 主窗口.身份证号码s.Text
    
    正确性校验 = 校验(身份证号码)
    If Len(身份证号码) = 15 Then
        主窗口.显示框.ForeColor = vbRed
        主窗口.显示框.Caption = "不支持验证15位身份证号码"
        主窗口.身份证号码s.SetFocus
    ElseIf Len(身份证号码) <> 18 Then
        主窗口.显示框.ForeColor = vbRed
        主窗口.显示框.Caption = "身份证号码位数不正确"
        主窗口.身份证号码s.SetFocus
    ElseIf 正确性校验 = "身份证号码错误" Then
        主窗口.显示框.ForeColor = vbRed
        主窗口.显示框.Caption = "身份证号码错误"
        主窗口.身份证号码s.SetFocus
    Else
        If 主窗口.源1.Value = True Then
            Call 读取地址1.地址
            Call 属相.属相
            Call 星座.星座
        Else
            Call 读取地址2.地址
            Call 属相.属相
            Call 星座.星座
        End If
    End If
    i = i + 1




End Sub

Function 校验(身份证号码 As String)
    
    Dim 余数, 校验码, 号码$, 校验码1, 校验码2, 校验结果
    号码 = 身份证号码
    
    '计算余数
    If 号码 = "" Then
        余数 = ""
    Else
        On Error Resume Next
        余数 = (Left(号码, 1) * 7 + Mid(号码, 2, 1) * 9 + Mid(号码, 3, 1) * 10 + Mid(号码, 4, 1) * 5 + Mid(号码, 5, 1) * 8 + Mid(号码, 6, 1) * 4 + Mid(号码, 7, 1) * 2 + Mid(号码, 8, 1) * 1 + Mid(号码, 9, 1) * 6 + Mid(号码, 10, 1) * 3 + Mid(号码, 11, 1) * 7 + Mid(号码, 12, 1) * 9 + Mid(号码, 13, 1) * 10 + Mid(号码, 14, 1) * 5 + Mid(号码, 15, 1) * 8 + Mid(号码, 16, 1) * 4 + Mid(号码, 17, 1) * 2) Mod 11
        Error = 0
    End If
    
        '计算校验码
        
        If 余数 = 0 Then
            校验码1 = 1
        ElseIf 余数 = 1 Then
            校验码1 = 0
        ElseIf 余数 = 2 Then
            校验码1 = "X"
        ElseIf 余数 = 3 Then
            校验码1 = 9
        ElseIf 余数 = 4 Then
            校验码1 = 8
        Else
            校验码1 = ""
        End If
        
        If 余数 = 5 Then
            校验码2 = 7
        ElseIf 余数 = 6 Then
            校验码2 = 6
        ElseIf 余数 = 7 Then
            校验码2 = 5
        ElseIf 余数 = 8 Then
            校验码2 = 4
        ElseIf 余数 = 9 Then
            校验码2 = 3
        ElseIf 余数 = 10 Then
            校验码2 = 2
        Else
            校验码2 = ""
        End If
        
        校验码 = 校验码1 & 校验码2
        
     If 号码 = "" Then
        校验结果 = ""
     ElseIf Len(号码) = 15 Then
        校验结果 = "未验证"
     ElseIf Len(号码) = 18 And Right(号码, 1) = 校验码 Then
        校验结果 = "身份证号码正确"
     Else
        校验结果 = "身份证号码错误"
     End If
        
     校验 = 校验结果
End Function


         
四、身份证地址数据库文件(未加密数据库,仅供学习使用!)
       数据库文件.txt (31 Bytes, 下载次数: 525)

五、缺少运行库解决方法

    如出现以下情况,请解压下载后的压缩包(MSINET组件.zip),根据电脑系统位数进行安装(64或32),如不清楚,请安装32位即可。


7ac6af626a5937cf324b0c7610406df.png


   
1577698839(1).jpg

六、已更新,增加了更为准确的接口3-2020年1月9日

未经允许,谢绝转载!!!

免费评分

参与人数 23吾爱币 +20 热心值 +17 收起 理由
wakao163 + 1 错误5,无效的调用参数
yuhuibar + 1 + 1 谢谢@Thanks!
flyinghog + 1 我很赞同!
lonely旅程 + 1 + 1 我很赞同!
念慈 + 1 我很赞同!
处女-大龙猫 + 1 我很赞同!
shenshouaowu + 1 用心讨论,共获提升!
sxleilong + 1 + 1 我很赞同!
da2tao + 1 + 1 我很赞同!
fyz2007 + 1 谢谢@Thanks!
一七像 + 1 谢谢@Thanks!
尘舟夜航 + 1 我很赞同!
°何人能及 + 1 + 1 我很赞同!
郁郁寡欢5182 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
chaoshen123 + 1 热心回复!
Lucifer_BW + 1 + 1 热心回复!
梦里lm + 1 + 1 我很赞同!
泽琛小哥哥 + 1 + 1 虽然看的不是特别懂 但是这个排版真的爱了
yanglinman + 1 + 1 谢谢@Thanks!
pbgz + 1 + 1 谢谢@Thanks!
JuncoJet + 1 + 1 为啥需要inet(网络组件)?
向往的歌 + 1 + 1 感谢分享!鼓励转贴优秀软件安全工具和文档!吾爱破解论坛有你更精彩!
荒草2378 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

li2313561 发表于 2020-1-2 12:59
.版本 2
.支持库 eAPI

.程序集 窗口程序集_启动窗口
.程序集变量 len, 整数型
.程序集变量 ID, 文本型

.子程序 __启动窗口_创建完毕



.子程序 _编辑框1_内容被改变

len = 取文本长度 (编辑框1.内容)
.如果 (len < 18)
    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “0”)
        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “1”)
            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “2”)
                .如果 (取文本右边 (编辑框1.内容, 1) ≠ “3”)
                    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “4”)
                        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “5”)
                            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “6”)
                                .如果 (取文本右边 (编辑框1.内容, 1) ≠ “7”)
                                    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “8”)
                                        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “9”)
                                            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “0”)
                                                模拟按键 (#退格键, , )


                                            .否则

                                            .如果结束

                                        .否则

                                        .如果结束

                                    .否则

                                    .如果结束

                                .否则

                                .如果结束

                            .否则

                            .如果结束

                        .否则

                        .如果结束

                    .否则

                    .如果结束

                .否则

                .如果结束

            .否则

            .如果结束

        .否则

        .如果结束

    .否则

    .如果结束

.否则
    .如果 (len = 18)
        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “0”)
            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “1”)
                .如果 (取文本右边 (编辑框1.内容, 1) ≠ “2”)
                    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “3”)
                        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “4”)
                            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “5”)
                                .如果 (取文本右边 (编辑框1.内容, 1) ≠ “6”)
                                    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “7”)
                                        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “8”)
                                            .如果 (取文本右边 (编辑框1.内容, 1) ≠ “9”)
                                                .如果 (取文本右边 (编辑框1.内容, 1) ≠ “0”)
                                                    .如果 (取文本右边 (编辑框1.内容, 1) ≠ “x”)
                                                        .如果 (取文本右边 (编辑框1.内容, 1) ≠ “X”)
                                                            模拟按键 (#退格键, , )
                                                        .否则

                                                        .如果结束

                                                    .否则

                                                    .如果结束

                                                .否则

                                                .如果结束

                                            .否则

                                            .如果结束

                                        .否则

                                        .如果结束

                                    .否则

                                    .如果结束

                                .否则

                                .如果结束

                            .否则

                            .如果结束

                        .否则

                        .如果结束

                    .否则

                    .如果结束

                .否则

                .如果结束

            .否则

            .如果结束

        .否则

        .如果结束

    .否则
        .如果 (len > 18)
            信息框 (“超出18位身份证号!”, 0, , )
            模拟按键 (#退格键, , )
        .否则

        .如果结束

    .如果结束

.如果结束


.子程序 _按钮1_被单击
.局部变量 n, 整数型
.局部变量 check, 整数型
.局部变量 IDS, 整数型, , "0"

.如果 (len = 18)
    清除数组 (IDS)
    .计次循环首 (17, n)
        加入成员 (IDS, 到数值 (取文本中间 (编辑框1.内容, n, 1)))
    .计次循环尾 ()
    check = (IDS [1] × 7 + IDS [2] × 9 + IDS [3] × 10 + IDS [4] × 5 + IDS [5] × 8 + IDS [6] × 4 + IDS [7] × 2 + IDS [8] × 1 + IDS [9] × 6 + IDS [10] × 3 + IDS [11] × 7 + IDS [12] × 9 + IDS [13] × 10 + IDS [14] × 5 + IDS [15] × 8 + IDS [16] × 4 + IDS [17] × 2) % 11
    .如果 (check = 0 且 取文本右边 (编辑框1.内容, 1) = “1”)
        信息框 (“身份证校验正确!”, 0, , )
    .否则
        .如果 (check = 1 且 取文本右边 (编辑框1.内容, 1) = “0”)
            信息框 (“身份证校验正确!”, 0, , )
        .否则
            .如果 (check = 2 且 取文本右边 (编辑框1.内容, 1) = “X”)
                信息框 (“身份证校验正确!”, 0, , )
            .否则
                .如果 (check = 2 且 取文本右边 (编辑框1.内容, 1) = “x”)
                    信息框 (“身份证校验正确!”, 0, , )
                .否则
                    .如果 (check = 3 且 取文本右边 (编辑框1.内容, 1) = “9”)
                        信息框 (“身份证校验正确!”, 0, , )
                    .否则
                        .如果 (check = 4 且 取文本右边 (编辑框1.内容, 1) = “8”)
                            信息框 (“身份证校验正确!”, 0, , )
                        .否则
                            .如果 (check = 5 且 取文本右边 (编辑框1.内容, 1) = “7”)
                                信息框 (“身份证校验正确!”, 0, , )
                            .否则
                                .如果 (check = 6 且 取文本右边 (编辑框1.内容, 1) = “6”)
                                    信息框 (“身份证校验正确!”, 0, , )
                                .否则
                                    .如果 (check = 7 且 取文本右边 (编辑框1.内容, 1) = “5”)
                                        信息框 (“身份证校验正确!”, 0, , )
                                    .否则
                                        .如果 (check = 8 且 取文本右边 (编辑框1.内容, 1) = “4”)
                                            信息框 (“身份证校验正确!”, 0, , )
                                        .否则
                                            .如果 (check = 9 且 取文本右边 (编辑框1.内容, 1) = “3”)
                                                信息框 (“身份证校验正确!”, 0, , )
                                            .否则
                                                .如果 (check = 10 且 取文本右边 (编辑框1.内容, 1) = “2”)
                                                    信息框 (“身份证校验正确!”, 0, , )
                                                .否则
                                                    信息框 (“身份证校验错误!余数为:” + 到文本 (check), 0, , )

                                                .如果结束

                                            .如果结束


                                        .如果结束

                                    .如果结束

                                .如果结束

                            .如果结束

                        .如果结束

                    .如果结束

                .如果结束


            .如果结束

        .如果结束



    .如果结束

.否则
    信息框 (“请填入正确的18位身份证号码!”, 0, , )
.如果结束

易代码呈上!!!!!!
 楼主| 英姿飒爽d木叶君 发表于 2019-12-30 19:26
xlcomputer 发表于 2019-12-30 18:14
但是每次启动都会出现注册窗口,这个还需要进一步学习。

第一次可能会,后面不会了吧?您的操作系统是?我用win8第二次都不会咯,第一次是判断电脑中有没有需要的运行库,如果没有,会自动注册一次。
laoou 发表于 2019-12-30 17:00
欢迎分析讨论交流! - Mon Dec 30 2019 17:00:54 GMT+0800 (中国标准时间)
向往的歌 发表于 2019-12-30 17:17
感谢分享!鼓励转贴优秀软件安全工具和文档!吾爱破解论坛有你更精彩!
AnonymousHacker 发表于 2019-12-30 17:52
话说数据库密码是啥,进不去呢
太阳tt123 发表于 2019-12-30 17:52
好高级的样子
 楼主| 英姿飒爽d木叶君 发表于 2019-12-30 18:10
AnonymousHacker 发表于 2019-12-30 17:52
话说数据库密码是啥,进不去呢

您重新在帖子下方下载一份无密码的数据库就好了
xlcomputer 发表于 2019-12-30 18:14
但是每次启动都会出现注册窗口,这个还需要进一步学习。
wdh123 发表于 2019-12-30 18:23
没事可以查查身份证了!!!!!!
wenlyw 发表于 2019-12-30 18:26
不会用,谢谢分享!!
stonezhu 发表于 2019-12-30 18:31
校验器下载不了了呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-1 08:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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