int-注册框怎么修改,关于身份证号

问题描述

注册框怎么修改,关于身份证号

//效验证件
bool CUserItemElement::EfficacyPassPortID(LPCTSTR pszPassPortID, TCHAR szDescribe[], WORD wMaxCount)
{
//长度判断
UINT nCharLength=lstrlen(pszPassPortID);
if(nCharLength==0L) return true;

//变量定义
bool bNumber=true;

//数字判断
for (UINT i=0;i<nCharLength;i++)
{
    if ((pszPassPortID[i]<TEXT('0'))||(pszPassPortID[i]>TEXT('9')))
    {
        if(pszPassPortID[i] != TEXT('x') && pszPassPortID[i] != TEXT('X'))
        {
            bNumber=false;
            break;
        }
    }
}

//合法判断
if ((bNumber==false)||((nCharLength!=15L)&&(nCharLength!=18L)))
{
    lstrcpyn(szDescribe,TEXT("身份证号码必须为 15 位或者 18 位数字,请重新输入!"),wMaxCount);
    return false;
}

//变量定义
bool bNewPassPortID = (nCharLength==18L);
bool bYear=true;
bool bMonth=true;
bool bDay=true;
bool bCheck=true;

//合法判断
if(bNewPassPortID)
{
    TCHAR szYear[10]={0};
    for(BYTE i=0; i<4; i++)
    {
        szYear[i]=pszPassPortID[i+6];
    }
    int nYear = StrToInt(szYear);
    if(nYear < 1900 || nYear > 2100)
    {
        bYear=false;
    }
}

//合法判断
BYTE cbIndex=8;
if(bNewPassPortID)cbIndex=10;
TCHAR szMonth[10]={0};
for(BYTE i=0; i<2; i++)
{
    szMonth[i]=pszPassPortID[i+cbIndex];
}
int nMonth = StrToInt(szMonth);
if(nMonth < 1 || nMonth > 12)
{
    bMonth=false;
}

//合法判断
cbIndex=10;
if(bNewPassPortID)cbIndex=12;
TCHAR szDay[10]={0};
for(BYTE i=0; i<2; i++)
{
    szDay[i]=pszPassPortID[i+cbIndex];
}
int nDay = StrToInt(szDay);
if(nDay < 1 || nDay > 31)
{
    bDay=false;
}

//合法判断
if(bNewPassPortID)
{
    TCHAR szTemp[10]={0};
    int nSum=0;
    int nWi[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
    TCHAR cCheckArry[]={TEXT('1'),TEXT('0'),TEXT('X'),TEXT('9'),TEXT('8'),TEXT('7'),TEXT('6'),TEXT('5'),TEXT('4'),TEXT('3'),TEXT('2')};
    for(BYTE i=0; i<17; i++)
    {
        szTemp[0]=pszPassPortID[i];
        int nAi=StrToInt(szTemp);
        nSum+=(nAi*nWi[i]);
    }
    TCHAR cCheck=cCheckArry[nSum%11];
    TCHAR cCheck2=pszPassPortID[17];

    if((cCheck2 != cCheck) && !((cCheck==TEXT('X')) && (cCheck2==TEXT('x'))))
    {
        bCheck=false;
    }
}

//合法判断
if(!bYear||!bMonth||!bDay||!bCheck)
{
    lstrcpyn(szDescribe,TEXT("您输入的身份证号码不正确,请重新输入正确的身份证号码!"),wMaxCount);
    return false;
}

return true;

}

代码已经找到,现在的问题是用上面代码注册时,不填身份证也能注册,想要的效果是注册时必须填身份证。 (现在有的注册框在身份证这项前也有*号,但不起作用啊)

解决方案

你的代码只有校验的逻辑没有在界面上阻止用户操作和提示的逻辑。
在你界面的按钮处理代码中加上
if (!EficacyPassPortID(...))
MessageBox(错误);

解决方案二:

在你界面的按钮处理代码中加上
兄弟请问下这个东西在哪里啊 可以具体一点吗? 因为我也才学的啊 不知道哪里啊

时间: 2024-11-08 19:53:17

int-注册框怎么修改,关于身份证号的相关文章

数据绑定到密码框-.net 网站开发注册时设置初始密码为输入的身份证号的后六位,并且显示出来,要怎么做

问题描述 .net 网站开发注册时设置初始密码为输入的身份证号的后六位,并且显示出来,要怎么做 现在的问题是,怎么在用户输入了身份证号之后,就自动获取数据并且填充,是使用多 线程还是js?sos~~~ 解决方案 js来截取 身份证号:<input type="text" onblur="document.getElementById('pwd').value=this.value.substr(this.value.length-6,6)" /> 密码:

利用ASP验证身份证号是否正确的代码

本文非原创,只是综合了两三个文章整理在一起的. 我们要验证身份证号是否正确,就得先了解身份证号的含意. 身份证号都代表什么意思? 1.号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六位数)表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位)表示编码对象出生的年.月.日,按GB/T7408的规定执行

PHP实现身份证号正则验证(兼容15,18位)

  最近复习了正则表达式的使用,手痒痒就做了一份验证正则,身份证号验证(兼容15,18位) ,在注册验证的时候可以用上.   01 //比较菜鸟 第一次分享代码   02 //身份证号验证 03     protected function checkIdCard(){ 04         if(empty($_POST['idcard'])){ 05             return false; 06         } 07         $idcard = $_POST['idc

用C#实现由15位身份证号升级到18位的算法

1 using System; 2 using System.Collections; 3 4 public class MyClass 5 { 6 public static void Main() 7 { 8 Console.WriteLine(per15To18("429005811009091")); 9 RL(); 10 } 11 12 public static string per15To18(string perIDSrc) 13 { 14 int iS = 0; 15

excel输入数字或身份证号

我们平时都会在excel输入数字,但你有没有碰到这种情况,在Excel中输入一串长串数字,例如你在excel单元格中输入8888888888888.8,结果变成了8.88889E+13,输入身份证号也会同样出现这种情况(有X的身份证号除外),这是怎么回事,而短数字却没关系,原来,在Excel中当数字超过11位时就会自动应用科学计数法来显示,那怎么解决excel输入数字这个问题呢,其实很简单,把单元格设置成文本格式就可以了,方法如下: 方法一.设置单元格格式法 这种方法适合多个单元格或整行整列操作

javascript验证身份证号

 我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码 表示编码对象出生的年.月.日,按

WinPE注册表的修改方法

  WinPE注册表的修改方法         有时候我们需要对PE注册表添加一些信息,如何来添加呢?下面这就来告诉你. 使用 Regsnap 等在标准的 Windows 环境下跟踪分析出软件要添加到注册表中的内容,然后将注册表修改条目导出,并改写成批处理文件,保存到软件所在的目录中. 比如对 ACDSEE 这各程序的注册信息跟踪后就保存在: X:PROGRAMS图形图像ACDSEEACDSEE.CMD 建议参照 X:PROGRAMS图形图像ACDSEE 这个程序的保存方式保存你要添加的软件,原

注册表被修改的原因及解决办法

一.注册表被修改的原因及解决办法 其实,该恶意网页是含有有害代码的ActiveX网页文件,这些广告信息的出现是因为浏览者的注册表被恶意更改的结果. 1.IE默认连接首页被修改 IE浏览器上方的标题栏被改成"欢迎访问******网站"的样式,这是最常见的篡改手段,受害者众多. 受到更改的注册表项目为: HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMainStart Page HKEY_CURRENT_USERSoftwareMi

注册表被修改的原因分析和解决方法

注册表被修改的原因分析和解决方法: 其实,该恶意网页是含有有害代码的ActiveX网页文件,这些广告信息的出现是因为浏览者的注册表被恶意更改的结果. 1.IE默认连接首页被修改 IE浏览器上方的标题栏被改成"欢迎访问******网站"的样式,这是最常见的篡改手段,受害者众多. 受到更改的注册表项目为: HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMainStart Page HKEY_CURRENT_USERSoftwareM