由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:
在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。
代码中使用到的字符串函数及功能说明如下:(1)Len(s):获取字符串s的长度;(2)Left(s,1):返回字符串s左端长度为1的子串;(3)Right(s,1):返回字符串s右端长度为1的子串;(4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。
Private Sub Commandl_Click()
D.im code As String
D.im S As Integer
code = Textl. Text '提取15位身份证号码
If Len(code) < > 15 Then
MsgBox "ID 号码长度不正确,请检查!"(1)
E.nd If
code = Left(code, 6) + "19" + (2) (code, 9) '年份升位
S=0
F.or i = 18 To 2 Step -1 '计算校验码和
S = S + Clnf((3)) * (2 ^ (i - 1) Mod11)
Next i(4) '计算校验码值
Select Case S '确定校验码
C.ase 0: code = code + "1"
C.ase 1: code = code + "0"
C.ase 2: code = code + "X"
C.ase Else: code = code + CStr((5))
E.nd Select
Text2. Text = code '显示18位身份证号码
E.nd Sub