软工作业PSP与单元测试训练
任务说明(二选一):
一、实现模块判断传入的身份证号码的正确性;
二、实现模块判断传入的电子邮箱账号的正确性;
实现要求:
一、实现功能模块;
二、针对所实现的模块编写对应的单元测试代码;
三、需要按PSP流程进行工作量估算,填写任务
# include <stdio.h>
# include <stdlib.h>
# include <windows.h>
int main(void) {
int i, a[18], sum=0, b, m=0;
char c;
long area;
printf("\n");
printf("请输入您所查询的身份证号:");
void verifyID(char IDnum[]){
int m[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2},sum=0;
char last[11]={'1','0','x','9','8','7','6','5','4','3','2'};
for(int i=0;i<17;i++){
sum=sum+((IDnum[i]-'0')*m[i]);
}
if(IDnum[17]==last[sum%11])
printf("该身份证正确!\n");
else
printf("该身份证无效,不是合法的身份证号码,请重新输入!\n");
}
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) {//1 0 X 9 8 7 6 5 4 3 2
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");
system("pause");
exit(0);
}
if( a[7]>=2&&a[8]>=0&&a[9]>=1&&a[10]>=8&&a[11]>=0&&a[12]>=3){
printf("\n");
printf("\a此时您尚未出生,请重新输入\n\n");
system("pause");
exit(0);
}
area = a[1]*100000 + a[2]*10000;
printf("\n");
printf("\n");
printf("\a您输入的身份证号为:\a%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%c\n此身份证号有效
检测省份:
switch(area) {
case 110000: printf("北京市");break;
case 120000: printf("天津市");break;
case 130000: printf("河北省");break;
case 140000: printf("山西省");break;
case 150000: printf("内蒙古自治区");break;
case 210000: printf("辽宁省");break;
case 220000: printf("吉林省");break;
case 230000: printf("黑龙江省");break;
case 310000: printf("上海市");break;
case 320000: printf("江苏省");break;
case 330000: printf("浙江省");break;
case 340000: printf("安徽省");break;
case 350000: printf("福建省");break;
case 360000: printf("江西省");break;
case 370000: printf("山东省");break;
case 410000: printf("河南省");break;
case 420000: printf("湖北省");break;
case 430000: printf("湖南省");break;
case 440000: printf("广东省");break;
case 450000: printf("广西壮族自治区");break;
case 460000: printf("海南省");break;
case 500000: printf("重庆市");break;
case 510000: printf("四川省");break;
case 520000: printf("贵州省");break;
case 530000: printf("云南省");break;
case 540000: printf("西藏自治区");break;
case 610000: printf("陕西省");break;
case 620000: printf("甘肃省");break;
case 630000: printf("青海省");break;
case 640000: printf("宁夏回族自治区");break;
case 650000: printf("新疆维吾尔自治区");break;
case 710000: printf("台湾省");break;
case 810000: printf("香港特别行政区");break;
case 820000: printf("澳门特别行政区");break;
}
printf("\n");
SimpleDateFormatsdf = new SimpleDateFormat("yyyyMMdd");
try {
Date birthDate = sdf.parse(birthday);
String tmpDate = sdf.format(birthDate);
if (!tmpDate.equals(birthday)) {// 出生年月日不正确
return false;
}
检测性别:
printf("性别:女\n");
else
printf("性别:男\n");
printf("\n");
printf("\n");
system("pause");
return 0;
}
|
PSP阶段 |
时间估算(小时) |
实际实际(小时) |
|
|
计划 |
估计每个阶段的时间成本 |
1 |
1 |
|
开发 |
需求分析 |
0.5 |
0.25 |
|
系统设计 |
0.3 |
0.2 |
|
|
设计复审 |
0.5 |
0.25 |
|
|
代码实现 |
0.3 |
0.3 |
|
|
代码复审 |
0.5 |
0.5 |
|
|
测试 |
0.4 |
0.2 |
|
|
报告 |
测试报告 |
0.3 |
0.3 |
|
总结 |
0.5 |
0.5 |
|
清单工作量估算表。

浙公网安备 33010602011771号