第一次个人编程作业

1.github链接

github

2.psp表格

PSP2.1Personal Software
Process Stages
预估耗时(min)实际耗时(min)
Planning计划6030
Estimate估计这个任务需要多少时间3020
Development开发300300
Analysis需求分析
(包括学习新技术)
300360
Design Spec生成设计文档6030
Design Review设计复审3020
Coding Standard代码规范
(为开发制定合适的规范)
3020
Design具体设计6060
Coding具体编码300360
Code Review代码复审180120
Test测试
(自我测试,修改,提交修改)
180180
Reporting报告6060
Test Report测试报告3020
Size Measurement计算工作量2010
Postmortem & Process
Improvement Plan
事后总结
并提出过程改进计划
3030
合计16701620

3.计算模块接口的设计与实现过程

看到题目的时候,因为要实现地址匹配,正好python中有正则的模块,便决定用python来做(反正用哪种语言都是要重新学习,觉得python可能比较简单吧,也顺便学习一下python...),于是开始了漫漫学习python之路,先是看了正则那一块(各种规则搭在一起就好难啊),然后开始实现简单的姓名和手机号匹配,在要匹配地址的时候发现某些省市会有缺省的情况,于是准备导入省市区三级地址xml文件来解析,好不容易似乎看起来可以匹配出来了,得知python测试不能用其他文件(哭),距离提交时间还有15个小时,开始了暴力打表......终于在当天中午打完一份粗糙的代码

  • 基本实现过程
    • 先用正则表达式将姓名,手机提取出来,去掉多余的字符,留下一串地址
    • 用正则表达式匹配省,市前二级地址(后缀完整的情况)
    • 将全国省市二级地址保存为字典,按照省市区级别逐一对地址进行匹配(后缀缺失情况)
    • 用正则表达式匹配乡镇街道,实现五级地址划分
    • 接着用正则表达式匹配出道路名,门牌号等内容,实现七级地址划分内容
函数功能
getname函数匹配姓名
getphone函数匹配手机号码
getaddress函数将姓名,手机号码和多余符号切去,得到原始地址字符串
addr函数匹配地址进行分割,将结果规范输出为json格式(包含前两级难度情况)

代码关键是匹配出省市二级地址部分,因为这两部分存在缺少后缀的情况,解决思路:先用正则表达式匹配地址完整的情况,如果匹配出错,利用字典中的二级地址进行匹配
dFMBAAAAAAAA&bo=jgKLAgAAAAADByc!&rf=viewer_4

4.计算模块接口部分的性能改进

程序中消耗最大的函数是addr函数,我的改进思路是因为在前两级难度中只有前两级地址会缺省后缀,因此在后三级地址匹配中只要利用正则表达式就可以直接匹配
dMUAAAAAAAAA&bo=ngXwAQAAAAADB0g!&rf=viewer_4
dIMAAAAAAAAA&bo=kwTOAQAAAAADF2o!&rf=viewer_4

5.计算模块部分单元测试展示

6.计算模块部分异常处理说明

数据中存在个别有直辖市的情况,要对这种情况单独进行分析,
部分地址未给出完整的地址,在进行地址匹配的时候如果正则和三级地址都出现匹配不到的情况,则保留空字符串

7.个人总结

从开始打个人编程第一天起,就莫名进入了一种紧张的状态,首先是对自己的严重怀疑和不自信,其次是ddl好赶啊啊啊,但是大家都是这样没办法,给自己灌满鸡汤后开始学习,由于自己对什么语言都掌握的不熟,学习的过程还是蛮艰辛的,但是又痛并快乐着,获得一点点小进展就觉得好开心啊,可能这就是软工这门课的意义吧,同时也看到了自己欠缺的知识技能真是太多了,以前欠下来的总归是要还的,我以后一定会好好学习努力打代码的www
最后还是要感谢一下石晓楠同志还有不嫌弃我烦的大佬们(就不一一说啦)的帮助,让我第一次自己写出这么长的代码,收获了很多,我会继续努力向大佬看齐的!

转载于:https://www.cnblogs.com/Linrrui/p/11531333.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值