第一次编程作业
GitHub项目地址
1.PSP表格
PSP2.1 | Personal Software Process Stage | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 10 |
Estimate | 估计这个任务需要多少时间 | 1030 | 1310 |
Development | 开发 | 300 | 400 |
Analysis | 需求分析(包括学习新技术) | 120 | 300 |
Design Spec | 生成设计文档 | 100 | 60 |
Design Review | 设计复查 | 30 | 10 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 60 | 30 |
Design | 具体设计 | 60 | 60 |
Coding | 具体编码 | 200 | 300 |
Coding Review | 代码复审 | 30 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 20 | 20 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 30 | 30 |
合计 | 1030 | 1130 |
2.解题思路
1.字符串输入;
2.用string.split()提取姓名;
3.使用函数分割手机号码和地址;
4.对于剩下的地址,使用Java正则表达式从地址串中解析提取省市区路;
5.文件输出。
3.计算模块接口的设计与实现过程
·代码中主要使用到的函数
序号 | 函数 | 作用 |
---|---|---|
1. | string.split(,) | 从字符串中分离出姓名 |
2. | digitalextract(string s) | 从字符串里提取手机号码 |
3. | replaceAll("","") | 在字符串中把手机号码更换成为空格 |
4. | addressResolution() | 在剩下的字符串中分离出省市区街道(目前只能到这个地步) |
·相关函数解释:
digital extract(string s):
因为手机号码固定为连续的11位数字,所以该函数提取字符串中连续的11位数字而并非提取规定的电话号码。
address Resolution():
省市区街道分离,采用正则表达式来进行,因为不会API,所以这个正则表达式是不准确的(它只能分理出带有“省”,“市”,“区”,“街道”等相关词时才可以正确运行)。
实现过程
4.计算模块接口部分的性能改进
地址解析采用Java的正则表达式:
?
[省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[市]+自治州|.?地区|.?行政单位|.+盟|市辖区|.?市|.?县)(? [县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[区]+区|.+镇)
?(?.*
但此表达式只能分割到区。。
所以更改为
?
[省]+自治区|.*?省|.*?行政区)?(?<city>[市]+自治州|.?地区|.?行政单位|.+盟|市辖区|.?市|.?县)(? [县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[区]+区|.+镇|.
+街道)?(?.*
该表达式可分割到街道
但上面的表达式只能地址解析自身带有“省市区”等字眼的字符串,对于直辖市和无“省市区”等字眼的字符串解析无能为力。。。而我,暂时也不会改。。。。
注:该表达式借鉴于:CSDN博客
并且我的代码只能单行输入输出,并不能json 输入输出。。(太惨了)
5.计算模块部分单元测试展示
因为不会,所以没有。。
6.计算模块部分异常处理说明
1.输入:有直辖市的地址
输出:省份缺失,未能识别直辖市;
2.输入:有自治区的地址
输出:正常输出
7.心路历程与收获
·心路历程
刚看到题目,崩溃啊,这是要干啥,我在哪,我是谁,最后开始上网百度。。百度完,发现自己太菜了,Java不会,python不会,C++也并不熟练。
最后,决定从头开始学Java,用Java编写。我太菜了,装个Java环境就用了一下午,然后开始熟悉各种Java自带的包。最后,到了deadline,我能
交出来的还是一个不完整的代码,测评系统也不知道怎么弄,我还要好好学习!(哭泣)
·收获
我通过这次作业学会了简单的Java编写,百度了很多我完全不懂的名词(tcl),这也是一种收获把。
然后,这次作业督促我要学json了,我真的会认真去学json的,然后,把之前丢的前端知识也捡捡。。