软工作业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("\n"); printf("\a您输入的不是有效的身份证\n\n"); exit(0); } printf("\n"); printf("\a%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%c该身份证为有效身份证\n",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 |