第一次个人编程作业

一、我的github仓库

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划6080
· Estimate· 估计这个任务需要多少时间9001300
Development开发300500
· Analysis· 需求分析 (包括学习新技术)5040
· Design Spec· 生成设计文档3030
· Design Review· 设计复审2010
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)7060
· Design· 具体设计10080
· Coding· 具体编码2050
· Code Review· 代码复审1030
· Test· 测试(自我测试,修改代码,提交修改)250300
Reporting报告150200
· Test Repor· 测试报告120130
· Size Measurement· 计算工作量2015
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划4030
· 合计21402855

三、计算模块接口的设计与实现过程:

  • 思路:
    • 一开始想单纯的想分离名字分离电话之后,就进行关于关键字的判断,从而的到多级地址。
    • 但仔细审题之后发现,有些样例不存在关键字,想了很久,没想到怎么单纯从语法中解决这个问题,遂觉得应该引入地址信息文件。然后通过每一回的解析解决这个问题。
  • 找资料:
    • 开始想先引用百度的sdk来弄,后来发现自己不会弄,又想着调api,发现自己又不会用,而且不太确定,调用api是否能过评测,所以决定弄离线的包和依赖。然后就去搜索全国地址的列表,即打出省份可以获得其中的城市列表的方法。后来找到了一个工具类,能够比较快的输入省份或者城市,从而获得城市列表或区列表,然后 ,我再用列表的字符串和所需要分割地址进行匹配,从而逐步解决这个问题。
  • 设计实现过程:
    • 在开始写的时候,我没有想太多,想着一个类写多个方法就能解决问题。然后就在一个类中写了挺多的方法,其中包括:
函数名作用思路
name_spilt();分离名字在逗号之前的就是名字和难度
number_spilt();分离电话号码连续十一位就是电话号码
provinces();分离省份得到 全国的省份,让省份去一一匹配
citys();分离城市得到全省的城市列表,让其一一匹配
qus();分离区得到全省的区列表,让其一一匹配
zhens()分离镇和乡因为本地文件没有到镇,所以就利用关键字匹配
lus();分离各种详细的路利用关键字匹配
haos();用于分离各级地址利用关键字匹配
last();最后留下来的详细地址利用关键字匹配
printjson();将字符串用json输出遇到,【{产生不同的换行
  • 以上的几个函数具有先后关系:

1794653-20190917203946495-589805328.png

  • 进行逐步分离之后,就能够得到一个分离之后的地址,再通过判定首位是1还是2,决定需要输出什么样子的字符串。

  • 性能分析图:

  • 关键代码
public void Provinces(){
        //先将地址进行处理,得到前两位和前三位分别两个。如果第一个成立则不运行第二个,反之运行第二个。
        String dizhi2,dizhi3;
        boolean two=false;
        dizhi2 = dizhi.substring(0,2);
        dizhi3 = dizhi.substring(0, 3);
        LocalUtil lu =  LocalUtil.getInstance();
        List<String> list =     lu.getProvinces("中国");
        for(int i=0; i<list.size(); i++){
            if(dizhi2.equals(list.get(i))){
                two = true;
                provine=dizhi2;
                
                break;
            }
        }
        if(two == false){
            
            provine = dizhi3;
             
        }
        if(two == true){
            String k = dizhi.substring(2,3);
            if(k.equals("省")){
                dizhi = dizhi.substring(3);
            }
            else{
                dizhi=dizhi.substring(2);
            }
        }else{
            String k = dizhi.substring(3,4);
            if(k.equals("省")){
                dizhi = dizhi.substring(4);
            }
            else{
                dizhi=dizhi.substring(3);
        
            }
        }
        
    }

单元测试

-测试了一些比较案例
1!李四,福建鼓楼13756899511鼓西街道湖滨路110号湖滨大厦一层.
1!张三,福州市闽13599622362侯县上街镇福州大学10#111.
1!刘湖,吉林省白山市六道江镇西村药店18694520738.
1!王五,腾冲市满邑社区华园三小区47号18694520738.
1!咸陡隐,江苏省苏州市吴江13184142847区平望镇新业织造有限公司吴江区平望镇双浜村村民委员会.
2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
2!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
2!王五,云南省昭通市水富18694520738县云川路1号.
2!王五,云南省迪庆藏族自治州18694520738香格里拉市.
2!王五,四川省眉山市仁寿18694520738县黑龙滩镇牌坊街.
2!王五,陕西省渭南市韩18694520738城市108国道附近.

输出:
1794653-20190920212437886-828849645.png

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

出现的状况之一:出现有省无市的情况,所以直接进行对于全体市的遍历,最后的到了答案;

六、心路:

  • 懂了分析问题,以及对工具和时间的分配。
  • 代码初步完成的时间挺快的,但是后来bug改了好多,然后呢,对于自己这种全部放在一个类的做法深恶痛绝,下次做项目,一定要做好多个类,毕竟也要体现出封装的意义才行。
  • 后来在一步一步完成的路上,还是学会了很多,学会了github怎么应用,学会了该怎么比较好的完成一个项目。不过对于gradle并没有非常的会,以及对于java的评测工具没有特别能够使用。
  • 我会继续努力的,这个作业只是一个开始,不是结束。以后会继续加油,学习好使用更多的工具,不会像现在这样,学习使用工具的时间多于代码的时间,导致代码并没有非常的完善,还有挺多的bug
  • 继续努力好吧。软工对我的提升是目前学习生涯中少有的。

转载于:https://www.cnblogs.com/cgh2333/p/11536664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值