zoukankan      html  css  js  c++  java
  • 一、实现模块判断传入的身份证号码的正确性

    任务说明一、实现模块判断传入的身份证号码的正确性

    实现要求:

    一、实现功能模块;

    1、身份证号合法,返回0;
    2、身份证号长度不合法,返回1;
    3、身份证号第1~17位含有非数字的字符,返回2;
    4、身份证号第18位既不是数字也不是英文小写字母x,返回3;
    5、身份证号的年信息非法,返回4;
    6、身份证号的月信息非法,返回5;
    7、身份证号的日信息非法,返回6(考虑闰年情况);

    二、针对所实现的模块编写对应的单元测试代码;

    #include<stdio.h> 
    #include<stdlib.h> 
    #include<string.h>  
    int verifyIDCard(char* input); 
    int is_leapyear(int year); 
    int getyear(char* input); 
    int getmonth(char* input); 
    int getday(char* input); 
    int check_1to17(char* input); 
    int check18(char* input); 
    int chech_year_month_day(int year, int month, int day);  
    int main() 
        char input[8][100] = {"511002111222","511002abc123456789"
        "51100219880808123a","511002188808081234","511002198813081234"
        "511002198808321234","511002198902291234","511002198808081234"}; 
        int i; 
        for(i=0; i<8; i++) 
        
            printf("the IDcard is: %s, the result is: %d ",input[i],verifyIDCard(input[i])); 
        
        return 0; 
    }   
    int is_leapyear(int year) 
        if(( (year%4==0) && (year%400!=0) ) || (year%400==0)) 
            return 1; 
        return 0; 
       
    int getyear(char* input) 
        int year=0; 
        year = (input[6]-'0') * 1000 + (input[7]-'0') * 100 + 
            (input[8]-'0') * 10 + (input[9]-'0'); 
        return year; 
    }  
    int getmonth(char* input) 
        int month=0; 
        month = (input[10]-'0') * 10 + (input[11]-'0'); 
        return month; 
    }   
    int getday(char* input) 
        int day=0; 
        day = (input[12]-'0') * 10 + (input[13]-'0'); 
        return day; 
    }   
    int check_1to17(char* input) 
        int i; 
        for(i=0; i<17; i++) 
            if( !(input[i]>='0' && input[i]<='9') ) 
                return 0; 
        return 1; 
    }   
    int check18(char* input) 
        char ch = input[17]; 
        if( (ch=='x') || (ch>='0' && ch<='9') ) 
            return 1; 
        else 
            return 0; 
    }  
    int check_year_month_day(int year, int month, int day) 
        int leap; 
        leap = is_leapyear(year); 
        if(year<1900 || year>2100) 
            return 4; 
        if(month<1 || month>12) 
            return 5; 
        switch(month) 
        
        case 1: 
        case 3: 
        case 5: 
        case 7: 
        case 8: 
        case 10: 
        case 12: 
            
                if(day<1 || day>31) 
                    return 6; 
                break
            
        case 4: 
        case 6: 
        case 9: 
        case 11: 
            
                if(day<1 || day>30) 
                    return 6; 
                break
            
        case 2: 
            
                if(leap) 
                
                    if(day<1 || day>29) 
                        return 6; 
                    break
                
                else 
                
                    if(day<1 || day>28) 
                        return 6; 
                    break
                
            
        
        return 0; 
    }   
    int verifyIDCard(char* input) 
        int year,month,day; 
        if(strlen(input)!=18) 
            return 1; 
        else 
        
            if(!check_1to17(input)) 
                return 2; 
            else 
            
                 if(!check18(input)) 
                     return 3; 
                 else 
                 
                    year = getyear(input); 
                    month = getmonth(input); 
                    day = getday(input); 
                    return check_year_month_day(year,month,day); 
                 
            
        
    测试结果:

    三、需要按PSP流程进行工作量估算,填写任务清单工作量估算表。

    任务清单工作量估算表:

  • 相关阅读:
    11gR2 RAC vip和network资源的依赖性与频繁failover
    Unix上如何查看文件名开头为"+asm"的TRACE文件
    Oracle Partitioning分区技术历年新特性回顾
    Script:列出本会话的细节信息
    UtilSession failed: Prerequisite check "CheckSystemSpace" space(22288172004) is not available
    Oracle中比对2张表之间数据是否一致的几种方法
    [转]asp.net导出Excel/Csv格式数据最优方案(C#)
    C#获取存储过程返回值和输出参数值
    oracle 存储过程的基本语法
    C#调用存储过程的几个方法
  • 原文地址:https://www.cnblogs.com/yangshuya/p/8573819.html
Copyright © 2011-2022 走看看