任务说明(二选一):
一、 实现模块判断传入的身份证号码的正确性;
二、实现模块判断传入的电子邮箱账号的正确性;
实现要求:
一、 实现功能模块;
(1)检验身份证是否是有效的
(2)利用身份证前六位判断出生的省份
(3)用第7位到第14位判断出生时间是否超过现实时间
(4)显示身份证号码、出生地、出生日期和性别
二、针对所实现的模块编写对应的单元测试代码;
# include <stdio.h> # include <stdlib.h> # include <windows.h> int main(void) { int i, a[18], s=0, b, m=0; char c; long place;//地区号 printf("\n"); printf("请输入您所查询的身份证号:"); for(i=1; i<=17; i++) { scanf("%1d", &a[i]); } scanf("%c", &c); s = 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 = s%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); } place = 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此身份证号有效,具体信息如下:\n\n\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); printf("出生地是:"); switch(place) { 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"); 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"); printf("\n"); system("pause"); return 0; }
三、需要按PSP流程进行工作量估算,填写任务清单工作量估算表。
任务清单工作量估算表:
PSP阶段 |
时间估算(小时) |
实际实际(小时) |
|
计划 |
估计每个阶段的时间成本 |
0.5 |
0.7 |
开发 |
需求分析 |
0.6 |
0.4 |
系统设计 |
0.3 |
0.5 |
|
设计复审 |
0.2 |
0.2 |
|
代码实现 |
1 |
0.8 |
|
代码复审 |
0.4 |
0.3 |
|
测试 |
0.4 |
0.2 |
|
报告 |
测试报告 |
0.8 |
0.7 |
总结 |
0.4 |
0.5 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步