
VB编写的身份证号识别程序代码
5星
- 浏览量: 0
- 大小:None
- 文件类型:RAR
简介:
这段代码使用Visual Basic语言编写,功能为读取和解析中国公民的身份号码信息。它能够帮助用户快速地获取身份证上的关键数据,并进行有效的身份验证。
在VB(Visual Basic)开发中实现身份证号码的识别是一个常见的需求,主要用于验证该号码的有效性。18位的中国居民身份证包含了个人出生日期、性别及户籍所在地等信息,并通过校验码确保其正确性和合法性。
为了在VB中编写一个有效的身份证号检查程序,首先需要了解这些数字的基本结构和规则:包括由6个地址编码(地区代码)、8个表示出生年月日的数字、3位顺序编号以及1位用于验证整个号码准确性的校验码组成。其中,前六位代表持证人的户籍所在地;第七到第十四位表示其出生日期;接下来三位是区分同一天内不同个体的编码,并且奇数分配给男性,偶数则对应女性身份。
下面给出一个简单的VB函数来验证身份证号码的有效性:
```vb
Function IsIdCardValid(idCard As String) As Boolean
If Len(idCard) <> 18 Then
Return False 身份证长度不为18位,则非法。
End If
Dim sum As Integer, weight(0 To 17) As Integer
weight = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8 ,4 ,2)
For i = 0 To Len(idCard) -1
sum += CInt(Mid(idCard,i+1 ,1)) * weight(i)
Next
Dim checkCode As String = 10X98765432
If Mid(checkCode,sum Mod 11 + 1, 1) <> idCard.Substring(17, 1) Then
Return False 校验码错误。
End If
Dim year As Integer = CInt(Mid(idCard ,7 ,4))
Dim month As Integer = CInt(Mid(idCard ,11,2))
Dim day As Integer = CInt(Mid(idCard ,13,2))
If (year < 1900) OrElse ((year >= 2000 And year < 2022)) Then
Return False 年份超出有效范围。
End If
If month < 1 OrElse month > 12 Then
Return False 月份超出有效范围。
End If
If day < 1 OrElse day > 31 Then
Return False 天数超出有效范围。
End If
Select Case month
Case 2 : If (day> ((year Mod 4 =0 And (year Mod 100 <>0 Or year Mod 400=0)) ?29:28) ) Return False
Case 4,6,9,11 :If day >30 Then Return False
End Select
Return True 所有检查通过,身份证号码合法。
End Function
```
此函数首先检验输入的字符串长度是否为18位;接着根据特定权重计算出校验码并与其进行比对。然后验证年、月和日的有效性(包括处理闰年的2月份)。如果所有条件都满足,则该身份证号被认为是有效的。
在实际的应用场景中,可以调用上述函数来检查用户输入的身份证号码是否有效:
```vb
Dim id As String = 110105199001011234
If IsIdCardValid(id) Then
MsgBox(身份证号码合法)
Else
MsgBox(身份证号码非法)
End If
```
通过这种方式,可以在VB项目中有效地实现对用户输入的中国居民身份证号进行验证的功能。
全部评论 (0)


