| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3194 人关注过本帖
标题:关于身份证验证系统的一点奇怪的问题。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用bccn201203在2012-9-25 20:46:27的发言:

字符串中必须有 R 及 r 才起作用

你再研究下这个函数
STREXTRACT( ) 函数
与ALINES()相比是不是相似

?StrExtract("abdcfhresdfjk", 'cf', 'sd', 1) = hre


梅尚程荀
马谭杨奚







                                                       
2012-09-25 21:17
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:17 
下面是身份证15位自动转换成18位的函数,也许会对楼主有点用。

PARAMETERS cSFZ15
cSFZ15 = ALLTRIM(cSFZ15)
IF LEN(cSFZ15)<>15 AND LENC(cSFZ15)<>15
    RETURN "不是15位身位证号码!"
ENDIF
    IF NOT CHRTRAN(cSFZ15,"1234567890","")==""
        RETURN "含有非数字,不是身份证号码!"
    ENDIF
    cSFZ17 = STUFF(cSFZ15,7,0,'19')
    cBy17='7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'
    cCheck='10X98765432'
    nCheck=0
    FOR nCnt=1 TO 17
        nCheck=nCheck+VAL(SUBSTR(cSFZ17,nCnt,1))*VAL(GETWORDNUM(cBy17,nCnt,','))
    NEXT
    RETURN cSFZ17+SUBSTR(cCheck,nCheck%11+1,1)
ENDIF


活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-09-25 21:32
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用hu9jj在2012-9-25 21:32:21的发言:

下面是身份证15位自动转换成18位的函数,也许会对楼主有点用。

PARAMETERS cSFZ15
cSFZ15 = ALLTRIM(cSFZ15)
IF LEN(cSFZ15)<>15 AND LENC(cSFZ15)<>15
    RETURN "不是15位身位证号码!"
ENDIF
    IF NOT CHRTRAN(cSFZ15,"1234567890","")==""
        RETURN "含有非数字,不是身份证号码!"
    ENDIF
    cSFZ17 = STUFF(cSFZ15,7,0,'19')
    cBy17='7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'
    cCheck='10X98765432'
    nCheck=0
    FOR nCnt=1 TO 17
        nCheck=nCheck+VAL(SUBSTR(cSFZ17,nCnt,1))*VAL(GETWORDNUM(cBy17,nCnt,','))
    NEXT
    RETURN cSFZ17+SUBSTR(cCheck,nCheck%11+1,1)
ENDIF

呵呵 谢谢H版热心帮忙 。。。
看你的代码很舒服啊 学到一个函数stuff() 用起来比较简洁 我以前是搞 left() + '19' + sbustr() 感觉没你的简洁啊  不过不等号 我喜欢用 #

梅尚程荀
马谭杨奚







                                                       
2012-09-25 21:37
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:17 
2013.01.01起,15位身份证停止使用。
这段代码在低版本VFP中不能运行。


[ 本帖最后由 bccn201203 于 2012-9-25 22:42 编辑 ]
2012-09-25 22:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:17 
程序代码:
*- 04 -第18位校验码验证
J=[0709100508040201060307091005080402]
*   Y值:012345678910 
校验码=[10X98765432]
LOCAL NUM,CTITLE
NUM=0
CTITLE=[]
FOR I=1 TO 17
    NUM=NUM+VAL(SUBSTR(J,I*2-1,2))*VAL(SUBSTR(SFZH,I,1))
ENDFOR
CTITLE=[第18位校验码为【]+SUBSTR(校验码,MOD(NUM,11)+1,1)+[】,与身份证校验码]+IIF(RIGHT(SFZH,1)==SUBSTR(校验码,MOD(NUM,11)+1,1),[相符],[不相符])
MESSAGEBOX(CTITLE,64,[系统信息])


[ 本帖最后由 sdta 于 2012-9-26 15:28 编辑 ]

坚守VFP最后的阵地
2012-09-26 15:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 94楼 bccn201203
呵呵 我改进的程序还去处理百岁老人 看来是画蛇添足了。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-26 17:22
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 95楼 sdta
简洁 学习了。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-26 17:22
快速回复:关于身份证验证系统的一点奇怪的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018598 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved