第一次个人编程作业
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 1670 | 1860 |
Development | 开发 | 300 | 360 |
Analysis | 需求分析 (包括学习新技术) | 300 | 360 |
Design Spec | 生成设计文档 | 10 | 10 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 300 | 300 |
Coding | 具体编码 | 300 | 360 |
Code Review | 代码复审 | 10 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Reporting | 报告 | 60 | 60 |
Test Repor | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 1670 | 1860 |
解题思路
- 截取前两个字符,判断地址类别。
- 在","处分割字符串,提取姓名。
- 判断连续的11位数字提取手机号码。
- 通过正则表达式,对省、市、县的关键词匹配,实现地址信息的提取。
- 补全缺省信息还不会做,可以通过调用api来实现地址补全。
主要函数
函数名 | 功能 |
---|---|
getName(String input) | 姓名提取 |
getPhone(String str) | 手机号码分离 |
getAddress(String address) | 地址分割 |
姓名正则表达式:".*?(?=\,)" | |
手机号码正则表达式:"((13[0-9]) | (14[5 |
地址正则表达式:"(? |
.*?省 |
流程图
关键代码
程序性能分析图
测试覆盖率
部分数据测试
控制台打印结果
{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","","鼓西街道湖滨路110号湖滨大厦一层"]}
{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111"]}
{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","123号福州鼓楼医院"]}
{"姓名":"小美","手机":"15822153326","地址":["北京市","东城区交道口东大街1号北京市","东城区","","人民法院"]}
总结:从结果来看测试数据与作业要求还是有所差距。原因有多方面,首先是自己学习态度不端正,暑假放纵,现时买单,Java与c语言还是有差距的,匆忙上手,最终作业的结果也是差强人意;其次是时间分配的不合理,未能合理规划作业完成时间,临时抱佛脚,黑白两颠倒。最后,我充分认识到自己的知识储备的苍白无力,希望在下一阶段好好学习,弥补差距。