第一次个人编程作业

1. 作业

2.PSP

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划3040
· Estimate· 估计这个任务需要多少时间1020
Development开发150300
· Analysis· 需求分析 (包括学习新技术)500700
· Design Spec· 生成设计文档6090
· Design Review· 设计复审2040
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)3040
· Design· 具体设计100200
· Coding· 具体编码700900
· Code Review· 代码复审60120
· Test· 测试(自我测试,修改代码,提交修改)60120
Reporting报告3040
· Test Repor· 测试报告3040
· Size Measurement· 计算工作量3050
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划6070
· 合计18402770

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生成的性能分析图如下:

1797042-20190917124755091-501306035.png

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

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

1797042-20190917211838992-241427983.png

1797042-20190917211914409-795197426.png

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

1797042-20190917205247004-1175616897.png

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

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

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

7.心路历程与收获

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

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

转载于:https://www.cnblogs.com/noren/p/11525011.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值