第一次个人编程作业
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.模块接口设计与实现
设计
- 首先regex分割“,”和\d{11}来识别姓名和电话号码。
- 然后是这个帮了无数人大忙的:https://blog.csdn.net/superSubfn/article/details/80290491。
- 最后再json.put划分各级地址。
实现
本来写了四个类,看着看着晕掉了就删了三个,全部都归在一起了。
为了避免使用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()
构造测试数据思路:
通过比对“市”或“自治区”的位置,精确划分“省”。
测试覆盖率:
6.异常处理
样例:
1.无手机号
2.无级别
7.小结
这是我第三个完整的java程序,在参考了网路上各路大佬的方法,合起来看了有半天的csdn,掘金和简书之后:
- 初步了解实践了json的用法
- 学习了祖国大好河山的地理知识
- 因为测试程序跑不出来深深自闭
- 正则表达式牛批嗷