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

2013-12-27 19:20来源:www.lorgie.com 点击:
  如何利用Visual Basic开发身份证号码批量验证工具软件
  
  作者/刘小龙
  
  通过对身份证号码实际应用中存在的问题进行详细分析,我们发现每学年的学籍建档、国家助学金申报等方面都离不开身份证号码。同时,人工核对信息工作量大,也易出错,势必对工作造成一定的影响。为此,我们运用大学学习的一些VB知识,根据身份证号码编码规则编写了《身份证号码批量验证工具》软件,使身份证号码核对工作变得简单、轻松。
  
  一、软件的设计步骤
  
  二、软件详细设计
  
  1. 解决方案与软件特色
  
  本程序使用VB在Windows XP环境开发,北京pk10模式新凤凰:解决了身份证号码验证过程中存在的易出错、工作量大的问题,支持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规律6码
北京赛车pk10软件 pk10软件计划网页版 北京pk10走势图彩票控 北京pk10计划软件手机版 北京赛车pk10全天计划
北京pk10开奖结果查询 pk10开奖皇家 北京赛车pk10盈利方法 北京pk10猜冠军技巧 北京赛车pk10计划软件最新版
1396pk10开奖直播 北京赛车pk10规律6码 北京pk10技巧上鼎狐网 北京pk10一比分官网 北京赛车pk10冠军单吊
体彩超级大乐透玩法 大乐透ncwdy 十一选五开奖 双色球开奖结果今天 湖北新11选5走势图
澳门赌场招聘 幸运28俱乐部 江苏11选5走势图 基本走势 老挝磨丁赌场 大乐透走势图
大乐透五行走势图 排列三试机号今天 欢乐麻将连连看 幸运赛车 快乐十分直播
双色球140期 天津时时彩 二八杠游戏下载 河北11选5走势图 手机投注