第一次个人编程作业

github

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 60
Estimate 估计这个任务需要多少时间 1370 1700
Development 开发 300 480
Analysis 需求分析 (包括学习新技术) 60 60
Design Spec 生成设计文档 30 30
Design Review 设计复审 30 30
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 30
Design 具体设计 30 30
Coding 具体编码 600 720
Code Review 代码复审 60 60
Test 测试(自我测试,修改代码,提交修改) 60 60
Reporting Standard 报告 30 30
Test Repor 测试报告 60 60
Size Measurement 计算工作量 20 30
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 50
合计 1370 1700

解题思路

因为前两级的省和市会缺失,所以决定打下这两个级别的表进行预处理,拿到字符串之后先处理电话号码然后处理名字和标点。然后根据打的表处理省市,之后按关键字处理接下来的级别。实际操作起来发现比想象中的难很多。

设计实现过程

将代码写了一部分之后发现会出现编码的问题,于是网上找资料尝试转编码。完成这步之后发现后面的东西比想象中的还要复杂很多, 整理好省市的情况之后发现有些二级地区的名字后缀是很特殊的,于是对代码和数据进行了大范围的调整,这一部分花了不少时间。

类图

设计了两个类\(People\)\(Address\)以及一个命名空间\(Area\)

\(People\):

函数 作用
GetAns 用来返回运算结果
GetNumber 提取手机号码
GetName 提取姓名
GetAddress 调用\(Address\)类处理地址的具体信息
ClearPunctuation 清除标点符号
doit 串联这些函数统一进行操作

性能分析

从图上可以看出,大部分的时间都花费在了转换编码、文件流读入输出、字符串类型的运算以及地址的预处理上,但是这一部分的时间是不可或缺的。

消耗时间最多的函数:

单元测试

李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
小陈,广东省东莞市凤岗13965231525镇凤平路13号社保厂.
王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
单元测试结果:

异常处理

处理了手机号码格式不正确、丢失姓名和地址格式错误的情况

张三,福建福州闽1359362侯县上街镇福州大学10#111.
,福建福州闽13599622362侯县上街镇福州大学10#111.
张三,13599622362福州大学10#111.

运行结果:

代码展示:

运用标记符号在匹配失败是标记在何种类型的匹配下会失败,然后返回异常的原因。

posted @ 2019-09-17 00:33  Seast  阅读(215)  评论(3编辑  收藏  举报