第一次个人编程作业
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、对于地址中含有省道*之类的地址无法准确识别如
输入“1!笪幕,宁夏回族自治区西吉县兴隆镇202省道兴13706874208隆国税分局兴隆购物广场.”
输出“{"姓名":"笪幕","手机":"13706874208","地址":["宁夏回族自治区西吉县兴隆镇202省","道兴市","","","隆国税分局兴隆购物广场"]},”
*2、一开始没有考虑到乡和村的级别,后来加上了判断的语句。
*3、运行发现电话号码不一定规格,可能出现14.开头的情况,就直接判断是否含有连续的十一位数字。
*4、对于3级难度的完全无法处理,还需要好好学习。
*5、对于1级2级难度的可以处理绝大部分感觉上。
*6、对于直辖市的判断只能通过if语句来判断。
总结
这次作业让我认识到自己是有多么的菜,要向大佬学习,多学一点是一点,学到就是赚到。代码的世界是美好的哦。

浙公网安备 33010602011771号