github地址:

github地址

psp表格

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

思考过程:

一开始看到题目的时候就感觉此题描述很多,要求和规范也很多,就很烦,脑子里总是理不清题目要素。后来静下心来认真研究才发现这题的本质其实是文件读取和匹配、写入等操作。由于我是一个出血java不到一个月的菜鸡,然后开启了我的“面向百度编程之旅”。。。

资料来源:[百度]www.baidu.com,

​ [csdn]www.csdn.com,

​ [各级地址信息文件]https://github.com/zhuyandong/ChineseAddressDict

​ [代码质量分析]https://www.cnblogs.com/yanduanduan/p/7079302.html

性能分析jProfiler

代码思路:

主要思想是搜索各级地址信息文件,逐级分解。总共设计了 三个类,一个主类,负责读1.txt和调用其他两个类;一个5级地址类,负责对五级地址进行分解和写入文件;一个7级地址类,负责对五级地址进行分解和写入文件。地址类分解的思路是:先用spilt()和”\d{11}“正则表达式从主类中传入的String摘除名字和电话号码,然后通过各级函数分别用String的前两个字符与各级地址信息库相匹配,若找到地址信息库中的某行message匹配了,则设置类中相应地址为message,并且从原来的String中删除该级地址,作为下一级分解函数的参数传入。最后通过函数按格式写入2.txt。

改进代码:

木得灵感,不知所措。。。也许可以在查询文件的算法下点功夫?毕竟我的代码只是粗暴的遍历匹配整个地址信息文件,浪费应该挺多的。

性能分析图:

code Quality Analysis:暂无,以后补上。。。主要是工具下载下来不会用就很烦

计算机异常处理:使用try和catch进行异常处理。

学习心得:

真的,我太难了。
我一个萌新,在啥都不懂的情况下,从最简单的system.out.println()开始,到我现在还一脸懵的文件操作方式,用一个星期疯狂百度各种代码,终于在最后这几十分钟搞定了代码部分,然后没时间搞测评性能之类的东西了。。。我枯了。。。