第一次个人编程作业

1.本次作业的github地址链接:

https://github.com/252342126/181700413

2.PSP表格

| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟)|
| -------- | -------- | -------- |
| Planning |计划 | 30
|Estimate |估计这个任务需要多少时间 |30
|Development |开发 |500
|Analysis |需求分析 (包括学习新技术) |10
|Design Spec |生成设计文档 |0
|Design Review |设计复审 |0
|Coding Standard|代码规范 |20
|Design |具体设计 |100
|Coding |具体编码 |200
|Code Review |代码复审 |20
|Test |测试 |150
|Reporting |报告 |80
|Test Repor |测试报告|10
|Test Repor |计算工作量 |10
|Postmortem & Process Improvement Plan|事后总结, 并提出过程改进计划|60
| |合计|610

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

我以输入 2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.为例

1.我写了一个函数叫split_string,把名字,电话,难度等级,还有地址提取出来,存在字典中,在这个例子中,处理完后得到{'name': '王五', 'telephone': '18960221533', 'address': '福建省福州市鼓楼区五一北路123号福州鼓楼医院'},之后把address的那一栏拿出来做进一步处理。


2.在我的文件目录下还有一个文本文件,那个文件里面存的是省级和市级的数据,我的另外一个函数叫alladdress,就是用来将文件里面的信息保存成字典,用来进行后续的判断

3.现在就进行地址的拆分,对于福建省福州市鼓楼区五一北路123号福州鼓楼医院,我先匹配省级,我调用find函数来找省级,如果找到了之后根据已经存储好的字典去继续匹配市级,没找到就把省市两级都存为空,找县级,这也就导致了后面的一个异常问题,就是我会把上海路中的上海,匹配成省级,因为上海放在比较前面。如果找到了具体的省市,就相应的存下来,再判断有没有省市这两个后缀,找完之后,截断,变成"鼓楼区五一北路123号福州鼓楼医院",再进行下一步操作

4.现在开始匹配县级,由于县级以及之后的数据都比较大,我就没有存在文件里面,而是根据后缀匹配,县级的常见后缀有"县""区""市",我把这三个存在一个列表中,遍历列表,根据这个来截断字符串,当然,其中也会有问题,像遇到"超市",就可能会被错误的截断,但是我也做不到全部考虑到,这个也没改,截断之后变成"五一北路123号福州鼓楼医院"

5.后面用同样的方法匹配接下来的几级,每级都进行截断,匹配完后,最后剩下的"福州鼓楼医院"就是最后一级地址

6.最后把每级地址用列表存下来,再把列表存在字典里,最后用python自带的工具把字典转为json文件格式



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

但是这个并不能解决三级的问题,但是我没有去用百度地图的api,算是放弃了三级,下次再去学吧。

4.计算模块接口部分的性能展示。

本来想改进的,但是我觉得在设计的时候已经尽量做节约时间和空间的操作了,似乎没有多少要改进的,就在遇到一些特殊的情况的时候多加了一些判断,像我的县级判断,我一开始是"市""区""县"的顺续,后面改成了"县""区""市",感觉县的后缀要少一些吧,先匹配会好点

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

输入
1!卞继主,黑15241257071龙江省齐齐哈尔市建华区卜奎街道鑫海家园B7号楼.
1!庾感裤,宁夏回族自治区中卫沙坡头区砖塔13963011320村卫生室.
2!宦塌骨,北京市丰台区马家堡街道角门南路13865443474甲14号富卓苑小区.
1!宫焊,上海市虹桥街道中山西路1065号中山广场15038265133B座.
1!宁枪裂,北京市平谷区滨河街道林荫18883080553北路7号金谷东园7号楼.
输出
{"姓名": "卞继主", "手机": "15241257071", "地址": ["黑龙江省", "齐齐哈尔市", "建华区", "卜奎街道", "鑫海家园B7号楼"]}
{"姓名": "庾感裤", "手机": "13963011320", "地址": ["宁夏回族自治区", "中卫市", "沙坡头区", "", "砖塔村卫生室"]}
{"姓名": "宦塌骨", "手机": "13865443474", "地址": ["北京", "北京市", "丰台区", "马家堡街道", "角门南路", "甲14号", "富卓苑小区"]}
{"姓名": "宫焊", "手机": "15038265133", "地址": ["上海", "上海市", "", "虹桥街道", "中山西路1065号中山广场B座"]}
{"姓名": "宁枪裂", "手机": "18883080553", "地址": ["北京", "北京市", "平谷区", "滨河街道", "林荫北路7号金谷东园7号楼"]}

评测工具结果

我没有考虑三级数据,再加上很多特殊的组合,比如"上海路","超市","李市",这样的数据也过不了,所以就只有这些分吧

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

3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.

错误输出:{"姓名": "小美", "手机": "15822153326", "地址": ["北京", "北京市", "东城区", "", "交道", "口东大街1号", "北京市东城区人民法院"]}

原因:把"道"字当做了乡镇级别的名字,这里不好解决,三级的我也没做,这个只有补全了乡镇级别的匹配才能解决问题。

2!柳吻,辽宁省大连市中山区青泥13013864707洼桥街道上海路45号宏孚大厦苏宁易购.

错误输出:{"姓名": "柳吻", "手机": "13013864707", "地址": ["上海", "上海市", "省大连市中山区", "青泥洼桥街道", "上海路", "45号", "宏孚大厦苏宁易购"]}

原因:在省级匹配的时候先匹配到了"上海",导致后面几级都出现了错误

1!佘吏,浙江省湖州市和孚镇李市村15054267850获港大桥南堍费伟民疼痛诊所.

错误输出:{"姓名": "佘吏", "手机": "15054267850", "地址": ["浙江省", "湖州市", "和孚镇李市", "", "村获港大桥南堍费伟民疼痛诊所"]}

原因:本来应该是县级缺失,但是由于匹配到"李市",错误的当做县级,导致错误

7.完整PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 60
Estimate 估计这个任务需要多少时间 30 60
Development 开发 500 600
Analysis 需求分析 (包括学习新技术) 10 130
Design Spec 生成设计文档 0 0
Design Review 设计复审 0 0
Coding Standard 代码规范 20 30
Design 具体设计 100 160
Coding 具体编码 200 220
Code Review 代码复审 20 30
Test 测试 150 30
Reporting 报告 80 360
Test Repor 测试报告 10 290
Test Repor 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 60 60
合计 610 1020

8.个人总结

这次的任务对我还是还是有点困难的,难在很多特殊情况难以解决,而很多都需要靠收集数据,用更好的处理方法来解决,而这方面我是比较薄弱的,我不太会收集数据,以后这方面要加强
posted @ 2019-09-29 20:09  黄智  阅读(153)  评论(1编辑  收藏  举报