实验4.8 编一程序,对给定位数的数据,产生检验位。
计算机进行数据处理中,关键字段值的正确与否对系统的运行起了很大作用。例如,在高校招生中,准考证号是表示考生的关键字。为了正确地判断准考证号输入的正确性,将7位数的准考证号在其前面加一检验位,构成有检验位的8位准考证号。现假定产生检验位的公式为:
a=( )mod 10
其中:a为检验位,di为第i位的数。
例如,某准考证号为:2573548,则检验位为:
a=(8*1+5*2+4*3+3*4+7*5+5*6+2*7)mod 10=1
具有检验位的的准考证号为:12573458
本程序要求:
1.输入7位数的准考证号,单击“产生”按钮,产生对应具有检验位的8位数的准考证号,并在标签显示,界面如图所示。当输入非7位数字,显示出错信息,如图2所示,清除输入的内容,重新输入。
2.输入具有检验位的8位数的准考证号,单击“检验”按钮,检验输入的准考证号正确与否。同样,当输入非8位数字,显示出出错信息,清除输入的内容,重新输入。
3.单击“清除”按钮,清除输入文本框的内容。
Private Sub cmdClear_Click() '#清空内容
txtNumber.Text = ""
txtNumberCheck.Text = ""
End Sub
Private Sub cmdGenerate_Click()
strNumber = txtNumber.Text
'********************检测长度是否为7****************
If Len(Trim(strNumber)) <> 7 Then
MsgBox "准考证号输入错误,请重新输入"
txtNumber.Text = ""
Exit Sub
End If
'********************检测是否全部为数字****************
Dim oRegExp
Set oRegExp = CreateObject("VBscript.RegExp")
oRegExp.IgnoreCase = True
oRegExp.Global = True
oRegExp.Pattern = "[0-9]{7}"
If Not oRegExp.Test(strNumber) Then
MsgBox "准考证号输入错误,请重新输入"
txtNumber.Text = ""
Exit Sub
End If
'********************生成校验码****************
CheckSum = 0
For i = 1 To 7
CheckSum = CheckSum + CInt(Mid(strNumber, 8 - i, 1)) * i
Next
CheckNum = CheckSum Mod 10
txtNumberCheck.Text = CStr(CheckNum) & strNumber
End Sub
Private Sub cmdCheck_Click()
strNumberCheck = txtNumberCheck.Text
'********************检测长度是否为8****************
If Len(Trim(strNumberCheck)) <> 8 Then
MsgBox "准考证号输入错误,请重新输入"
txtNumberCheck.Text = ""
Exit Sub
End If
'********************检测是否全部为数字****************
Dim oRegExp
Set oRegExp = CreateObject("VBscript.RegExp")
oRegExp.IgnoreCase = True
oRegExp.Global = True
oRegExp.Pattern = "[0-9]{8}"
If Not oRegExp.Test(strNumberCheck) Then
MsgBox "准考证号输入错误,请重新输入"
txtNumberCheck.Text = ""
Exit Sub
End If
MsgBox "校验成功"
End Sub