51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 5439|回复: 2
打印 上一主题 下一主题

[Robot] 随机生成身份证号码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-21 10:06:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
'随机生成身份证号码
‘sex 返回性别01(男)00(女),indentitycode返回省份证号码
Function User_CreateIdentifyCard(byref Sex as string,byref IdentityCode as string)
    Dim AreaCode,Birthday,SequenceCode,CheckoutCode as string
    Dim upper,lower,randomvalue as integer
    Dim i,s,y,a(),w() as integer
    '产生随机的地址码,前两位固定为00,后四位随机
    AreaCode="00"
    lower=0
    upper=9999
    Randomize time()
    randomvalue=int((upper-lower+1)*Rnd+lower)
    AreaCode=AreaCode & cstr(Format(randomvalue,"0000"))
   
    redim a(1 to 17)
    redim w(1 to 17)
    '随机产生出生日期的年月日
    lower=1960
    upper=1985
    Randomize time()
    randomvalue=int((upper-lower+1)*Rnd+lower)
    Birthday=cstr(randomvalue)
    lower=1
    upper=12
    Randomize time()
    randomvalue=int((upper-lower+1)*Rnd+lower)
    Birthday=Birthday & cstr(Format(randomvalue,"00"))
    lower=1
    upper=28
    Randomize time()
    randomvalue=int((upper-lower+1)*Rnd+lower)
    Birthday=Birthday & cstr(Format(randomvalue,"00"))
    '随机产生3位顺序码,奇数的是男性,偶数的是女性
    lower=000
    upper=999
    Randomize time()
    randomvalue=int((upper-lower+1)*Rnd+lower)
    SequenceCode=cstr(Format(randomvalue,"000"))
    if (SequenceCode mod 2)=0 then
        Sex="00"
    else
        Sex="01"
    end if            
    '计算最后一位校验码 ,至于计算公式,可以google下
    a(1)=cint(mid(AreaCode,1,1))
    a(2)=cint(mid(AreaCode,2,1))
    a(3)=cint(mid(AreaCode,3,1))
    a(4)=cint(mid(AreaCode,4,1))
    a(5)=cint(mid(AreaCode,5,1))
    a(6)=cint(mid(AreaCode,6,1))
    a(7)=cint(mid(Birthday,1,1))
    a(8)=cint(mid(Birthday,2,1))
    a(9)=cint(mid(Birthday,3,1))
    a(10)=cint(mid(Birthday,4,1))
    a(11)=cint(mid(Birthday,5,1))
    a(12)=cint(mid(Birthday,6,1))
    a(13)=cint(mid(Birthday,7,1))
    a(14)=cint(mid(Birthday,8,1))
    a(15)=cint(mid(SequenceCode,1,1))
    a(16)=cint(mid(SequenceCode,2,1))
    a(17)=cint(mid(SequenceCode,3,1))
    w(1)=7
    w(2)=9
    w(3)=10
    w(4)=5
    w(5)=8
    w(6)=4
    w(7)=2
    w(8)=1
    w(9)=6
    w(10)=3
    w(11)=7
    w(12)=9
    w(13)=10
    w(14)=5
    w(15)=8
    w(16)=4
    w(17)=2
    s=0
    for i=1 to 17
        s=s+a(i)*w(i)
    next i
    y=s mod 11
    select case y
        case 0
            CheckoutCode="1"
        case 1
            CheckoutCode="0"
        case 2
            CheckoutCode="X"
        case 3
            CheckoutCode="9"
        case 4
            CheckoutCode="8"
        case 5
            CheckoutCode="7"
        case 6
            CheckoutCode="6"
        case 7
            CheckoutCode="5"
        case 8
            CheckoutCode="4"
        case 9
            CheckoutCode="3"
        case 10
            CheckoutCode="2"   
    end select
    IdentityCode=AreaCode & Birthday & SequenceCode & CheckoutCode                    
End Function

[ 本帖最后由 yangjingxiao 于 2006-4-21 22:13 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-4-21 21:16:03 | 只看该作者
如果旁边有解释就好
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-4-21 22:15:47 | 只看该作者
加了一点点注释,语法上的,可以看帮助
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-3 01:34 , Processed in 0.075362 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表