第一次编程作业

链接

github地址

(PS:如果我最后还是没法使用评测工具,就用eclipse运行一下我的代码,然后看在结果可怜份上,给点分吧...)


 

PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

45

· Estimate

· 估计这个任务需要多少时间

 10

15

Development

开发

500

620

· Analysis

· 需求分析 (包括学习新技术)

 400

410

· Design Spec

· 生成设计文档

10

· Design Review

· 设计复审

 20

 25

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 10

20 

· Design

· 具体设计

 30

30 

· Coding

· 具体编码

 120   

200 

· Code Review

· 代码复审

 10

10 

· Test

· 测试(自我测试,修改代码,提交修改)

200

 420

Reporting

报告

10

 15

· Test Repor

· 测试报告

10

 20

· Size Measurement

· 计算工作量

15

 10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30

 20

 

· 合计

 1405

 1868

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PS吐槽:我真没想到自己这么这么菜,从中秋前一天开始,几乎从早上做到半夜(完成前一天到3点惹),完成时间已经非常保守了,

但依旧超过20多小时。BUG还很多,单元测试也还不会搞。。。

我一直前进,却不知道后面会怎么怎么样...


 

思路分析

一、解题步骤

  1、最开始联想到关键字查询,通过联系讨论发现,与正则表达式应用相关。

  2、解决

    第一步:用逗号分开名字

    第二步:用正则表达式提取13位手机号

    第三步:分析地址的划分(难点)

  3、对出现相应的bug进行调式修改

二、设计与实现过程

  1、函数类型(两个类)

User类构造函数:输入整个字符串,并得到名字与手机号,并分割出地址串
User类AddressSolution函数:输入地址串,对地址分析
User2类webhelp函数:调用百度地图API相应查询
User类get1,get2函数:对一类题二类题的结果区分
User类getall函数:对所有属性结果的处理
User类main主函数:

 

 

 

 

 

 

 

 

  2、过程问题

  一开始单纯地认为百度地图API可以直接给我准确的答案,后来发现经过地址正解析逆解析后,四级包括以后四级以后的地址会产生较大误差,

而前三级相对较为准确。于是采取前三级调用API,后面采用正则表达式关键字查询。

  对于附加的难度3题目,API只能怪补上缺失的前三级。

  3、关键代码

代码关键在于调用API搞定前三级,赋值给province,city,district变量
然后再对剩余地址进行5级或7级的分析
String[] arr=uu.webhelp(b);//调用API,然后赋值前三级

”(.*?区|.*?街道|.*?镇|.*乡)?(.*)“//5级分类后两级

“(.*?街道|.*?镇|.*乡)?(.*?路|.*?巷|.*?街)?([\\d]+?号|[\\d]+.?道)?(.*)”//7级之类后三级

 

  4、资料来源

——————正则表达式的基础教程——————

——————百度地图解析地址——————

——————string类的基础运用教程————

性能分析

运行前

 运行后

很明显这次代码的主题对象几乎全用String类处理,对String类的需求较为巨大。所以,对于程序的改善便应该从减少无关对象开始。

  (PS:其实就是因为代码的实现对于我这垃圾来说有些困难,对于bug的处理在于简单粗暴地新建对象,对于内存冗余问题只能依赖

java的回收机制)

单元测试

 题目样例的测试

{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]}
{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111"]}
{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]}
{"姓名":"小美","手机":"15822153326","地址":["北京市","北京市","东城区","交道口东大街1号北京市东城区","人民法院"]}
{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路13号"]}
{"姓名":"小陈","手机":"13015738826","地址":["福建省","福州市","仓山区","","公园路","15号",""]}

 

异常处理

 1、遇到前三级关键字多个字时,会报错。

 2、...

最后总结

应该30小时以上了吧...

代码BUG疯狂出,做好中间程序的代码就是不会进行评测工具的测试,好多东西用也不会用,我真TM...尽力了

本来觉得吧,花上这几天而学的东西以为挺有收获的,从正则走到API调用,从只会c与c++到java第一次实际应用...可时间成本太高,效率极低,完成度差...是应该反省一下的

有些时候,其实积累跟沉淀就在那里摆着,不是几天几夜、一朝一夕就可以掩盖的...

 

posted @ 2019-09-17 22:25  JayerListen  阅读(235)  评论(3编辑  收藏  举报