软工实践-02
时间:2019-09-17
本文章向大家介绍软工实践-02,主要包括软工实践-02使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、GitHub仓库地址
https://github.com/viency-yy/131700146
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
· Estimate | · 估计这个任务需要多少时间 | 840 | 800 |
Development | 开发 | 240 | 180 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 150 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审 | 20 | 15 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 25 |
· Design | · 具体设计 | 60 | 40 |
· Coding | · 具体编码 | 180 | 200 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 30 |
· Reporting | · 报告 | 20 | 25 |
· Test Repor | · 测试报告 | 10 | 10 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 40 |
合计 | 1685 | 1610 |
三、解题思路
刚拿到题目十分懵逼,完全不知道如何入手,前面几天一无所获。后来看到大佬说用json、正则表达式,就开始疯狂百度,大部分都是在CSDN博客和博客园中看大佬的解法,然后去理解他的,再去思考,以下流程图为大致思路。
method1:依次提取“省”、“市”、“区/县”、“街道/镇”,并将其从地址簿中切除
method2:依次提取“省”、“市”、“区/县”、“街道/镇”、“路”、“门牌号”,并将其从地址簿中切除
四、关键算法
- 文件的写入(点+可展开)
1 public static void main(String[] args) throws IOException { 2 Main main=new Main(); 3 4 FileReader fileReader = new FileReader("E:\\test.txt"); 5 BufferedReader buf = new BufferedReader(fileReader); 6 String readLine = ""; 7 List<JSONObject> ads=new ArrayList<JSONObject>(); 8 while((readLine = buf.readLine()) != null){ 9 //System.out.println(readLine); 10 String flag=readLine.substring(0,1); 11 String address=readLine.substring(2); 12 13 if(flag.equals("1")) 14 { 15 JSONObject ad= main.method1(address); 16 ads.add(ad); 17 18 }else 19 { 20 JSONObject ad= main.method2(address); 21 ads.add(ad); 22 } 23 24 25 }
- 正则表达式
Pattern pattern = Pattern.compile("((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}"); // 创建匹配给定输入与此模式的匹配器。 Matcher matcher = pattern.matcher(str); //查找字符串中是否有符合的子字符串
- 提取关键字并将其切除(以姓名为例)
JSONObject object = new JSONObject(); //获取姓名 int index = str.indexOf(','); String name = str.substring(0,index); object.put("姓名",name); //将姓名从地址簿中切除
- 输出示例
[{"姓名":"李四","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"],"手机":"13756899511"}, {"姓名":"张三","地址":["福建省","福州市","闽候县","上街镇","福州大学10#111"],"手机":"13599622362"}, {"姓名":"王五","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"],"手机":"18960221533"}, {"姓名":"小美","地址":["北京","北京市","东城区","","交道口东大街","1号","北京市东城区人民法院"],"手机":"15822153326"}, {"姓名":"小陈","地址":["广东省","东莞市","","凤岗镇","风平路13号"],"手机":"13965231525"}]
五、性能改进
用JProfiler生成一张性能分析图,但是第一次用,他的分析结果我也没看懂,也没时间了,就。。不知道如何改进了。我太菜了dbq
六、单元测试展示
七、异常处理说明
- 刚开始时,缺少“省”、“市”这类字眼的数据时,没法正常输出
- 本来想用字典或者set存省、市....然后第一个逗号之后,向后探测两个字符,然后发现,还有“黑龙江省”,三个字的省名
用正则表达式之后,就解决了
八、心路历程与收获
- 第一次知道中国的地址还能有这么多的分类,第一次真的这么认真地去学习地理
- 我本来就是菜鸡,题目一出来,连代码都敲不出来,更别说附带的那么多要求。。。然后都是在问大佬,问度娘,一步一步慢慢写出来的。真的太难了,我太难了
- 和室友一起熬夜写代码的经历,体验一把就好了,ballball老师下次手下留情
- 我真的太菜了,好多软件都是第一次用,而且基本都是英文版的,跟着教程走都累,看来还得去学学专业英语了,唉
原文地址:https://www.cnblogs.com/zy159/p/11519856.html
- 机器学习实战 | 第四章:模型验证和选择
- ofbiz中FreeMarkerWorker的makeConfiguration方法
- 后台进程(守护进程)自动备份PostgreSQL数据库
- 了解这些PHP小技巧吗?
- 结构体字节对齐
- 在Atom中设置Python开发环境
- Assignment 3 (神经网络) | 斯坦福CS231n-深度学习与计算机视觉课程
- ofbiz view渲染处理机制
- ofbiz方法一 条件查询createConditionList
- ofbiz的ant命令创建模块
- 几个不常用但特别实用的PHP预定义变量
- tomcat源码解读六 tomcat中的session生命历程
- tomcat源码解读五 Tomcat中Request的生命历程
- PostQueuedCompletionStatus
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel执行php artisan migrate报错的解决方法
- Laravel统计一段时间间隔的数据方法
- laravel withCount 统计关联数量的方法
- 使用laravel和ECharts实现折线图效果的例子
- Laravel 将数据表的数据导出,并生成seeds种子文件的方法
- Laravel Eloquent ORM 多条件查询的例子
- laravel5.5添加echarts实现画图功能的方法
- thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
- Laravel 创建指定表 migrate的例子
- Laravel find in set排序实例
- Laravel 对某一列进行筛选然后求和sum()的例子
- 关于laravel 数据库迁移中integer类型是无法指定长度的问题
- laravel多条件查询方法(and,or嵌套查询)
- thinkphp框架使用JWTtoken的方法详解
- Laravel创建数据库表结构的例子