软工作业PSP与单元测试训练
Posted ftfive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软工作业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\\n",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 |
以上是关于软工作业PSP与单元测试训练的主要内容,如果未能解决你的问题,请参考以下文章