陈百里  

第一次编程作业

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的,然后,把之前丢的前端知识也捡捡。。

posted on 2019-09-17 22:19  陈百里  阅读(161)  评论(6编辑  收藏  举报