当前位置: 3j3j范文 > 理工论文 > 计算机信息技术 > 正文

如何利用Visual Basic开发身份证号码批量验证工具软件

2013-12-27 19:20来源:www.3j3j.com 点击:
  如何利用Visual Basic开发身份证号码批量验证工具软件
  
  作者/刘小龙
  
  通过对身份证号码实际应用中存在的问题进行详细分析,我们发现每学年的学籍建档、国家助学金申报等方面都离不开身份证号码。同时,人工核对信息工作量大,也易出错,势必对工作造成一定的影响。为此,我们运用大学学习的一些VB知识,根据身份证号码编码规则编写了《身份证号码批量验证工具》软件,使身份证号码核对工作变得简单、轻松。
  
  一、软件的设计步骤
  
  二、软件详细设计
  
  1. 解决方案与软件特色
  
  本程序使用VB在Windows XP环境开发,解决了身份证号码验证过程中存在的易出错、工作量大的问题,支持Excel文件批量验证及信息追加,绿色免安装、小巧、实用性强。
  
  2. 具体设计
  
  下面就根据软件的操作流程图进行介绍软件的功能和实现原理:
  
  (1)操作流程图。
  
  参数设置说明:身份证号码、性别、出生年月所在列均以阿拉伯数字表示,性别、出生年月信息的追加属于项。
  
  (2)身份证号码校验值计算函数代码。
  
  Public Function sfzjym(num As String) As String
  
  Dim n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,y,s As Integer
  
  n1=Val(Mid$(num,1,1))*7
  
  n2=Val(Mid$(num,2,1))*9
  
  n3=Val(Mid$(num,3,1))*10
  
  n4=Val(Mid$(num,4,1))*5
  
  n5=Val(Mid$(num,5,1))*8
  
  n6=Val(Mid$(num,6,1))*4
  
  n7=Val(Mid$(num,7,1))*2
  
  n8=Val(Mid$(num,8,1))*1
  
  n9=Val(Mid$(num,9,1))*6
  
  n10=Val(Mid$(num,10,1))*3
  
  n11=Val(Mid$(num,11,1))*7
  
  n12=Val(Mid$(num,12,1))*9
  
  n13=Val(Mid$(num,13,1))*10
  
  n14=Val(Mid$(num,14,1))*5
  
  n15=Val(Mid$(num,15,1))*8
  
  n16=Val(Mid$(num,16,1))*4
  
  n17=Val(Mid$(num,17,1))*2
  
  y=n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+n13+n14+n15+n16+n17
  
  s=y Mod 11
  
  Select Cases
  
  Case 0
  
  sfzjym=“1”
  
  Case 1
  
  sfzjym=“0”
  
  Case 2
  
  sfzjym=“X”
  
  Case 3
  
  sfzjym=“9”
  
  Case 4
  
  sfzjym=“8”
  
  Case 5
  
  sfzjym=“7”
  
  Case 6
  
  sfzjym=“6”
  
  Case 7
  
  sfzjym=“5”
  
  Case 8
  
  sfzjym=“4”
  
  Case 9
  
  sfzjym=“3”
  
  Case 10
  
  sfzjym=“2”
  
  End Select
  
  End Function
  
  函数参数为18位身份证号码,返回值为身份证号码的校验值,即身份证号码最后一位,整个计算过程严格按照GB11643-1999
  
  《公民身份号码》中的规定完成。
  
  (3)验证代码。
  
  Private Sub yz_Click()
  
  On Error GoTo errh
  
  Dim app As Excel.Application
  
  Dim appworkbook As Workbook
  
  Dim appworksheet As Worksheet
  
  Dim hs1 As Integer,hs2 As Integer,err As Integer
  
  Dim adr As String,sfzbh As String
  
  err=0
  
  dkdhk.Action=1
  
  adr$=Mid$(dkdhk.InitDir &“\”& dkdhk.FileName, 2, Len(dkdhk.InitDir & “\” & dkdhk.FileName) - 1)
  
  Set app=New Excel.Application
  
  Set appworkbook=app.Workbooks.Open(adr$)
  
  Set appworksheet=appworkbook.Sheets(1)
  
  Do While appworksheet.Cells(2,1)<> “”
  
  hs1=hs1+1
  
  Loop
  
  jc.Max=hs1
  
  For hs2=2 To hs1+1
  
  sfzbh$=appworksheet.Cells(hs2, Val(l1.Text))
  
  If Mid$(sfzbh$,18,1)=“x"”Then
  
  appworksheet.Cells(hs2,Val(l1.Text))=Mid$(sfzbh$,1,17) & “X”
  
  sfzbh$=Mid$(sfzbh$,1,17) & “X”
  
  End If
  
  If Len(sfzbh$)<>18 Then
  
  err=err+1
  
  appworksheet.Cells(hs2,Val(l1.Text))=“不够18位” & sfzbh$
  
  appworksheet.Cells(hs2,Val(l1.Text))。Font.ColorIndex=3
  
  Else
  
  If Mid$(sfzbh$,18,1)<>sfzjym(sfzbh$) Then
  
  err=err+1
  
  appworksheet.Cells(hs2,Val(l1.Text))=“校验码错误” & sfzbh$
  
  appworksheet.Cells(hs2,Val(l1.Text))。Font.ColorIndex=3
  
  Else
  
  If jz1.Value=1 Then
  
  If Mid$(sfzbh$,17,1) Mod 2=1 Then
  
  appworksheet.Cells(hs2,Val(xb.Text))=“男”
  
  Else
  
  appworksheet.Cells(hs2,Val(xb.Text))=“女”
  
  End If
  
  End If
  
  If jz2.Value=1 Then
  
  appworksheet.Cells(hs2,Val(csny.Text))=Mid$(sfzbh$,7,4) & “-”& Mid$(sfzbh$,11,2) & “-” & Mid$(sfzbh$,13,2)
  
  End If
  
  End If
  
  End If
  
  jc.Value=hs2-2
  
  Next hs2
  
  “MsgBox ”数据验证完成,到文件中查看验证结果“& ”(共验证“& hs1 &”条记录,发现“& err &”处身份证错误信息)“,48,”
  
  提示
  
  app.Visible=True
  
  errh:
  
  End Sub
  
  (4)验证代码需要完成的任务。
  
  ①判断身份证号码所在列参数填写是否正确;②判断是否追加性别、出生年月及所在列参数;③读取Excel文件中的身份证号码,根据调用计算身份证号码校验码sfzjym函数判断身份证号码是否正确;④对正确的身份证号码自动校正小写x为大写X;⑤给Excel文件反馈判断信息及错误原因,若选择追加性别、出生年月选项,将对正确的身份证号码相关记录添加性别、出生年月;⑥弹窗提示验证信息量与错误信息量,并自动打开验证的Excel文件。
  
  三、程序所体现特点与应用性
  
  因日常工作中存在着身份证号码大量核对带来的各种问题,经过详细的分析和研究,提出了开发《身份证号码批量验证工具》程序的想法。程序经过反反复复的严格测试,完全能够胜任身份证号码批量验证这一工作,充分体现在下面几点:(1)实用性强,支持对Excel数据的批量验证与信息自动追加;(2)整个操作过程简单、易懂、工作量小;(3)对错误信息有准确的、详细的提示信息,方便二次修正;(4)绿色免安装、小巧。
  
  (甘肃省通渭县第二中学)
编辑:admin 作者:
上一篇:中小企业网络安全问题与采用策略研究 下一篇:基于CNS3与Wi eshark虚拟路由交换实验平台的搭建
------分隔线----------------------------