一.GITHUB链接:
二.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30 | 40 |
· Estimate | · 估计这个任务需要多少时间 | 600 | 800 |
·Development | 开发 | 400 | 500 |
· Analysis | · 需求分析 (包括学习新技术) | 100 | 120 |
· Design Spec | · 生成设计文档 | 80 | 60 |
· Design Review | · 设计复审 | 30 | 40 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 50 |
· Design | · 具体设计 | 100 | 80 |
· Coding | · 具体编码 | 150 | 250 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 150 | 250 |
·Reporting | 报告 | 100 | 110 |
· Test Repor | · 测试报告 | 50 | 40 |
· Size Measurement | · 计算工作量 | 30 | 40 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 40 |
· 合计 | 1970 | 2450 |
三.计算模块接口的设计与实现过程
大概思路如下:首先是采用判断关键字来划分的方向,语言是用python。拿到用input函数拿到一个字符串,再用字符串的split函数划分出题目的难度等级以及姓名。电话号码的提取是用re模块的正则表达式,其间还处理如果没有号码或者号码不正确的情况。接着剩下没处理的可以拼接起来形成地址,再来就是划分地址的工作。引入cpca模块,用transform函数划分出前三级(实际是用了jieba模块的切词,再去cpca库里匹配出省市县),难度一里面的第四级行政区地址上网了一下,发现只有七种类别,直接上关键字判断(实际上是用split函数对关键字防割),判断完了之后,自然难度一也结束了。难度二的话除了第四级地址的判断,再引入了第六级地址的判断(xx号/弄…)。难度三的话,目前想到除了遍历以外没啥法子,而遍历还需要爬个中国所有行政区地址文件……
四.计算模块接口部分性能
函数调用图:
时间开销图:
五.单元测试
输入:
1!殴删谭,河北承德承15076364360德县岗子满族乡253省道齐家营中心幼儿园.
1!权暖,13252438214海南省三亚崖城镇111乡道抱古村农场.
1!濮阳逛,河南省南15694715825阳市方城县清河镇010乡道尚营村委会.
1!何擒,上海徐汇区湖13009955601南路街道汾阳路9弄复襄居委社区活动室.
2!郏稀,重庆丰13215590422都县三建乡石龙门村卫生室.
2!楚涡握,湖北随州随县吴山镇18883549874唐王街联宏村委会.
2!夹谷抡枯,甘肃兰州城关区18795320124皋兰路街道皋兰路210号郑家台小区.
2!茅参,上海嘉定区13347914736马陆镇嘉新公路1157号樊家村1256号楼.
3!黄马,甘肃省武威98765432105市凉州区东大街街道北观众路3号3楼.
3!羊舌线,福建省福州鼓楼区鼓东街13827706785道庆城路庆城社区.
输出:
代码覆盖率:
六.计算模块部分异常处理说明
输入:
2!邰爷金, 辽宁省营口市站前区新华东路10-甲5号中共15384771154八田地街道社区委员会
输出:
分析:对于第四级的七种情况划分,就怕会遇到一些这样的情况,相关的关键字在本级缺失,却在后面出现,那叫一个措手不及,可又无可奈何,感觉是一个极限了(上面的街道是第七级的,本来街道所属是行政区第四级,但这地址第四级缺失)