第一次个人编程作业
1、GitHub地址:
https://github.com/SilentSamsara/031702625.git
2、预计PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) |
---|---|---|
Planning | 计划 | 30 |
· Estimate · | 估计这个任务需要多少时间 | 360 |
Development | 开发 | 120 |
· Analysis · | 需求分析 (包括学习新技术) | 40 |
· Design Spec · | 生成设计文档 | 30 |
· Design Review · | 设计复审 | 30 |
· Coding Standard · | 代码规范 (为目前的开发制定合适的规范) | 20 |
· Design · | 具体设计 | 30 |
· Coding · | 具体编码 | 120 |
· Code Review · | 代码复审 | 30 |
· Test · | 测试(自我测试,修改代码,提交修改) | 120 |
Reporting | 报告 | 30 |
· Test Repor · | 测试报告 | 20 |
· Size Measurement · | 计算工作量 | 20 |
· Postmortem & Process Improvement Plan · | 事后总结, 并提出过程改进计划 | 30 |
3、计算模块接口的设计与实现过程
开始设计时,想到是写三个类,一个主类Main,用于创建变量和实现文件的输入和输出方法,一个Person类存放姓名和电话号码,一个Location类存放分级后的地址。但是在后来,发现地址匹配需要一个地址库,于是创建了一个AddressLibrary静态类,用于存放省级名称和市级名称。Main类中调用接收.txt文件进来先匹配省和市,再将剩下的字符串送入Location类中,Location类处理完再整合.json格式数据送入写文件函数中;Person类中有两个函数一个是设置名字和电话号码,另一个是返回名字和电话号码json格式的String类型数据;Location类,是比较复杂的一部分,主要是将传入的字符串进行处理保存,然后返回,处理过程中考虑的事情比较多。。。。。。
4、计算模块接口部分的性能改进
将Location类实例化到Person类中,这样就可以通过Person类直接调用Location类中的方法。在拼接最后输出的Json格式时,由于分布在两个不同的类中。显得比较复杂,所以就在Person类的方法中直接调用Location类的方法,拼接完成后直接返回主函数,输出到文件中。大体图如下:
5、计算模块部分单元测试展示
测试输入:
1!鲁胞,上海长宁区周18951233466家桥街道长宁路999号春天花园.
1!喻矫,北京和15298465108平里街道黄寺大街甲1号院.
1!宰训,西藏自治区拉萨市尼木县续迈乡103县道尼木县15290504225续迈乡中心卫生院.
1!谷梁悍,北京市门头沟区斋堂镇军响村军响中心小18916133476学.
2!茅参,上海市嘉定区马13347914736陆镇嘉新公路1157号樊家村1256号楼.
3!廉捷咏,浙江省上城区紫阳街道太庙巷62号紫阳学前教18999108285育集团.
3!汲者,江苏灌13555806486南县田楼镇新盘村新盘幼儿园.
3!符乡,安徽大观区菱湖街道宜园13281503317路80号.
3!汝舟孙,贵州省修文县龙岗社区15766780930服务中心阳明西路196号龙岗居委会.
3!孙旗乖,13366755810白城市洮北区长庆南街65号.
结果输出:
[
{
"姓名": "鲁胞",
"电话号码": "18951233466",
"地区":[
"上海",
"上海市",
"长宁区",
"周家桥街道",
"长宁路999号春天花园",
]
},
{
"姓名": "喻矫",
"电话号码": "15298465108",
"地区":[
"北京",
"北京市",
"",
"和平里街道",
"黄寺大街甲1号院",
]
},
{
"姓名": "宰训",
"电话号码": "15290504225",
"地区":[
"西藏自治区",
"拉萨市",
"尼木县",
"续迈乡",
"103县道尼木县续迈乡中心卫生院",
]
},
{
"姓名": "谷梁悍",
"电话号码": "18916133476",
"地区":[
"北京",
"北京市",
"门头沟区",
"斋堂镇",
"军响村军响中心小学",
]
},
{
"姓名": "茅参",
"电话号码": "13347914736",
"地区":[
"上海",
"上海市",
"嘉定区",
"马陆镇",
"嘉新公路",
"1157号",
"樊家村1256号楼",
]
},
{
"姓名": "廉捷咏",
"电话号码": "18999108285",
"地区":[
"浙江省",
"",
"上城区",
"紫阳街道",
"",
"太庙巷62号",
"紫阳学前教育集团",
]
},
{
"姓名": "汲者",
"电话号码": "13555806486",
"地区":[
"江苏省",
"",
"灌南县",
"田楼镇",
"",
"",
"新盘村新盘幼儿园",
]
},
{
"姓名": "符乡",
"电话号码": "13281503317",
"地区":[
"安徽省",
"",
"大观区",
"菱湖街道",
"宜园路",
"80号",
"",
]
},
{
"姓名": "汝舟孙",
"电话号码": "15766780930",
"地区":[
"贵州省",
"",
"修文县",
"",
"龙岗社区服务中心阳明西路",
"196号",
"龙岗居委会",
]
},
{
"姓名": "孙旗乖",
"电话号码": "13366755810",
"地区":[
"",
"",
"白城市洮北区",
"长庆南街",
"",
"65号",
"",
]
}
]
本地测试采用的cmd指令:
截图:
测试覆盖率:
…
6、计算模块部分异常处理说明
异常:
1、 直辖市、特别行政区、自治区的后缀多显示了“省”或没有正常显示;
2、 一些空的地址内容中会出现多出一两个字;
3、 电话号码识别的时候,会错误的把门牌号、楼号等识别成电话号码;
......
处理:
1、 直辖市、特别行政区和自治区提出另外讨论总共4+2+5=7个;
2、在返回值的时候多判断一下空地址是否正确;
3、暴力识别,写个循环识别11位手机号码。
7、实际PSP表格
PSP2.1 | Personal Software Process Stages | 实际耗时(分钟) |
---|---|---|
Planning | 计划 | 30 |
· Estimate · | 估计这个任务需要多少时间 | 720 |
Development | 开发 | 360 |
· Analysis · | 需求分析 (包括学习新技术) | 140 |
· Design Spec · | 生成设计文档 | 60 |
· Design Review · | 设计复审 | 40 |
· Coding Standard · | 代码规范 (为目前的开发制定合适的规范) | 30 |
· Design · | 具体设计 | 40 |
· Coding · | 具体编码 | 240 |
· Code Review · | 代码复审 | 180 |
· Test · | 测试(自我测试,修改代码,提交修改) | 240 |
Reporting | 报告 | 60 |
· Test Repor · | 测试报告 | 60 |
· Size Measurement · | 计算工作量 | 40 |
· Postmortem & Process Improvement Plan · | 事后总结, 并提出过程改进计划 | 30 |