第一次编程作业
1.GitHub项目地址
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 1100 | 1325 |
Development | 开发 | 1000 | 1220 |
Analysis | 需求分析 (包括学习新技术) | 180 | 200 |
Design Spec | 生产设计文档 | 80 | 80 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 (为开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 120 | 120 |
Coding | 具体编码 | 500 | 700 |
Code Review | 代码复审 | 40 | 40 |
Test | 测试(自我测试,修改,提交修改) | 50 | 50 |
Reporting | 报告 | 100 | 105 |
Test Report | 测试报告 | 50 | 55 |
Size Measurement | 计算工作量 | 15 | 15 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 35 | 35 |
合计 | 1130 | 1355 |
3.计算模块接口的设计与实现过程
解题步骤
- 1.输入文件并按行读取信息到一个String类型的数组中
- 2.对数组中每一条信息进行处理
-首先是判断这条信息的难度级别并把难度级别从信息中切除
-再根据“,”把名字从信息中切除
-使用正则表达式匹配出信息中的电话号码,并将其从信息中切除
-使用正则表达式匹配信息中的地址,此时要根据最先判断出的难度级别选择将地址分为几级- 3.最后就是把处理后的信息输出
使用的类名、方法名及其说明
类名 | 方法名 | 说明 |
---|---|---|
Main类 | ||
main(String[] args) | 项目的入口,完成任务:输入文件并读取信息、判断信息的难度级别、调用informationResolution类的方法 | |
informationResolution类 | 提供了对信息的具体处理方法 | |
get_phone(String str) | 得到电话号码 | |
addressResolution1(String str) | 难度级别1的信息处理方法 | |
addressResolution2(String str) | 难度级别2的信息处理方法 |
关键代码
正则表达式参考来自
正则表达式匹配地址
难度级别1所用的正则表达式
String regex="((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+镇|.+局)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
难度级别2所用的正则表达式
String regex = "((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+镇|.+局)?(?<town>[^区]+区|.+镇|.+街|.+乡)?(?<road>[^路]+街|.*?巷|.*?路)?(?<num>[^号]+门牌号|.*?号)?(?<village>.*)"
4.计算模块接口部分的性能改进
这部分内容暂时还没做(不好意思)
5.计算模块部分单元测试展示
- 测试用例
2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
1!张三,福建省福州市闽13599622362侯县上街镇福州大学10#111.
2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.- 输出结果
{"姓名":"李四","电话":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街","道湖滨路","110号","湖滨大厦一层."]}
{"姓名":"张三","电话":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111."]}
6.计算模块部分异常处理说明
- 信息当中没有省或市这样的关键字(这个问题应该是可以解决的,我搜索了解决方法但是我确实不懂啊)
- 输入的手机号不规范
- 输入的信息没有难度级别
- 直辖市的处理
7.总结
- 这次的编程作业我采用java编写,原因是之前学过的C++基本上可能还给老师了,同时我在暑假自己看视频学了一点java的基础知识,所用我就自信地用了java。
- 但是在写代码的时候我才认识到自己学过的那么一丢丢java真的是太基础了(真的是菜),所以这次写代码的过程中大多数代码都是现学现用,而且这么短的时间内学的真的很浅,还是要继续努力啊!