一.Github项目地址
二.PSP表格
| PSP2.1 | Personal Software Process Stage | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 40 |
| Estimate | 估计这个任务需要多少时间 | 60 | 40 |
| Development | 开发 | 240 | 300 |
| Analysis | 需求分析(包括学习新技术) | 840 | 1000+ |
| Design Spec | 生成设计文档 | 30 | 20 |
| Design Review | 设计复审 | 60 | 30 |
| Coding Standard | 代码规范(为目前的开发制定合适的规范 | 60 | 30 |
| Design | 具体设计 | 60 | 30 |
| Coding | 具体编码 | 360 | 300 |
| Code Review | 代码复审 | 30 | 30 |
| Test | 测试(自我测试,修改代码,提交修改) | 240 | 200 |
| Reporting | 报告 | 60 | 50 |
| Test Report | 测试报告 | 30 | 30 |
| Size Measurement | 计算工作量 | 10 | 10 |
| Postmortem &Process Improvement Plan | 事后总结,并提出过程改进计划 | 60 | 30 |
| 合计 | 2260 | 2140 |
三.解题思路描述
看完题目后,我是呆滞的。
我的第一想法就是把手机号从地址当中提取出来。将姓名、地址以及电话号码分门别类,再着重分析地址的成分。
- 首先姓名可以根据“,”分出来
- 根据正则表达式可以将11位的电话提取出来,因为手机号码一定不会和地址中的数字相邻,所以手机号不会和地址中的数字混淆
- 着重分析怎样从字符串中获取省市区信息。这里通过上网查询发现很多都是通过正则表达式解决这个问题的,这里有借鉴网上的代码
其次还要注意直辖市和省份的区别,所以直辖市要单独拎出来考虑。
四.设计实现过程
感觉如果用c++做会很麻烦很麻烦,上网查资料也是很多都跟正则表达式有关,所以本菜鸡只能去恶补,我太难了。
字符串的处理我都写在了一个类里,就是姓名和手机号以及省市区等的分割,同时还有写入和读出的类。其实分得不是很有条理emmm,先把有的列上去吧。耗费很多时间去弄User类,里面主要负责切分字符串的,分别提取姓名、电话号码以及省市区信息。
| 功能 | 类名 |
|---|---|
| 主函数 | Main |
| 读取以及写入文件 | DoFile |
| 字符串的分割 | User |
主要函数
| 作用 | 函数名 |
|---|---|
| 提取姓名 | getName |
| 提取电话号码 | getPhone |
| 提取省市区等信息 | getAl |
五.计算模块接口部分的性能改进
性能分析图
后面改了一点点变成这样,不能算改进,改进是想改进,但是不会。。只是把其中的一些跟性能不相关的细节改了改。大概花了一个半小时,程序中消耗最大的函数是getAl.
六.计算模块部分单元测试展示
public class Ts {
@Test
public void test() {
String regex="(?<province>[^省]+自治区|.*?省|.*?行政区)?(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市)?(?<dist>[^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+镇|.+街道|.+乡|.+县)?(?<village>[^村]+路|.+街|.+巷|.+道|.+段|.+队|.+弄|.+胡同|.+村|.+委会|.+开发区)?(?<number>[^区号]+号)?(?<road>.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("福建省福州市");
if(matcher.find()) {
System.out.println(matcher.group("province"));
}
}
}
测试覆盖率截图
七.计算模块部分异常处理说明
代码没办法正确处理"张三,福建福州闽13599622362侯县上街镇福州大学10#111."的例子,出来的结果不是标准答案。
八.心路历程与收获
说真的这几天下来真的太煎熬了,真的是在为难菜鸡啊。我花费了大量时间去恶补有关知识,刚开始什么都做不出来也是很崩溃。后面还好团结力量大,不然我现在还爬不起来跪在原地。现在虽然运行结果也不是太好但是想到自己多少有点收获还是能够满足的,至少没白费时间吧。我觉得对于我来说最大的收获还是在于我意识到前两年熬的夜熬错地方了,欠的总是要补回去的。还有球球老师下回给我们留一条活路吧,可能对于大佬来讲不是什么,但是对于菜鸡来说真的要熬秃了头,跪。。。。。
本文分享了个人软件过程(PSP)的实践经验,详细记录了从计划到测试的每个阶段耗时对比,以及在字符串处理任务中遇到的挑战与解决方案。作者通过分析地址字符串来提取关键信息,如姓名、电话和地址组件,使用正则表达式进行数据分割,并讨论了性能改进和异常处理策略。
349

被折叠的 条评论
为什么被折叠?



