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

2013-12-27 19:20来源:www.lorgie.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虚拟路由交换实验平台的搭建
------分隔线----------------------------
北京赛车pk10历史记录苹果直播 北京赛车pk10分析技巧玩法 北京赛车pk10开户网站是什么 北京赛车pk10手机直播苹果 北京pk10赛车历史纪录
北京pk10投注平台 360北京pk10开奖 北京赛车pk10投注 北京pk10网上骗局新闻 pk10数字走势三角走势
pk10论坛 北京赛车pk10代理流水 北京pk10骗局陷井 北京赛车pk10开奖直播, 北京pk10计划软件高手428000君羊
北京pk10开奖记录结果 pk10杀号技巧 北京pk10有隐赚方法吗 北京赛车pk10外围赔率漏洞 pk10直播现场
三分彩计划网页版 辽宁十一选五基本走势图 福彩3d走试图 广西快3遗漏值 香港赛马会正版资料
快乐十分钟下载 双色球论坛 捕鱼达人安卓版 咒语中梭哈是什么意思 江苏十一选五最大遗漏数据一定牛
中国福彩网双色球 加拿大快乐8是真的 福彩时时乐 贵州十一选五走趋图 幸运28评测网
广西快乐双彩最新开奖 体彩开奖视直播 甘肃11选5任三推荐号码推荐 时时彩平台招总代理 排列五吧