第一次个人编程作业

一、github链接:

https://github.com/Tiny-666/031702115.git

二、PSP表格(初步估计):

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 40
Estimate · 估计这个任务需要多少时间 40
Development 开发(包含下面8个子任务) 1635
Analysis · 需求分析(包括学习新技术) 1200
Design Spec · 生成设计文档 0
Design Review · 设计复审 45
Coding Standard · 代码规范(为开发制定合适的规范) 10
Design · 具体设计(用伪代码,流程图等方法来设计具体模块) 0
Coding · 具体编码 300
Code Review · 代码复审 20
Test 测试(自我测试,修改,提交修改) 60
Reporting 报告 100
Test Report · 测试报告 60
Size Measurement · 计算工作量 10
Postmortem & Process Improvement Plan · 事后总结并提出过程改进计划 30
合计 1775

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

编码格式转换

①UTF-8转GBK,读取文件时使用
②GBK转UTF-8,写到输出文件时使用

提取电话号

找出一行中的连续11个数字

提取姓名

直接提出逗号之前的汉字

提取地址

先提取出省、市、县、镇四个级别,然后根据等级判断是否需要提取多级地址,最后统一输出剩下的字符串,并删去英文句号

提取细节地址

根据关键字“路”、“巷”、“街”提取第五级地址,根据关键字“号”提取第六级地址

四、计算模块接口部分的性能改进

每个模块执行的功能都十分简单,个人感觉没有什么可以改进的地方。
以下是测试了1150个样例的分析报告:



消耗最大的的函数就是输入函数getline(毕竟1150个样例)。。

五、计算模块部分单元测试展示

测试部分:完整的提取个人信息功能
测试数据:从所给的1150个样例中抽取10个

输入(10个样例):

1!双韵,安徽黄山市歙县雄村镇006县道与G56杭瑞高速歙县雄村乡防保站13575634949.
1!苗朽蕾,13884441418湖北省孝感市云梦县方庙村村委会.
1!百里屏闷,广西壮族自治区桂林市灵川县潭13315249688下镇004乡道灵川县潭下镇大义村民委员会.
1!通描哗,山西省临汾市安泽县冀氏镇北孔滩村13228042359村委会.
1!司马俐,河北石家庄市15304622285裕华区裕翔街道南位村村委会.
1!宣册,北京十三陵镇果庄2号院15839949988.
1!夹谷理丧,北京顺义区15856811916木林镇陈各庄7号楼.
2!郁蕾喘,海18807961204南省海口秀英区长流镇美李小学.
2!赫连琐妙,广西壮族自治区柳州市柳江区土博镇琴怀村林18998414441场.
3!蔺脚贺,湖南省娄底市冷水江市石槽村三尖镇15581828223人民政府.

输出(修正部分异常后):

[
{"level":1,"姓名": "双韵","手机": "13575634949","地址": ["安徽省","黄山市","歙县","雄村镇","006县道与G56杭瑞高速歙县雄村乡防保站"]},
{"level":1,"姓名": "苗朽蕾","手机": "13884441418","地址": ["湖北省","孝感市","云梦县","","方庙村村委会"]},
{"level":1,"姓名": "百里屏闷","手机": "13315249688","地址": ["广西壮族自治区","桂林市","灵川县","潭下镇","004乡道灵川县潭下镇大义村民委员会"]},
{"level":1,"姓名": "通描哗","手机": "13228042359","地址": ["山西省","临汾市","安泽县","冀氏镇","北孔滩村村委会"]},
{"level":1,"姓名": "司马俐","手机": "15304622285","地址": ["河北省","石家庄市","裕华区","裕翔街道","南位村村委会"]},
{"level":1,"姓名": "宣册","手机": "15839949988","地址": ["北京","北京市","","十三陵镇","果庄2号院"]},
{"level":1,"姓名": "夹谷理丧","手机": "15856811916","地址": ["北京","北京市","顺义区","木林镇","陈各庄7号楼"]},
{"level":2,"姓名": "郁蕾喘","手机": "18807961204","地址": ["海南省","海口市","秀英区","长流镇","","","美李小学"]},
{"level":2,"姓名": "赫连琐妙","手机": "18998414441","地址": ["广西壮族自治区","柳州市","柳江县","区土博镇","琴怀村","","林场"]},
{"level":3,"姓名": "蔺脚贺","手机": "15581828223","地址": ["湖南省","娄底市","冷水滩区","","江市石槽村","","三尖镇人民政府"]}
]

测试覆盖率

90%

六、计算模块部分异常处理说明

异常样例:

1!司马俐,河北石家庄市15304622285裕华区裕翔街道南位村村委会.
1!宣册,北京十三陵镇果庄2号院15839949988.
3!解维牌,长宁区仙霞新村街道虹古路261号虹古小13345422905区4号楼.

异常类型:

①对前两个样例:乱码
-- 处理方式:修改匹配关键字部分的代码思路

②对于最后一个样例:地址不能补全
-- 处理方式:尚无

错误场景:

①原代码思路是令文本与我的省份表逐字节匹配,删除文本中与之相同的字节。样例中河北省的“省”字拼音的前两个字母为sh,而文本中“河北”的后一个字“石”拼音的前两个字母也为sh,第一字节编码一致导致误删,从而导致后面的文本都不能正常操作。第二个样例同理。
②三级难度下,缺省地址不能补全,原因是未能写出智能补全代码。

七、完整PSP表格:

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 40 30
Estimate · 估计这个任务需要多少时间 40 30
Development 开发(包含下面8个子任务) 1635 1805
Analysis · 需求分析(包括学习新技术) 1200 1350
Design Spec · 生成设计文档 0 0
Design Review · 设计复审 45 45
Coding Standard · 代码规范(为开发制定合适的规范) 10 30
Design · 具体设计(用伪代码,流程图等方法来设计具体模块) 0 0
Coding · 具体编码 300 300
Code Review · 代码复审 20 20
Test 测试(自我测试,修改,提交修改) 60 60
Reporting 报告 100 100
Test Report · 测试报告 60 60
Size Measurement · 计算工作量 10 10
Postmortem & Process Improvement Plan · 事后总结并提出过程改进计划 30 30
合计 1775 1935
原文地址:https://www.cnblogs.com/tinygod/p/11575684.html