第一次个人编程作业
1、Github地址:
https://github.com/Jardinxiny/ruangong/commit/32e1dbe6ff2911ddcc44b0b6bcecb90e6f16b486
2、PSP表格:
Personal Software Process Stages | 预计耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 10 | 10 |
估计这个任务需要多少时间 | 10 | 10 |
开发 | 1800 | 1980 |
需求分析(包括学习新技能) | 600 | 1000 |
生成设计文档 | 30 | 30 |
设计复审 | 10 | 10 |
代码规范(为目前的开发制定合适的规范) | 0 | 0 |
具体设计 | 50 | 50 |
具体编码 | 1000 | 600 |
代码复审 | 180 | 240 |
测试(自我测试,修改代码,提交修改) | 10 | 30 |
报告 | 60 | 60 |
测试报告 | 30 | 30 |
计算工作量 | 20 | 20 |
事后总结,并提出过程改进计划 | 10 | 10 |
合计 | 1870 | 2050 |
3、解题思路
刚拿到题目的时候不是很懂怎么操作,觉得c++忘记得差不多了,java和python还没开始学。根据题目上网搜索了关键字“地址截取省市区”,发现java的代码比较多,因此才决定用java写这题。然后依照网上的教程下了eclipese配置了环境,并学习了简单的java语句。
- 从键盘输入测试数据,然后用正则表达式提取连续11个数字即为电话号码,剩余的字符串中,提取“,”前面的人名。最后剩下的即为纯地址信息。
- 将地址信息用正则表达式匹配省市县区和详细地址五级
- 按格式输出
4.设计实现过程
由于我掌握太浅,不会写函数......所以没有自定义的函数......并且由于我写的代码不是用文件输入,我也不懂怎么用文件输入,所以不会做性能测试。。。很抱歉。
5、改进
没有进行有效的改进...现在只能做到从键盘输入测试数据,然后一个测试数据运行一次,且测试数据还必须是格式化的,即测试数据中明确写了“省”“市”之类的关键词,无法对直辖市划分(会在第一级地址显示null),也没有办法对更加详细的街道地址进行分割。这些都还待优化。
6、代码展示
//提取电话
Pattern p = Pattern.compile("[0-9\\.]{11}" );//匹配连续11个数字作为电话号码
Matcher m = p.matcher(line);
System.out.println("{");
//打印名字
char test = ',';
for(i=0;i< all.length;i++)
{
if( all[i]==test )break;
}//循环找到逗号的位置
System.out.println("\"姓名\":\"" + line.substring(0,i) + "\",");
//打印电话
while(m.find()){
System.out.println("\"手机\":\"" + m.group()+",");
}
//提取纯地址字符串
String c = m.replaceAll("");
String d = c.substring(i+1);
//地址划分
String regex="((?[^省]+省|.+自治区)|上海|北京|天津|重庆)?(?[^市]+市|.+自治州)(?[^县]+县|.+区|.+镇|.+局)?(?[^区]+区|.+镇|.+街|.+道|.+乡|.+路)?(?.*)";
Matcher n=Pattern.compile(regex).matcher(d);
System.out.println("\"" + "地址" + "\"" + ":" + "[");
//根据关键字省、市、县等匹配
while(n.find()){
System.out.println("\""+n.group(2)+"\""+",");
System.out.println("\""+n.group(3)+"\""+",");
System.out.println("\""+n.group(4)+"\""+",");
System.out.println("\""+n.group(5)+"\""+",");
System.out.println("\""+n.group(6)+"\"");
}
7、心得
-深刻体会到了自己缺乏各方面知识,尤其每天看着群里的大佬们交流,而我连个基本思路都没有,焦急的同时也很难过。提醒自己这次作业完成之后,不能因此放松,反而要因此警醒,抓紧时间补缺补漏,弥补自己的差距。
-这次作业其实对我没有太大的收获,因为太过仓促,而我又什么都还不会,所以很多东西都没有做好,更没有很好的改进优化。但也通过这次作业,让我意识到自己的不足,起码开了一个认识java的头。