首页 | 新闻中心| 公司介绍| 产品走廊| 渠道与销售| 技术支持| 下载中心| 用户认证
蓝色快车PB俱乐部论坛--PowerBuilder MIS编程浏览:关于身份证的问题,哪位大哥能帮一下呀
>>欢迎您,请先登陆 | 注册 | 发贴排行 | 搜索 | 帮助 | 退出
    蓝色快车PB俱乐部论坛
    PowerBuilder MIS编程
       浏览:关于身份证的问题,哪位大哥能帮一下呀

  发表一个新主题  发表一个新投票 回复主题  您是本帖的第 290 个阅读者
 * 贴子主题: 关于身份证的问题,哪位大哥能帮一下呀 保存该页为文件 报告本帖给版主 显示可打印的版本  把本贴加入论坛收藏夹  把本贴加入IE收藏夹 

 掉线,给我留言吧!  bkm02
  
  
  等级:新手上路
 财产:140
 经验:20
 魅力:50
  注册:2003-7-16
  文章:0
  鉴定:保密

  给bkm02发送一个短消息 查看bkm02的个人资料 搜索bkm02在PowerBuilder  点击这里发送电邮给bkm02 引用回复这个贴子 

发贴心情 
还应判断出生日期是否合法,如果是18位的还要判断最后一位是否应该为X

发贴时间: 2004/3/20 22:23:50 保密


 掉线,给我留言吧!  bluesea
  
  
  等级:版主
 财产:560
 经验:350
 魅力:380
  注册:2003-7-25
  文章:24
  鉴定:保密

  给bluesea发送一个短消息 查看bluesea的个人资料 搜索bluesea在PowerBuilder  点击这里发送电邮给bluesea 访问bluesea的主页  引用回复这个贴子 

发贴心情 
//中国身份证只有15位和18位,
//以下程序通过判断身份证的位数、出生年月、性别和校验码来判断其正确性
//获取校验码的函数f_get_sfzvalid(string a_sfz)
//判断是否是身份证函数f_checksfz(string as_sfz)内容如下
string ls_date,ls_xb
string ls_birth,ls_sex,ls_return
choose case len(as_sfz)
case 15//15位的身份证
ls_date="19"+mid(as_sfz,7,2)+"-"+mid(as_sfz,9,2)+"-"+mid(as_sfz,11,2)//获得出生日期
if pos("13579",mid(as_sfz,15,1))>0 then//获得性别
ls_xb="男"
else
ls_xb="女"
end if
if not isdate(ls_date) then
messagebox("提示信息","所输入的号码不是身份证号码")
return -1
else
return 0
end if     
  case 18//18位的身份证
ls_date=mid(as_sfz,7,4)+"-"+mid(as_sfz,11,2)+"-"+mid(as_sfz,13,2)
if pos("13579",mid(as_sfz,17,1))>0 then
ls_xb="男"
else
ls_xb="女"
end if
if mid(as_sfz,18)<>f_get_sfz_validbh(mid(as_sfz,1,17)) then //判断校验码
messagebox("提示信息","所输入的身份证号码第十八位校验码不对.")
return -1
end if
if not isdate(ls_date) then//判断日期是否正确
messagebox("提示信息","所输入的号码不是身份证号码")
return -1
else
return 0
end if
case else
return -1
end choose
//获取校验码函数f_get_sfz_validbh(string a_sfz)
string ls_sfz
integer i,li_ai,li_wi,li_sum,li_mod,li_result
ls_sfz=a_sfz
if len(ls_sfz)=15 or len(ls_sfz)=17 then
if len(ls_sfz)=15 then
  ls_sfz=mid(ls_sfz,1,6)+"19"+mid(ls_sfz,7,9)
end if
for i=2 to 18
li_ai=integer(mid(ls_sfz,19 -i,1))
li_wi=mod(2^(i - 1),11)
li_sum=li_sum + li_ai*li_wi
next
li_mod=mod(li_sum,11)
li_result=12 - li_mod
if li_result>=10 then
if li_result=10 then
return "X"
else
  li_result=li_result - 11
return string(li_result)
end if
else
return string(li_result)
end if
else
 return "E"
end if
 

 


发贴时间: 2004/3/29 13:22:03 保密


 掉线,给我留言吧!  zhegao
  
  
  等级:版主
 财产:620
 经验:530
 魅力:530
  注册:2005-5-8
  文章:34
  鉴定:保密

  给zhegao发送一个短消息 查看zhegao的个人资料 搜索zhegao在PowerBuilder  点击这里发送电邮给zhegao 引用回复这个贴子 

发贴心情 

发贴时间: 2005/5/9 8:55:53 保密


 掉线,给我留言吧!  1222
  
  
  等级:新手上路
 财产:
 经验:
 魅力:
  注册:2005-4-25
  文章:7
  鉴定:保密

  给1222发送一个短消息 查看1222的个人资料 搜索1222在PowerBuilder  引用回复这个贴子 

发贴心情 
中国身份证可以这样用了,我就遇到过一次有台湾身份证的情况,结果就出问题了.

发贴时间: 2005/5/9 15:45:48 保密


 掉线,给我留言吧!  ruiqing
  
  
  等级:论坛游侠
 财产:550
 经验:440
 魅力:440
  注册:2004-12-9
  文章:23
  鉴定:保密

  给ruiqing发送一个短消息 查看ruiqing的个人资料 搜索ruiqing在PowerBuilder  点击这里发送电邮给ruiqing 引用回复这个贴子 

发贴心情 
lenth,mid,right

发贴时间: 2005/5/26 16:52:28 保密

页次:1/1页每页10 本主题贴数5

分页: [1]

 *快速回复:关于身份证的问题,哪位大哥能帮一下呀 顶端 
你的用户名:   还没注册? 密码:   忘记密码?请与管理员联系
内容
  • HTML标签: 不可用
  • UBB标签: 允许
  • 贴图标签: 允许
  • Flash标签:允许
  • 表情字符转换:允许
  • 上传图片:允许
  • 最多16KB
  • 邮件回复 显示签名  [Ctrl+Enter直接提交贴子]

    ">