VB身份证验证

来源:互联网 发布:淘宝商城865药店 编辑:程序博客网 时间:2024/05/01 23:15

刚学VB没多久

研究了一下身份证的验证

也参考了网上一些资料

希望帮看看有什么不足

Private Function 身份证信息校验(sfzhV As String, csrqV As String, xbV As String, errorV As String) As IntegerDim xsV(17) As IntegerDim i As IntegerDim sumV As IntegerDim modV As IntegerDim dywsV As String'/**************************************'***校验身份证是否合法***''身份证校验:1.出生日期 csrqV'            2.性别     xbV'入口参数:'        1.sfzhV     身份证号'        2.csrqV     出生日期'        3.xbV       性别'出口参数:'        1.errorV     错误信息'返回值: 身份证信息校验=0    为校验通过'        身份证信息校验<>0   校验不通过''1.当csrqV = "",xbV = ""时,只校验身份证出生'  日期是否符合日期格式要求'2.当csrqV<> ""或xbV <> ""时,同时校验'  出生日期或性别是否跟身份证相符''/***************************************'身份证校验系数:'从第一位到第十七位的系数分别为:'7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。xsV(0) = 7xsV(1) = 9xsV(2) = 10xsV(3) = 5xsV(4) = 8xsV(5) = 4xsV(6) = 2xsV(7) = 1xsV(8) = 6xsV(9) = 3xsV(10) = 7xsV(11) = 9xsV(12) = 10xsV(13) = 5xsV(14) = 8xsV(15) = 4xsV(16) = 2'校验身份证位数If Len(Trim(sfzhV)) <> 18 Then    errorV = "身份证位数不对!"    身份证信息校验 = -1    Exit FunctionEnd IfsumV = 0'身份证号码按位与身份证校验系数相乘,并将所有积相加。For i = 0 To 17    sumV = sumV + Val(Mid(sfzhV, i + 1, 1)) * xsV(i)Next'对sumV/11 取模modV = sumV Mod 11'余数对应身份证最后一位'其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。Select Case modVCase 0    dywsV = "1"Case 1    dywsV = "0"Case 2    dywsV = "X"Case 3    dywsV = "9"Case 4    dywsV = "8"Case 5    dywsV = "7"Case 6    dywsV = "6"Case 7    dywsV = "5"Case 8    dywsV = "4"Case 9    dywsV = "3"Case 10    dywsV = "2"End SelectIf dywsV <> Mid(sfzhV, 18) Then    errorV = "身份证号不合法!"    身份证信息校验 = -1    Exit FunctionEnd IfIf Trim(csrqV) <> "" And Trim(csrqV) <> Mid(sfzhV, 7, 8) Then    errorV = "身份证号码与所输入的出生日期不符!"    身份证信息校验 = -1    Exit FunctionEnd IfIf Trim(xbV) <> "" Then    Select Case Val(Mid(sfzhV, 17, 1)) Mod 2    Case 0        If Trim(xbV) <> "女" Then            errorV = "身份证号码与所输入的性别不符!"            身份证信息校验 = -1            Exit Function        End If    Case 1        If Trim(xbV) <> "男" Then            errorV = "身份证号码与所输入的性别不符!"            身份证信息校验 = -1            Exit Function        End If    End SelectEnd If身份证信息校验 = 0End Function


 

0 0
原创粉丝点击