第一次个人编程作业

一.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

五.计算模块接口部分的性能改进

性能分析图
第一次个人编程作业_第1张图片
后面改了一点点变成这样,不能算改进,改进是想改进,但是不会。。只是把其中的一些跟性能不相关的细节改了改。大概花了一个半小时,程序中消耗最大的函数是getAl.
第一次个人编程作业_第2张图片

六.计算模块部分单元测试展示

public class Ts {
    @Test
    public void test() {
        String regex="(?[^省]+自治区|.*?省|.*?行政区)?(?[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市)?(?[^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(?[^区]+镇|.+街道|.+乡|.+县)?(?[^村]+路|.+街|.+巷|.+道|.+段|.+队|.+弄|.+胡同|.+村|.+委会|.+开发区)?(?[^区号]+号)?(?.*)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher("福建省福州市");
        if(matcher.find()) {
            System.out.println(matcher.group("province"));
        }
    }
}

测试覆盖率截图
第一次个人编程作业_第3张图片

七.计算模块部分异常处理说明

代码没办法正确处理"张三,福建福州闽13599622362侯县上街镇福州大学10#111."的例子,出来的结果不是标准答案。

八.心路历程与收获

说真的这几天下来真的太煎熬了,真的是在为难菜鸡啊。我花费了大量时间去恶补有关知识,刚开始什么都做不出来也是很崩溃。后面还好团结力量大,不然我现在还爬不起来跪在原地。现在虽然运行结果也不是太好但是想到自己多少有点收获还是能够满足的,至少没白费时间吧。我觉得对于我来说最大的收获还是在于我意识到前两年熬的夜熬错地方了,欠的总是要补回去的。还有球球老师下回给我们留一条活路吧,可能对于大佬来讲不是什么,但是对于菜鸡来说真的要熬秃了头,跪。。。。。

你可能感兴趣的:(第一次个人编程作业)