第一次个人编程作业

**1. **作业

2.PSP

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
· Estimate · 估计这个任务需要多少时间 10 20
Development 开发 150 300
· Analysis · 需求分析 (包括学习新技术) 500 700
· Design Spec · 生成设计文档 60 90
· Design Review · 设计复审 20 40
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 40
· Design · 具体设计 100 200
· Coding · 具体编码 700 900
· Code Review · 代码复审 60 120
· Test · 测试(自我测试,修改代码,提交修改) 60 120
Reporting 报告 30 40
· Test Repor · 测试报告 30 40
· Size Measurement · 计算工作量 30 50
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 70
· 合计 1840 2770

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

解题思路描述

(1)读取文件

(2)区分难度等级

(3)把名字切出来

(4)把手机号切出来

(5)分直辖市和非直辖市两种情况做地址解析

(6)按json格式输出

代码组织

  一个类,除了主函数有九个函数,如下:

函数 功能
void write(String) 将字符串写入文件
void name(String) 将名字写入文件
void phonenumber(String) 将手机号写入文件
String getTelnum(String) 提取手机号
String deletephonenumber(String,String) 删掉手机号
List<Map<String,String>> addressResolution(String) 非直辖市五级地址解析
List<Map<String,String>> addressResolution1(String) 直辖市五级地址解析
List<Map<String,String>> addressResolution3(String) 非直辖市七级地址解析
List<Map<String,String>> addressResolution2(String) 直辖市七级地址解析

  函数name(String),phonenumber(String)两个函数中调用了函数write(String)。

关键代码

五级地址正则表达式

String regex="(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇|.+街道|.+乡)?(?<village>.*)";

七级地址正则表达式

String regex="((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+局|.+市)(?<town>[^区]+区|.+镇|.+街道|.+乡)?(?<road>[^路]+路|.+弄|.+街|.+巷)?(?<number>[^号]+号)?(?<village>.*)";

  百度上一通瞎找,再结合了一些实例,得到了以上正则表达式。

  我真的很菜,能解决的情况真的很少,随便缺点什么,我都解决不了了。实在非要我说独到之处,那可能是把直辖市单独处理了吧。

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

  在改进计算模块性能上花费120分钟。将名字和手机号的写入单独用函数处理,直辖市单独处理,由只能处理五级解析升级为能处理五级和七级解析。

  由JProfiler生成的性能分析图如下:

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

  (emmmmm)其实我也不知道单元测试是不是这样做的。可能也许或许是吧。我就一个类,就把整个代码都做单元测试了。部分代码如下:

  单元测试得到的测试覆盖率截图如下:

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

(1)解决无法处理直辖市的情况。

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

7.心路历程与收获

  看到题目的时候,这都是啥???直到现在我也还是不明不白。从C++开始尝试,历经一天,失败。又开始尝试java,全程面向百度编程。一开始就果断放弃了附加题,又渐渐地放弃了单元测试,异常处理,然后发现可能我的代码根本都没机会跑起来。千言万语化作一句”我太难了“。可能是时候考虑一下转行了??

  收获的话,也是有很多的吧。整个作业都是从头学习,一个问题一个问题搜,下了一堆七七八八的软件,我可能是个假的计算机学子。感觉一个星期学了两年都没学到的知识量,有点消化不良。菜是原罪,好好学习天天向上吧。

原文地址:https://www.cnblogs.com/noren/p/11525011.html