第一次个人编程作业

1、Github地址:

Github项目地址

2、PSP表格

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

2、模块接口的设计与实现过程

地址簿的原本排序是姓名、手机、地址,由于被人为破坏之后,地址可能会缺少省、市后缀,手机号码会移动到它原本位置之后任意位置,要求是将这个顺序不对的地址簿恢的姓名、手机和补全分好级的地址恢复到正确的顺序。当然补全地址是强者的游戏,我们普通观众只需要完成五级地址和七级地址的划分。对于中文的字符串而言,我觉得python的正则会比较易于使用,所以此次作业使用语言的是python,在匹配玩一个字段之后,会把这个字符串从总的字符串里删除,便于后面的操作。

函数名应用
find_name()从输入的字符串里切出名字
find_tel()切出电话号码
find_address()地址分级,有多个子函数
find_prov()切出省份、直辖市或自治区
find_city()切出直辖市或地级市
find_area()切出区或县
find_street()切出街道、镇或乡
find_road()切出具体的路、巷或弄
find_number()切出门牌号

主要用到的函数都在上面的表格中。对于一整串字符串的输入,正则表达式可以很好的实现匹配具体中文字符的功能主要是方便。对于整体输入而言,要求将姓名、手机号码和具体的分级的地址输出,首先,姓名和电话号码是最简单的:

  • 姓名是在‘!’和‘,’字符中间的,只需要匹配这两个字符就可以直接切出姓名
  • 手机号码号码是连续的11位数字,且不会与号码牌等数字混合在一起,所以至于要匹配连续的11位的数字就能找到手机号码

对比之下,地址分级是就显得比较复杂,尤其是省级行政区和市级行政区:

  • 首先是输入的省级行政区会有三种不同的形式:

    • 以‘省 ’结尾的普通省份
  • 以‘市’结尾的直辖市
  • 以‘自治区’结尾的自治区

但是,并不是所有的数据都会带有后缀,第一个问题就来了,如果出现“福建省福州市闽侯县……”“福建福州闽侯县……”这两种后缀不同的数据,直接正则匹配“省”的方法就不能同时奏效了。所以,打表,34个省份的数据存在一个列表中,使用字符串的前两个字符来匹配列表,直接输出列表中存在的完整的省份。
市级行政区(或者是直辖市的下辖区)的难点类似省级,都是无法判断是否有‘市’作为后缀,处于方便,全国的行政区也都打表,用于匹配。

  • 省、市分完之后,剩下的地址一般都是规则的带有后缀的,所以这个时候,正则大哥他又来了:

    re.search("(.*?路)", s)就可以把剩下带有后缀的地址都匹配了

    4、模块的接口性能分析

1797498-20190917233556303-1749371943.png

1797498-20190917233604087-384717724.png
(还不是很会用就凑合看吧)

5、单元测试

In:2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.

Out:{"姓名": "李四", "手机": "13756899511", "地址": ["福建省", "福州市", "鼓楼区", "鼓西街道", "湖滨路", "110号", "湖滨大厦一层"]}

In:1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.

Out:{"姓名": "张三", "手机": "13599622362", "地址": ["福建省", "福州市", "闽侯县", "上街镇", "福州大学10#111"]}

In:2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.

Out:{"姓名": "王五", "手机": "18960221533", "地址": ["福建省", "福州市", "鼓楼区", "", "五一北路", "123号", "福州鼓楼医院"]}

In:1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.

Out:{"姓名": "小陈", "手机": "13965231525", "地址": ["广东省", "东莞市", "", "凤岗镇", "凤平路13号"]}

6、心得体会

单元测试、性能分析、解决函数瓶颈提高性能、异常处理,要学的还有好多好多。

转载于:https://www.cnblogs.com/xzhcode/p/11536554.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值