刚学VB没多久
研究了一下身份z的验证
也参考了网上一些资料
希望帮看看有什么不足
Private Function 身份z信息校验(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'/**************************************'***校验身份z是否合法***''身份z校验:1.出生日期 csrqV' 2.性别 xbV'入口参数:' 1.sfzhV 身份z号' 2.csrqV 出生日期' 3.xbV 性别'出口参数:' 1.errorV 错误信息'返回值: 身份z信息校验=0 为校验通过' 身份z信息校验<>0 校验不通过''1.当csrqV = "",xbV = ""时,只校验身份z出生' 日期是否符合日期格式要求'2.当csrqV<> ""或xbV <> ""时,同时校验' 出生日期或性别是否跟身份z相符''/***************************************'身份z校验系数:'从第一位到第十七位的系数分别为:'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'校验身份z位数If Len(Trim(sfzhV)) <> 18 Then errorV = "身份z位数不对!" 身份z信息校验 = -1 Exit FunctionEnd IfsumV = 0'身份z号码按位与身份z校验系数相乘,并将所有积相加。For i = 0 To 17 sumV = sumV + Val(MID(sfzhV,i + 1,1)) * xsV(i)Next'对sumV/11 取模modV = sumV Mod 11'余数对应身份z最后一位'其分别对应的最后一位身份z的号码为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 = "身份z号不合法!" 身份z信息校验 = -1 Exit FunctionEnd IfIf Trim(csrqV) <> "" And Trim(csrqV) <> MID(sfzhV,7,8) Then errorV = "身份z号码与所输入的出生日期不符!" 身份z信息校验 = -1 Exit FunctionEnd IfIf Trim(xbV) <> "" Then Select Case Val(MID(sfzhV,17,1)) Mod 2 Case 0 If Trim(xbV) <> "女" Then errorV = "身份z号码与所输入的性别不符!" 身份z信息校验 = -1 Exit Function End If Case 1 If Trim(xbV) <> "男" Then errorV = "身份z号码与所输入的性别不符!" 身份z信息校验 = -1 Exit Function End If End SelectEnd If身份z信息校验 = 0End Function总结
以上是内存溢出为你收集整理的VB身份z验证全部内容,希望文章能够帮你解决VB身份z验证所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)