第一次个人编程作业

1.Github项目地址 testdata里可以改输入,输出在json文件里。

2.PSP表格

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

3.解题思路描述,设计实现过程

刚开始拿到题目的时候一脸懵逼,把题目拿去问了朋友以后都叫我去看看正则,估计这就是解题的关键了。网上有现成的正则表达式可以搬过来用。再了解一下java语法啥的就是准备工作了。因为就是把电话号码插到按序的地址里,先做的事情是把电话号码提取出来,然后再从原语句里面删掉。之后的工作是用正则表达式找到“省”“市”之类的关键词,找到一个提取一个,再从原语句里面删掉。最后就可以提取出来完整的代码。

主要的函数有set/getName();set/getAddress();set/getNumber();还有把代码转换为json文件保存的类,还有地址类,为了好看把主函数单独放了一个类出来。基本上和姓名、地址那些函数全部都放在地址类里了。具体思路就是根据Address类里的函数来得到最后结果,其他类都是辅助作用,关键函数就没有必要画流程图了。

4.性能分析图

用JProfiler做的性能分析图。消耗最大的函数setAddress()。

5.代码说明

以下是单元测试的代码段:

public class exam {
@Test
	public void test() {
		String regex="(?<province>[^省]+自治区|.*?省|.*?行政区)?(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市)?(?<dist>[^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+镇|.+街道|.+乡|.+县)?(?<village>[^村]+路|.+街|.+巷|.+道|.+段|.+队|.+弄|.+胡同|.+村|.+委会|.+开发区)?(?<number>[^区号]+号)?(?<road>.*)";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher("浙江省温州市花园路18号");
		if(matcher.find()) {
		System.out.println(matcher.group("province"));
		System.out.println(matcher.group("city"));
		System.out.println(matcher.group("village"));
		}
	}
}

这个是单元测试代码覆盖率。

这个是根据正则表达式来获得地址。

没有省市……的要补齐。

改测试数据的时候可以直接在txt里改。

6.模块异常分析

模块的异常情况主要就是转换为json文件比较难,虽然网上有代码可以代。还有就是正则表达式,自己打太难了。

7.心路历程

这道题真的好难!!!这题完全不是老师口中的几分钟啊T T。然后就是接下来一定要好好复习c++,好好学习java和python,争取下次可以做到分析性能并且改进代码。收获就是看问题可以更全面了,解题思路更开阔了。

posted on 2019-09-17 11:04  茄麻  阅读(265)  评论(3编辑  收藏  举报