软工作业PSP与单元测试训练

任务说明:

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

实现要求:

一、实现功能模块;

       1.对身份证前17位进行公式计算,与输入的身份证最后一位校验位进行判断;

       2.对身份证中的年月日格式进行判断是否合理;

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

# include <stdio.h>  
# include <stdlib.h>  
# include <windows.h>  
  
int main(void) {  
  

    int i, a[20], sum=0, b, m=0;  
    char c;   
    printf("请输入您所查询的身份证号:");  
    for(i=1; i<=17; i++) {  
        scanf("%1d", &a[i]);  
    }  
    scanf("%c", &c);  
    sum = a[1]*7 + a[2]*9 + a[3]*10 + a[4]*5 + a[5]*8 + a[6]*4 + a[7]*2  
        + a[8]*1 + a[9]*6 + a[10]*3 +a[11]*7 + a[12]*9 + a[13]*10 + a[14]*5  
        + a[15]*8 + a[16]*4 + a[17]*2;  
    b = sum%11;  
    switch(b) {   
        case 0: if(c=='1') m = 1;break;  
        case 1: if(c=='0') m = 1;break;  
        case 2: if(c=='X'||c=='x') m = 1;break;  
        case 3: if(c=='9') m = 1;break;  
        case 4: if(c=='8') m = 1;break;  
        case 5: if(c=='7') m = 1;break;  
        case 6: if(c=='6') m = 1;break;  
        case 7: if(c=='5') m = 1;break;  
        case 8: if(c=='4') m = 1;break;  
        case 9: if(c=='3') m = 1;break;  
        case 10: if(c=='2') m = 1;break;  
    }  
    if(m!=1||a[7]>2||a[11]>1||a[13]>3) { //判断身份证最后一位校验位、年月日格式 
        printf("
"); 
        printf("a您输入的不是有效的身份证

");           
        exit(0);  
    }  
  
    printf("
");  
    printf("a%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%c该身份证为有效身份证
",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],c);    
    return 0;  
}

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

任务清单工作量估算表:

PSP阶段

时间估算(小时)

实际实际(小时)

计划

估计每个阶段的时间成本

 1

 1.5

开发

需求分析

 1

 1

系统设计

 0.3

 0.5

设计复审

 0.2

 0.1

代码实现

 1

 1

代码复审

 0.2

 0.3

测试

 0.3

 0.5

报告

测试报告

 0.2

 0.2

总结

 0.5

 0.3




 

原文地址:https://www.cnblogs.com/ChenZhenYe1215/p/8576211.html