1、https://github.com/Aurora-wzx/2019software/tree/master/031702319
2、
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟 |
---|---|---|---|
Planning | 计划 | 30 | 17 |
· Estimate | 估计这个任务需要多少时间 | 30 | 17 |
Development | 开发 | 665 | 766 |
· Analysis | 需求分析 (包括学习新技术) | 30 | 95 |
· Design Spec | · 生成设计文档 | 15 | 10 |
· Design Review | · 设计复审 | 20 | 15 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 27 |
· Design | · 具体设计 | 120 | 83 |
· Coding | · 具体编码 | 360 | 235 |
· Code Review | · 代码复审 | 60 | 77 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 224 |
Reporting | 报告 | 210 | 128 |
· Test Repor | · 测试报告 | 60 | 55 |
· Size Measurement | · 计算工作量 | 60 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 90 | 43 |
合计 | 905 | 911 |
3、计算模块接口的设计与实现过程
函数分为3类,找手机号,找姓名和找地址,我的代码没考虑“省”,“市”等缺失的情况,所以问题可以归结为匹配字符串问题,姓名就很容易了,在“!”和“,”之间的就是姓名。然后电话号码,我是这样判断的,如果遇到连续的11个数字那么就是手机号,题目中描述的是手机号,但如果数据中出现了不为11位的那么就会当作门牌号处理,一般来说门牌号长度应该比手机(或电话)短,但既然题目说是手机,便这样处理了。地址比较麻烦,所以这一部份是我花的时间最多的,由于能力有限,我对其进行了简化,默认地址是完整的,除此之外也忽略了直辖市,特别行政区,县级市等情况,因为按照我的思路如果考虑这种情况会导致其余情况将另一些情况判断错误。以下是我的函数及接口设计string findname(string )
找姓名,参数为每一条地址簿,int searchnum(char )
判断某个字符是否为数字,int searchphone(string ,int )
判断是否为手机号,int类型参数代表的是从这个位置开始,int findphone(string ,int )
参数含义同上,作用是将string中的手机号提取出来。int searcharea(string,int )
判断某个字符串是否为“省”,“市”等,整形参数为地址级别,string findarea(string,int &,int &)
提取地址信息,第二个参数是上一次提取地址后下一级地址的起始位置,目的是可以不用再遍历一遍字符串,第三个参数是地址级别。
4、计算模块接口部分的性能改进。
这一部分用时不是很多,原因是因为我已经将题目简化很多了,所以代码实现也比较简单,改进就比较少,最开始时查找地址时是一遍遍地遍历字符串的,后来发现地址的顺序是不会出错的,所以记录下上次找到的位置,下次从那开始,这样只要遍历一遍字符串就行了;还有就是找手机号码那做了些改进,改成了11个连续数字即判断为手机。
5、计算模块部分单元测试展示。
6、计算模块部分异常处理说明。
这部分我有对找不到姓名和手机号做了处理,但是手机号位数一旦出错,会提示找不到手机号,然后将错误的手机号当作地址信息来处理。然后还有对!和,的处理,没有!就直接当作没找到姓名了,没有,姓名和地址会混在一起,所以输出“输入格式错误”。
这样的处理并没有解决实际问题,但是通过这些处理实现了在异常数据的情况下程序不会崩溃,并提示相关错误信息。
7、此处表格并在第二点内。|