下面是小编收集整理的如何利用Visual?Basic开发身份证号码批量验证工具软件,本文共3篇,供大家参考借鉴,希望可以帮助到有需要的朋友。

篇1:如何利用Visual Basic开发身份证号码批量验证工具软件
如何利用Visual Basic开发身份证号码批量验证工具软件
如何利用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-
《公民身份号码》中的规定完成。
(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)绿色免安装、小巧。
(甘肃省通渭县第二中学)
篇2:基于Visual Basic快速开发现场电视监控系统
基于Visual Basic快速开发现场电视监控系统
基于Visual Basic快速开发现场电视监控系统中国科技大学 郑豪杰金西 蒋宗洲合肥华恒网络技术有限技术公司 黄汪摘要: 本文介绍了一种用Visual Basic快速开发现场电视实时监控系统的方法,该方法简单方便、成本低廉,具有一定的实用价值。实时监控系统投入使用可有效地提高电视台或交通部门的工作效率。
关键词:VB电视监控系统ActiveX
随着电视监视器材、计算机技术的日益发展,图形监视系统在电视系统或监控场所得到了广泛地应用。用图形来实时显示被控对象(摄像机、终端设备等)在操作过程中的状态,具有清晰明了、形象直观且可以及时处理反馈信息。它比数字仪表包含的信息量大得多,因此使现场监控人员的工作方式得到了改进,效率也由此得到了很大的提高。
现场电视监控系统由实时控制系统、监视系统及管理信息系统组成。实时控制系统完成实时数据采集处理、存储、反馈的功能;监视系统完成对各个监控点的全天候的监视,能在多操作控制点上自动或手动切换多路图像,能遥控前端设备,能使摄像镜头自动对焦等;管理信息系统完成各类所需信息的采集、接收、传输、加工、处理,是整个系统的控制核心。
目前的图形实时监控软件通常用VC或VC++开发,它对软件开发人员要求很高,而且开发周期较长,开发难度也偏大。如果利用Visual Basic(VB)来开发有关的监控系统,就能较好地解决上述问题。
1设计思路与技术路线
由于Visual Basic在界面制作上的优越性,我们采用Visual Basic来进行系统的快速开发。本系统必须对硬件进行实时监视控制,从而实现监控功能。要利用VB来开发就必须先解决VB不能直接访问低层硬件的问题,也就是要提出用VB访问低层硬件的解决方案。我们为本系统确定了下列设计方案:让VB去调用DLL文件,再让DLL去调用VxD文件,通过VxD文件实现对低层硬件的实时控制,再通过写并行端口实现硬件电路的切换。这样,即克服了VB不能直接访问低层硬件缺点,又发挥了VB在界面和开发速度上的优点。本系统主控模块如图1所示。主控模块是监视中心的主界面,它分为手动模块、自动模块、退出模块三个子模块。手动子模块又分为键盘控制和鼠标控制,主要为了监控中心人员灵活的手动控制各个监控点;自动子模块又分为打开通道、增加一项、设置时间、更改名称、删除一项、关闭通道,主要为了监控中心人员方便的自动控制各个监控点,遥控远端设备。
图1系统结构图
2功能简介
(1)监控硬件是通过写计算机的并行端口来实现,VB通过调用DLL向并行端口写入8bit的定位信息,本系统采用四个通道并行监控控制点,各通道互不影响。由后端硬件电路根据这8bit的定位信息判断哪个端口的哪个摄像机(监控点)被选中,现场电视监控系统服务器接通被选中的摄像机所对应的门电路。同时在监控中心实时的反映出来。
(2)系统提供了手动控制和自动控制二种方式。
①自动控制:实现对各个摄像机(监控点)的循环监控。对正在监控摄像机(监控点)进行计时,达到此摄像机(监控点)预定时间时,去调用自动切换子程序完成切换功能,从而使系统按照监控中心人员预先设定的.监控顺序自动循环切换。监控中心人员可选择监控的摄像机序列,在自动监控状态下加载后,可以动态的增加、删除摄像机,改变播出时间和顺序。
②手动控制:实现对各个摄像机(监控点)的手动监控。由于工作需要,有时需要固定在某个摄像机(监控点)长时间不间断地监控,本系统提供了手动控制很好的满足了这个需要。当系统处于手动状态时,监控中心人员可以通过主窗口的手动按钮,或使用键盘数字键选择哪个通道监控哪一台摄像机。选中后,该通道就固定监控此摄像机(监控点),直到手动选择另一个摄像机(监控点)时,才调用手动切换子程序完成切换功能。
(3)系统界面采用VB6.0中的Listview控件,此控件具有SmallIcon、LargeIcon、List、Report四种显示方式,从而达到用户界面友好的效果。图2是在Report显示方式下的监控中心主界面。
图2 现场电视监控系统
3.系统的实现
3.1VB访问低层硬件的实现
支持低层硬件访问的DLL文件和ActiveX控 件,通过它们可读写存储器单元、端口,甚至控制硬件中断。本系统利用DLL实现访问低层,详见图3所示。
图4低层硬件访问示意图
3.2系统中对播放序列存储的实现
由于本系统涉及的摄像机为16台,数量不算太多,可不采用数据库存储,而巧妙地选用随机文件(*.dat)的方式进行存储,可大大提高响应的速度。
表1随机文件格式表
域名用途长度(Byte) Name 存储摄像机名称 10 ID 存储摄像机编号(唯一) 2 Time 存储摄像机播放时间 53.3写并行端口的程序实现
ID域为16×4个摄像机各自唯一的编号,按编号控制门电路的接通与断开。
表2 8bit定位信息取值与通道对照表
通道高位(HEX)低位(HEX) A 0 0---A B 1 0---A C 2 0---A D 3 0---A表2中通道列中的A、B、C、D分别对应A、B、C、D四个通道,高位(HEX)列只要用二进制的低六位即可完成控制功能。编写函数WriteToPort向并口中写入8位的二进制数,部分关键源程序如下:
Public Sub WriteToPort(Addr As String, ValPort As String) ' CW As CheckBox)
Dim Nomw As Integer, DatW As Integer
' If CW.Value = Checked Then
'Nomw = HexToInt(Addr.Text)
Nomw = HexToInt(Addr)
DatW = HexToInt(ValPort)
' Write one byte to the port
Call SetPortByte(HW32, Nomw, DatW)
' End If
End Sub
4.结束语
本文介绍的现场电视实时监控系统由于采用了随机文件存储写并口的信息,巧妙地解决了VB对低层硬件读写的问题,大大提高了系统运行速度。本系统投入使用后,经过一段时间的运行测试和使用,证明其性能稳定、运行可靠、各项监测精度符合要求,并具有操作简单方便的特点。同时,这项技术可以大大缩短实时监控程序的开发周期,减少程序员的工作量,
适用于电视台节目的实时监控和交通路口的实时监控。
参考文献
1. Microsoft公司著,希望图书创造室译.Visual Basic6.0组件工具指南.北京:北京希望电子出版社,1999
2. Microsoft公司著,希望图书创造室译.Visual Basic6.0中文版程序员指南.北京:北京希望电子出版社,
篇3:用Visual Basic 5.0开发无线通讯数据采集应用程序
用Visual Basic 5.0开发无线通讯数据采集应用程序
摘要:本文通过对无线通讯系统基本工作原理的分析,阐明了采用Visual Basic 5.0中的控件MSCOMM.VBX进行无线数据采集程序开发的基本方法。并结合900M频率无线通讯电台的特点,给出了基本通讯接口源程序代码。关键词: VB5 无线通讯 控件
1 引言
目前对于用于数据采集和传输的无线设备之间的通讯编程,一般仍采用C语言和汇编语言较多,这主要是由于在编程时,要涉及到对无线通讯设备硬件的控制,因此,选择C语言和汇编语言的较多。采用以上两种语言进行编程,对于一般的编程人员来讲,很难较快的掌握。本文采用可视化的编程环境从根本上解决了以上问题,只要有一定编程基础的技术人员,均可实现自己编程。
2 无线通讯设备的基本工作原理
在无线的通讯方式中,数据传输的基本原理可以认为是通过调制解调器进行工作的,而这种调制解调器是无线方式工作的,它不含有拨号功能,而且和它直接连接的是无线电台。无线电台的作用就相当于有线传输中的电话线,它是通过无线电波进行发送和接受信号的。而无线调制解调器的作用是将二进制的信号调制成可以在无线电台之间传输的无线电波。
信号转换过程的属性取决于调制解调器所接收到的源信号和目的信号。一般来说,调制解调器从终端或计算机接以串行方式收到二进制信号后,将它们转换成了音频信号。然后调制解调器将这些声音通过无线电台传输出去。在接受端,另一个兼容的调制解调器将这些声音信号转换成了二进制信号,并把这些二进制信号发送给终端或计算机。
由于在无线电台之间有过滤和放大作用,同时,无线电波的`传输受很多因素影响,因此传送的速度受到限制。下面给出了一种900M电台的技术特性见表 1。本程序就是使用的这种电台,对于其它参数的电台,其基本原理也是一样的。
表 1 900M无线电台的技术指标
项目
指标
含义
传输速率
1.2Kbps或2.4Kbps
每秒的字节数
数据的控制
透明传输
发射功率
3W
接受灵敏度
-105dBm
工作频率
915―917MHZ
信道
158个
3 无线数据采集的编程
由无线通讯的基本原理可以看出,无线的数据采集和传输主要包括以下几个过程,从带处理器的传感器或计算机终端发送二进制信号到无线调制解调器;无线电台之间建立连接并传输数据;从另外一端的电台接受二进制数据;将数据传输到计算机。因此,要建立无线设备之间的通讯必须在两端进行编程。
从计算机终端到无线电台的数据传输是通过计算机的串行口进行的,通过对串行口进行编程就可以实现向电台发送数据。在Visual Basic5.0中的控件MSCOMM是进行串口通讯的。通过设定控件MSCOMM的属性,可以用VB5.0对其进行灵活的编程,控件MSCOMM同时支持事件驱动及轮询方法。控件MSCOMM能生成一个名为OnComm的事件,它能能捕获的事件范围包括通过串口接受数据以及遇到任何错误等等。事件或错误的值以整数的形式保存在CommEvent属性里。可根据CommEvent属性判断最近一次事件或错误。也可以在程序中设置一个循环,每次循环都直接检查CommEvent属性的值,从而对事件及错误进行“轮询”。如果应用程序规模小,这种方法相当完美。
下面的部分程序代码是计算机和900M无线电台之间的传输程序,本程序已经在486计算机和PII586上调试通过。
1 从串口读入电台数据程序GetStringFromComm()
功能:(1) 主要完成从端口获得数据,将二进制的数据转换为ASCII码数据
Public Function GetStringFromComm() As String
定义变量(略)
If frmTerminal.MSComm1.InBufferCount < 7 Then
GetStringFromComm = ”"
Exit Function
End If
'//读入标志码
frmTerminal.MSComm1.InputLen = 6
ReDim Preserve BinDataarr(6) As Byte
BinData = frmTerminal.MSComm1.Input
BinDataarr = BinData
UserDataLenth = BinDataarr(5) '用户数据的长度
Wait1:
If BinDataarr(5) > frmTerminal.MSComm1.InBufferCount Then '未接受完数据
delay 6 '延时6s
GoTo Wait1
End If
frmTerminal.MSComm1.InputLen = UserDataLenth
BinData = frmTerminal.MSComm1.Input
ReDim Preserve BinDataarr(UserDataLenth)
&nbs
p;BinDataarr = BinData
GetStringFromComm = BinTotext(UserDataLenth, 0)
frmTerminal.MSComm1.InBufferCount = 0 '清空接受缓冲区
End Function
2 从串口向电台发送数据程序SendStringToComm()
Public Sub SendStringToComm(ByVal TransCommand As Integer, ByVal TransString As String)
ReDim BinDataarr(5)
frmTerminal.MSComm1.OutBufferCount = 0 '//清空发送缓冲区
'TransString = makestring(Val(mc.txtdesstation.Text), 4) + TransString
'//设置标志码
(略)
Select Case TransCommand
Case 0:transmit text
ReDim Preserve BinDataarr(6 + Len(TransString))
TextTobin (TransString)
BinData = BinDataarr
frmTerminal.MSComm1.Output = BinData '发送
Case 1:transmit binary data
ReDim Preserve BinDataArr(5 + Len(TransString) + UserDataLenth) As Byte
TextTobin (TransString)
BinDataArr(5) = UserDataLenth + Len(TransString)
Dim i As Integer
For i = 1 To UserDataLenth
BinDataArr(5 + Len(TransString) + i) = userDataarr(i - 1)
Next i
BinData = BinDataArr
MSComm1.Output = BinData
End Select
binDatalenth = 0
End Sub
以上的两个子程序是在实现无线传输的基本程序,如果要实现无线设备两端的数据采集,需要在此基础上进行文件格式、控制命令、编码方式等的编程,这些编程均可通过Visual Basic5.0实现,由于篇幅所限,本文对这部分内容不作详细叙述。
4结论和讨论
通过以上的实例编程可以得出,采用Visual Basic5.0对无线数据采集和传输进行编程,具有可视化、容易掌握、灵活性好,尤其串口控件MSCOMM的属性功能齐全,完全可以控制串行口实现各种功能。通过Visual Basic5.0编写的程序具有界面友好,操作方便,且编程过程简单。本文仅在数据采集方面应用了Visual Basic5.0,在其他的通讯方面,它还有更大的应用。例如在终端防真程序,在电子邮件和互连网等方面也有较大的应用。
参考文献:
1、微软公司《Visual basic5.0 联机手册》
2、南开大学出版社《微型计算机接口技术》
3、人民邮电出版社《无线通讯信息手册》
4、中国科学院希望电脑技术公司《计算机通讯与联网技术》
文档为doc格式