博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软工作业PSP与单元测试训练 15100231
阅读量:5096 次
发布时间:2019-06-13

本文共 3807 字,大约阅读时间需要 12 分钟。

任务说明(二选一):

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

实现要求:

一、实现功能模块;

(1)用于检查身份证是否有效

 第18位检验位:

将身份证号码17位数分别乘以不同系数,为7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

将这17位数字相加除以11,得到余数。
余数只可能为0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的数为1-0-X-9-8-7-6-5-4-3-2。而这个数就是最后一位身份证号码。

生日格式的检验:

生日不能的月份不能大于1,且日期不能大约3。

 (2)检查出生日期是否大于2018年3月

输入的第7位到第11位将它们数值化然后于201803相比大于的为超出时间.

(3)判断身份证地址

输入的第1位和第2位将它们于对应的省份代号进行对比.

(4)显示出生日期

将分别代表出生年月日的第七位到第十四位显示。

(5)显示性别

第17位单数为男双数为女由此来显示。

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

# include 
# include
# include
int main(void) { int i, a[20], sum=0, b, m=0 ,day; char c; long area; printf("\n"); printf("查询的身份证号:"); for(i=1; i<=17; i++) { scanf("%1d", &a[i]); day=a[7]*100000+ a[8]*10000+a[9]*1000+a[10]*100+a[11]*10+a[12]; } 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[11]>1||a[13]>3) { printf("\n\n\n"); printf("\a输入的不是有效的身份证!!!\n\n"); getchar(); getchar(); } // 用于判断出人是否出生于2018年03月之后 if(day>20183) { printf("\n\n\n"); printf("\a此人未出生!!!\n\n"); getchar(); getchar(); } // 用于判断身份证地址 area = a[1]*10+ a[2]; printf("\n\n\n"); printf("身份证地址:"); switch(area) { case 11: printf("北京");break; case 12: printf("天津");break; case 13: printf("河北");break; case 14: printf("山西");break; case 15: printf("内蒙");break; case 21: printf("辽宁");break; case 22: printf("吉林");break; case 23: printf("黑龙江");break; case 31: printf("上海");break; case 32: printf("江苏");break; case 33: printf("浙江");break; case 34: printf("安徽");break; case 35: printf("福建");break; case 36: printf("江西");break; case 37: printf("山东");break; case 41: printf("河南");break; case 42: printf("湖北");break; case 43: printf("湖南");break; case 44: printf("广东");break; case 45: printf("广西");break; case 46: printf("海南");break; case 51: printf("四川");break; case 52: printf("贵州");break; case 53: printf("云南");break; case 54: printf("西藏");break; case 61: printf("陕西");break; case 62: printf("甘肃");break; case 63: printf("青海");break; case 64: printf("宁夏");break; case 65: printf("新疆");break; } printf("\n"); // 用于显示出生日期 printf("出生日期:%d%d%d%d年%d%d月%d%d日\n", a[7],a[8],a[9],a[10], a[11],a[12], a[13],a[14]); // 用于判断性别 if(a[17]%2==0) printf("性别:女\n"); else printf("性别:男\n"); printf("\n\n\n"); system("pause"); return 0;}

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

 

任务清单工作量估算表:

PSP阶段

时间估算(小时)

实际实际(小时)

计划

估计每个阶段的时间成本

 0.8

0.7 

开发

需求分析

0.7 

0.9 

系统设计

 0.4

0.4 

设计复审

0.5

0.5 

代码实现

1

 1.2

代码复审

0.8 

 0.4

测试

0.4 

0.4 

报告

测试报告

 0.3

 0.5

总结

 0.5

0.3 

 

 

转载于:https://www.cnblogs.com/linhui0822/p/8576110.html

你可能感兴趣的文章
Jqery之select操作
查看>>
cancel-ng-swipe-right-on-child
查看>>
Entity Framework4.0 (四) EF4的内部结构和几个基本概念
查看>>
[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
查看>>
数据结构--双端队列
查看>>
GCC常用编译选项
查看>>
CodeIgniter(3.1.4)框架中整合ThinkPHP验证码
查看>>
面向对象思考
查看>>
python--model进阶
查看>>
jquery 插件扩展2
查看>>
论文阅读 | Recurrent Filter Learning for Visual Tracking
查看>>
产品经理与交互设计师的对话——需求是如何变成产品原型的
查看>>
win7 安装mongodb扩展
查看>>
git 日常命令
查看>>
尝试用微博记录 SQL Server 2012开发者训练营笔记
查看>>
在MongoDB中实现聚合函数
查看>>
使用SSIS同步数据库数据
查看>>
iOS学习总结之ARC和非ARC的单例模式实现
查看>>
MapReduce业务 - 图片关联计算
查看>>
误用的volatile
查看>>