15位身份证号转换18位VB程序代码

RT
要求输入一个15位身份证号可以转换为18位的,最后一位随机数要按照ISO 7064:1983.MOD 11-2校验码的计算方法来做。
需要VB代码!
万分感谢!
如果做出会加分至200分!
对於最后一位数字的计算方法查找结果如下:拜托各位啦~ 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2.将这17位数字和系数相乘的结果相加。 3.用加出来和除以11,看余数是多少? 4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。

第1个回答  推荐于2016-01-12
设text1用来输入15位身份证,text2用来输出18位身份证,command1按钮开始转换:
Private Sub Command1_Click()
Dim t As Long, s As String
If Len(Text1.Text) <> 15 Then
MsgBox "请输入15位身份证号!"
Exit Sub
End If
If Not IsNumeric(Text1.Text) Then
MsgBox "请输入数字"
Exit Sub
End If
If Val(Mid(Text1.Text, 9, 2)) > 12 Or Val(Mid(Text1.Text, 9, 2)) = 0 Or _
Val(Mid(Text1.Text, 11, 2)) > 31 Or Val(Mid(Text1.Text, 9, 2)) = 0 Then
MsgBox "身份证格式错误"
Exit Sub
End If
t = (Val(Mid(Text1.Text, 1, 1)) * 7 + Val(Mid(Text1.Text, 2, 1)) * 9 + _
Val(Mid(Text1.Text, 3, 1)) * 10 + Val(Mid(Text1.Text, 4, 1)) * 5 + _
Val(Mid(Text1.Text, 5, 1)) * 8 + Val(Mid(Text1.Text, 6, 1)) * 4 + _
Val(Mid(Text1.Text, 7, 1)) * 6 + Val(Mid(Text1.Text, 8, 1)) * 3 + _
Val(Mid(Text1.Text, 9, 1)) * 7 + Val(Mid(Text1.Text, 10, 1)) * 9 + _
Val(Mid(Text1.Text, 11, 1)) * 10 + Val(Mid(Text1.Text, 12, 1)) * 5 + _
Val(Mid(Text1.Text, 13, 1)) * 8 + Val(Mid(Text1.Text, 14, 1)) * 4 + _
Val(Mid(Text1.Text, 15, 1)) * 2 + 1 * 2 + 9 * 1) Mod 11
s = Mid("10X98765432", t + 1, 1)
Text2.Text = Mid(Text1.Text, 1, 6) + "19" + Mid(Text1.Text, 7, 9) + s
End Sub

注:这里转换的身份证号都是2000年以前的,估计2000年以后的身份证没有15位的了吧!本回答被提问者采纳
第2个回答  2008-04-15
我知道15位转化18位,最后随机的....
你的要求太难了...
等待高手~~
第3个回答  2008-04-15
ISO 7064:1983.MOD 11-2校验码
具体点
是什么啊
相似回答