1.github链接
2.psp表格
PSP2.1 | Personal Software Process Stages | 预估耗时(min) | 实际耗时(min) |
---|---|---|---|
Planning | 计划 | 60 | 30 |
Estimate | 估计这个任务需要多少时间 | 30 | 20 |
Development | 开发 | 300 | 300 |
Analysis | 需求分析 (包括学习新技术) | 300 | 360 |
Design Spec | 生成设计文档 | 60 | 30 |
Design Review | 设计复审 | 30 | 20 |
Coding Standard | 代码规范 (为开发制定合适的规范) | 30 | 20 |
Design | 具体设计 | 60 | 60 |
Coding | 具体编码 | 300 | 360 |
Code Review | 代码复审 | 180 | 120 |
Test | 测试 (自我测试,修改,提交修改) | 180 | 180 |
Reporting | 报告 | 60 | 60 |
Test Report | 测试报告 | 30 | 20 |
Size Measurement | 计算工作量 | 20 | 10 |
Postmortem & Process Improvement Plan | 事后总结 并提出过程改进计划 | 30 | 30 |
合计 | 1670 | 1620 |
3.计算模块接口的设计与实现过程
看到题目的时候,因为要实现地址匹配,正好python中有正则的模块,便决定用python来做(反正用哪种语言都是要重新学习,觉得python可能比较简单吧,也顺便学习一下python...),于是开始了漫漫学习python之路,先是看了正则那一块(各种规则搭在一起就好难啊),然后开始实现简单的姓名和手机号匹配,在要匹配地址的时候发现某些省市会有缺省的情况,于是准备导入省市区三级地址xml文件来解析,好不容易似乎看起来可以匹配出来了,得知python测试不能用其他文件(哭),距离提交时间还有15个小时,开始了暴力打表......终于在当天中午打完一份粗糙的代码
- 基本实现过程
- 先用正则表达式将姓名,手机提取出来,去掉多余的字符,留下一串地址
- 用正则表达式匹配省,市前二级地址(后缀完整的情况)
- 将全国省市二级地址保存为字典,按照省市区级别逐一对地址进行匹配(后缀缺失情况)
- 用正则表达式匹配乡镇街道,实现五级地址划分
- 接着用正则表达式匹配出道路名,门牌号等内容,实现七级地址划分内容
函数 | 功能 |
---|---|
getname函数 | 匹配姓名 |
getphone函数 | 匹配手机号码 |
getaddress函数 | 将姓名,手机号码和多余符号切去,得到原始地址字符串 |
addr函数 | 匹配地址进行分割,将结果规范输出为json格式(包含前两级难度情况) |
代码关键是匹配出省市二级地址部分,因为这两部分存在缺少后缀的情况,解决思路:先用正则表达式匹配地址完整的情况,如果匹配出错,利用字典中的二级地址进行匹配
4.计算模块接口部分的性能改进
程序中消耗最大的函数是addr函数,我的改进思路是因为在前两级难度中只有前两级地址会缺省后缀,因此在后三级地址匹配中只要利用正则表达式就可以直接匹配
5.计算模块部分单元测试展示
6.计算模块部分异常处理说明
数据中存在个别有直辖市的情况,要对这种情况单独进行分析,
部分地址未给出完整的地址,在进行地址匹配的时候如果正则和三级地址都出现匹配不到的情况,则保留空字符串
7.个人总结
从开始打个人编程第一天起,就莫名进入了一种紧张的状态,首先是对自己的严重怀疑和不自信,其次是ddl好赶啊啊啊,但是大家都是这样没办法,给自己灌满鸡汤后开始学习,由于自己对什么语言都掌握的不熟,学习的过程还是蛮艰辛的,但是又痛并快乐着,获得一点点小进展就觉得好开心啊,可能这就是软工这门课的意义吧,同时也看到了自己欠缺的知识技能真是太多了,以前欠下来的总归是要还的,我以后一定会好好学习努力打代码的www
最后还是要感谢一下石晓楠同志还有不嫌弃我烦的大佬们(就不一一说啦)的帮助,让我第一次自己写出这么长的代码,收获了很多,我会继续努力向大佬看齐的!