首页 | 新闻中心| 公司介绍| 产品走廊| 渠道与销售| 技术支持| 下载中心| 用户认证 |
|
蓝色快车PB俱乐部论坛 PowerBuilder MIS编程 回复发言 |
-- 作者:vlk001 -- 发布时间:2004/1/7 11:45:58 -- 关于身份证的问题,哪位大哥能帮一下呀 哪位大哥能给小弟一段判断身份证号的程序,能认出是15位的还是18位的,能根据身份证号自动生成出生年月和性别。 |
-- 作者:lwhchoice -- 发布时间:2004/1/8 10:51:37 -- ft,这么简单的程序你都不会? |
-- 作者:vlk001 -- 发布时间:2004/1/8 12:17:31 -- 我是没有人教的,是自己看书的,你让我怎么样,要是会的话就帮一下,不要说那些没用的 |
-- 作者:sanp -- 发布时间:2004/2/10 15:06:52 -- int 身份证长度变量 string 身份证变量,出生年,出生月,出生日,出生年月日 身份证长度变量 = len(身份证变量) if 身份证长度变量 = 15 then
[此贴子已经被作者于2004-2-10 15:06:52编辑过]
|
-- 作者:bkm02 -- 发布时间:2004/3/20 22:23:50 -- 还应判断出生日期是否合法,如果是18位的还要判断最后一位是否应该为X |
-- 作者:bluesea -- 发布时间:2004/3/29 13:22:03 -- //中国身份证只有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
|
-- 作者:zhegao -- 发布时间:2005/5/9 8:55:53 -- 顶 |
-- 作者:1222 -- 发布时间:2005/5/9 15:45:48 -- 中国身份证可以这样用了,我就遇到过一次有台湾身份证的情况,结果就出问题了. |
-- 作者:ruiqing -- 发布时间:2005/5/26 16:52:28 -- lenth,mid,right |
"> |