第一次个人编程作业
[Github链接](https://github.com/Sophiaxixi/031702310.git
)
PSP表
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 120 | 100 |
Estimater | 估计这个任务需要多少时间 | 30 | 26 |
Development | 开发 | 900 | 750 |
Analysis | 需求分析 (包括学习新技术) | 150 | 130 |
Design Spec | 生成设计文档 | 90 | 75 |
Design Review | 设计复审 | 40 | 60 |
Coding Standard | 代码规范(为开发制定合适的规范) | 45 | 50 |
·Design | 具体设计 | 80 | 130 |
· Coding | 具体编码 | 360 | 340 |
Code Review | · 代码复审 | 30 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 160 | 220 |
Reporting | 报告 | 60 | 70 |
· Test Repor | · 测试报告 | 30 | 25 |
Size Measurement | 计算工作量 | 40 | 45 |
Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 45 | 40 |
. | · 合计 | 2180 | 2101 |
计算模块接口的设计与实现过程
-
解题思路
1.根据开头的1!和2!判断五级地址还是七级地址,并把这个去掉
2.根据逗号分割并用substring()提取出姓名
3.由于手机号不会和其他数字连在一起,可由11位连续数字提取出手机号码
4.省市县用正则表达式分割
-
类与函数
用到两个类 public class address和 public class part
-
public class address包含主函数,用来分割姓名和手机号,并且实现Json格式转换输出
-
public class part包含函数 addressResolution1(String address)和 addressResolution2(String address),分别用来分割五级地址和七级地址
-
关键代码
String regex = "(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
String regex = "(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇|.+道|.+街)?(?<street>.[^路]+路|.+道|.+巷|.胡同|.里弄|.弄)?(?<num>.[^号]+号)?(?<village>.*)";
-
输入
2!依山,福建省福州13756899511市鼓楼区鼓西街道湖滨路190号湖滨大厦一层.
1!妮奕,福建省福州市鼓楼18960221213区五一北路123号福州鼓楼医院.
2!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
1! 张三,福建省福州市闽13599622362侯县上街镇福州大学10#111.
-
输出
{"姓名":"依山","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道", "湖滨路","190号","湖滨大厦一层"]}
{"姓名":"妮奕","手机":"18960221213","地址":["福建省","福州市","鼓楼区","","五一北路123号福州鼓楼医院"]}
{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路","13号",""]}
{"姓名":" 张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111"]}
计算模块接口部分的性能改进
运行前的性能分析图
运行后的性能分析图
计算模块部分单元测试展示
- 测试adress类和part类
address方法利用率为100%,覆盖率为97%
apart方法利用率为50%,覆盖率为58%
计算模块部分异常处理说明
try
{......}
catch()
- 只有手机号没有地址的情况
- 文件流输入无法获取字符串
- 没有明确省市等字眼的时候依然会输出地址:[]
总结
只要学不死就往死里学
- 我太难了
- 速成真的速不成
- 看到了自己与大佬的差距
- 流下了不学无术的眼泪
一开始真的是题目都看不懂,群里大家讲的一堆都是看不懂的名词,于是开始自闭,开始后悔当初没有好好学习。本来想用c++根据字眼判断,后来不知道哪里冒出来的习惯想法,觉得再用c++就学不到新的东西,于是想用java.我只想说属实恐怖,真的太难了,一切都是我从来没有接触过的东西,连github怎么上传还是现学的。从java语法,了解IDEA,再到自己亲手写代码,测试,要是没有询问别人,我早就gg了。感谢给我帮助的朋友们,我一定好好学习,争取不丢计算机学子的脸。