首页 | 新闻中心| 公司介绍| 产品走廊| 渠道与销售| 技术支持| 下载中心| 用户认证
蓝色快车PB俱乐部论坛--PowerBuilder MIS编程回复发言
>>欢迎您,请先登陆 | 注册 | 发贴排行 | 搜索 | 帮助 | 退出
    蓝色快车PB俱乐部论坛
    PowerBuilder MIS编程
       回复发言

  *为必填项目 常规论坛,只允许注册会员发言

用户名   *您没有注册?
密码   *忘记密码?请与管理员webmaster@besoft.com.cn联系
主题标题   不得超过 50 个汉字
当前心情
  • 将放在帖子的前面
  •                           
                              
    内容

    在此论坛中
  • HTML标签: 不可用
  • UBB标签: 允许
  • 帖图标签: 允许
  • Flash标签: 允许
  • 表情字符转换: 允许
  • 上传图片: 允许
  • 最多16KB

  • 粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字
    字体:      字体大小    颜色:
    点击表情图即可在帖子中加入相应的表情
     
    选项

    是否显示您的签名?
    有回复时使用邮件通知您?


     

    --  作者: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
      出生年 = "19" + mid(身份证变量, 7, 2)
      出生月 = mid(身份证变量, 9, 2)
      出生日 = mid(身份证变量, 11, 2)
      出生年月日 = 出生年 + "-" + 出生月 + "-" + 出生日
      messagebox("","身份证号长度为15位,出生年月日为:" + 出生年月日)
    else
      出生年 = mid(身份证变量, 7, 4)
      出生月 = mid(身份证变量, 11, 2)
      出生日 = mid(身份证变量, 15, 2)
      出生年月日 = 出生年 + "-" + 出生月 + "-" + 出生日
      messagebox("","身份证号长度为18位,出生年月日为:" + 出生年月日)
    end if


    没有错误的判断,你自己加吧!

    [此贴子已经被作者于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

    ">