第一次个人编程作业
- Github项目地址:wei-hub.
- PSP表格
PSP2.1 | Personal SoftwareProcess Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 40 |
· Estimate | · 估计这个任务需要多少时间 | 7200 | 4320 |
Development | 开发 | 720 | 520 |
· Analysis | · 需求分析 (包括学习新技术) | 1440 | 480 |
· Design Spec | · 生成设计文档 | 50 | 30 |
· Design Review | · 设计复审 | 25 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) |
60 | 30 |
· Design | · 具体设计 | 120 | 60 |
· Coding | · 具体编码 | 240 | 480 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试 (自我测试,修改代码,提交修改) |
30 | 20 |
Reporting | 报告 | 30 | 60 |
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 15 | 45 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 | 45 | 30 |
· 合计 | 10127 | 6235 |
- 解题思路:
1. 首先根据","根据python的正则方法将名字分割开来;
2. 其次根据python的正则方法将11位连续数字单独匹配出来;
3. 然后慢慢根据省,市,区,镇等等慢慢将地址逐一分割。
ps:第一眼看到题目的反应是,“匹配字符串划分地址?”然后就想到了之前曾经了解过的正则表达式,于是用了一天的时间简单熟悉了python的基本语法以及熟练使用正则表达式,并且查阅了相关的博客资料,然后也明白了此次的题目不是简单地用正则表达式就可以解决的,但是由于时间太过于紧迫而且学习能力较弱还是没办法把整道题做出来。
- 设计实现过程:
1. 计算模块接口的设计与实现过程
name = re.search('!(.*?),',add)
name = re.sub(r'\!|\,','',name.group())#把名字提取出来
tele = re.search('\d\d\d+',add).group(); #把电话号码提取出来
add1 = re.sub('(.*?),|\.|(\d{11})','',add) #把地址提取出来
#利用正则表达式分别将姓名、电话号码、地址提出字符串
#在使用正则表达式时应注意贪婪与非贪婪的区别
2. 计算模块接口部分的性能改进
改进之处:在解题过程中对于省市县的匹配,我查阅了相关资料,发现可以利用网上省市县的资料进行解题,我打算采用打表匹配的方法,由于数据量庞大,于是我决定只匹配字符串的前两个字节,由此来优化代码,减少所消耗时间。
3. 计算模块部分单元测试展示
这个无fa可说了,因为时间真的不是很够(主要是我太菜)这部分内容我就没能够按时完成,但是我会在接下来的时间里完善这部分内容。
4. 计算模块部分异常处理说明
对于此次编程作业模块部分的异常情况,由于时间的不允许,我并不能做过多的分析和改进。但是对于此次作业要注意的点,还是有总结了一下。
1. 输入输出文件采用UTF-8编码.
2. 省/市级行政区如后缀为“省”/“市”,则有可能省略后缀.
3. 若县级行政区后缀为“县”,则可能缺失整个市级行政区.
4. 县/乡级行政区可能缺失.
5. JSON数组顺序要严格对应.
5. 输出示例
[
{
"姓名": "李四",
"手机": "13756899511",
"地址": [
"福建省",
"福州市",
"鼓楼区",
"鼓西街道",
"湖滨路",
"110号",
"湖滨大厦一层"
]
},
{
"姓名": "张三",
"手机": "13599622362",
"地址": [
"福建省",
"福州市",
"闽侯县",
"上街镇",
"福州大学10#111"
]
},
{
"姓名": "王五",
"手机": "18960221533",
"地址": [
"福建省",
"福州市",
"鼓楼区",
"",
"五一北路",
"123号",
"福州鼓楼医院"
]
},
{
"姓名": "小美",
"手机": "15822153326",
"地址": [
"北京",
"北京市",
"东城区",
"交道口街道",
"交道口东大街",
"1号",
"北京市东城区人民法院"
]
},
{
"姓名": "小陈",
"手机": "13965231525",
"地址": [
"广东省",
"东莞市",
"",
"凤岗镇",
"凤平路13号"
]
}
- 心得体会:
首先是对于这次作业的初体验,题目刚下来的时候,这题目这需求这难度,是人吗???
其次是这段时间,由于个人能力的不足,在实现本题代码的时候,我花费了很多时间用来查找资料学习相关知识,着实是艰辛,昨晚在修改bug的途中,起身上厕所时,天已经亮了,其实心里是很难受的,因为菜导致我花费了这么多的精力在这门课上,深深体会到要从大一大二早早开始学习,如果不是生活所迫,谁又愿意看福大的日出呢...
最后是一些感慨,这门课讲道理应该放在大二合适,有充足的时间让大家学习并且灵活运用,大三的课业过于繁重,有点吃不消..我太难了