第一次个人编程作业

1.Github

JUICY33

2.PSP表格

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

3.模块接口设计与实现

设计

实现

本来写了四个类,看着看着晕掉了就删了三个,全部都归在一起了。

为了避免使用for去比对所有地址串带来的性能浪费,就引入了一个表,比对前两个字。

代码组织如下

关键代码:
String regex="(?[省]+自治区|.*?省|.*?行政区|)(?[市]+自治州|.?地区|.?行政单位|.+盟|市辖区|.?市|)(?[^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(?.+镇|.+街道)?(?.街|.路|.巷)?(?[\d]+号|)?(?.*)";

返回:

[{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]},
{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","","","福州大学10#111"]},
{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]},
{"姓名":"小美","手机":"15822153326","地址":["北京","北京市","东城区","","交道口东大街","1号","北京市东城区人民法院"]},
{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路","13号",""]}]

4.接口性能

比for快了很多。

程序中消耗最大的函数:

  • 读取数据函数byte[ ]

5.单元测试展示

单元测试代码:

private static void getProvince(String add){
        int len = 0;
        for (String s : level_one){
            String sub = s.substring(s.length() - 1);
            if (sub.equals("省")){
                if (add.substring(0,s.length() - 1).equals(s.substring(0,s.length() - 1))) {
                    province = s;
                    len = s.length() - 1;
                    if (add.charAt(s.length() - 1) == '省') {
                        len = s.length();
                    }
                    break;
                }
            }else if (sub.equals("市")) {
                if (add.substring(0,s.length() - 1).equals(s.substring(0,s.length() - 1))) {
                    province = s.substring(0,s.length() - 1);
                    city = s;
                    len = s.length() - 1;
                    if (add.charAt(s.length() - 1) == '市') {
                        len = s.length();
                    }
                    break;
                }

            }else if (s.substring(s.length() - 3).equals("自治区")) {
                if (add.substring(0,s.length() - 3).equals(s.substring(0,s.length() - 3))) {
                    province = s;
                    len = s.length() - 3;
                    if (add.substring(s.length() - 3,s.length()).equals("自治区")) {
                        len = s.length();
                    }
                    break;
                }
            }
        }

        nowAdd = add.substring(len);
        return;
    }

测试函数:

getprovince()

构造测试数据思路:

通过比对“市”或“自治区”的位置,精确划分“省”。

测试覆盖率:
img

6.异常处理

img

样例:

1.无手机号
2.无级别

7.小结

这是我第三个完整的java程序,在参考了网路上各路大佬的方法,合起来看了有半天的csdn,掘金和简书之后:

  • 初步了解实践了json的用法
  • 学习了祖国大好河山的地理知识
  • 因为测试程序跑不出来深深自闭
  • 正则表达式牛批嗷
posted @ 2019-09-29 19:44  juicy33  阅读(174)  评论(2编辑  收藏  举报