第一次个人编程作业

github

PSP表格

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

思路和主要运用的函数

这次的题目是损坏的地址簿,要求我们将不规格的地址转成json格式输出,分为1级难度2级难度和3级难度。我选择了java语言来实现这一要求,虽然只是暑假学了一点皮毛的皮毛的皮毛。题目链接

首先面临的的问题就是将数据从文件当中提取出来,输出为字符串方便我进行下面的操作。再用正则表达式将姓名电话和难度等级提取出来,比如手机号只要是连续的十一位数字就可以(emmmmm投机取巧)
Pattern pattern = Pattern.compile("\\d{11}"); Matcher matcher = pattern.matcher(str);
将提取后的地址字符串进行处理,利用replaceFisrt()函数将没有用的数据删除,只剩下具体地址省市之类的进行后面的操作。考虑到可能存在没有这个字存在的情况和北京天津等直辖市的情况,使用正则表达式判断是否存在关键字省,自治区,行政区,若存在最好,若不存在则先行判断是否是北京等的直辖市(若为直辖市则不需要在地址字符串上改动),再判断是否是黑龙江(中国的省份只有黑龙江是三个字的,再次投机嘻嘻嘻嘻嘻),若都不是则截取地址字符串的前两位字符做加上字做为省份。
而市就不好办了,在下才疏学浅,做不了那么全面,首先还是运用indexOf()函数查看是否有市字,若没有则遍历三个字的市的string对象和四个字的string对象,判断是否有匹配的,若无则取地址字符串的前两个字符作为市(毕竟两个字的市比较多hhh)。后面的地址和前面的大同小异,就不在赘述。我只创建了主方法和addressResolution(String, String)静态函数,主方法用来实现文件的输入输出,在主方法中调用addressResolution(String, String)函数获取详细地址,返回string对象。

性能分析

下载了jprofile,搞了好久好久好久才大概明白他是怎么用的。
第一次个人编程作业_第1张图片
第一次个人编程作业_第2张图片

单元测试

覆盖率截图
第一次个人编程作业_第3张图片

异常处理

1、对于地址中含有省道之类的地址无法准确识别如
输入“1!笪幕,宁夏回族自治区西吉县兴隆镇202省道兴13706874208隆国税分局兴隆购物广场.”
输出“{"姓名":"笪幕","手机":"13706874208","地址":["宁夏回族自治区西吉县兴隆镇202省","道兴市","","","隆国税分局兴隆购物广场"]},”
2、一开始没有考虑到乡和村的级别,后来加上了判断的语句。
3、运行发现电话号码不一定规格,可能出现14.开头的情况,就直接判断是否含有连续的十一位数字。
4、对于3级难度的完全无法处理,还需要好好学习。
5、对于1级2级难度的可以处理绝大部分感觉上
6、对于直辖市的判断只能通过if语句来判断。

总结

这次作业让我认识到自己是有多么的菜,要向大佬学习,多学一点是一点,学到就是赚到。代码的世界是美好的哦。

你可能感兴趣的:(第一次个人编程作业)