qq_26109047 2015-06-28 08:27 采纳率: 0%
浏览 1535

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

//效验证件
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;

}

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

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-06-28 14:55
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)