zoukankan      html  css  js  c++  java
  • 软工作业PSP与单元测试训练

    任务说明(二选一):

    一、实现模块判断传入的身份证号码的正确性;

    实现要求:

    一、实现功能模块;

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

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

    #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流程进行工作量估算,填写任务清单工作量估算表。

    任务清单工作量估算表:

    PSP阶段

    时间估算(小时)

    实际实际(小时)

    计划

    估计每个阶段的时间成本

     3

     2

    开发

    需求分析

     1

     1.5

    系统设计

     2

     1.5

    设计复审

     2

     1.5

    代码实现

     1

     0.5

    代码复审

     0.5

     0.4

    测试

     2

     0.1

    报告

    测试报告

     1

     0.3

    总结

     2

     1

  • 相关阅读:
    GO异常 | runnerw.exe: CreateProcess failed with error 21
    tab切换效果
    第一次码前端页面的经历
    开博第一天
    软件架构参考模板-软件架构设计学习第三天(原创)
    架构设计基础-软件架构设计学习第二天(非原创)
    IT架构师介绍-软件架构设计学习第一天(非原创)
    Android常见面试题学习第二天(原创)
    Android常见面试题学习第一天(原创)
    Netty简单介绍(非原创)
  • 原文地址:https://www.cnblogs.com/ftfive/p/8591920.html
Copyright © 2011-2022 走看看