这个作业属于哪个课程 | <班级的链接> |
---|---|
这个作业要求在哪里 | <作业要求> |
这个作业的目标 | 实现一个能够对赛事数据进行统计的控制台程序 |
作业任务概述:
完成对世界游泳锦标赛跳水项目相关数据的收集,并实现一个能够对赛事数据进行统计的控制台程序。
目录
3.2Athlete类,Result类以及方法类Lib的设计
一.Gitcode项目地址
gitcode项目地址链接: 仓库链接
二.PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 70 |
• Estimate | • 估计这个任务需要多少时间 | 20 | 10 |
Development | 开发 | 360 | 600 |
• Analysis | • 需求分析 (包括学习新技术) | 110 | 100 |
• Design Spec | • 生成设计文档 | 30 | 30 |
• Design Review | • 设计复审 | 60 | 30 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
• Design | • 具体设计 | 120 | 150 |
• Coding | • 具体编码 | 360 | 400 |
• Code Review | • 代码复审 | 90 | 60 |
• MyTest | • 测试(自我测试,修改代码,提交修改) | 120 | 300 |
Reporting | 报告 | 100 | 150 |
• MyTest Report | • 测试报告 | 30 | 60 |
• Size Measurement | • 计算工作量 | 60 | 30 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1580 | 2080 |
三.解题思路描述
3.1 Json数据分析
我是用助教example里面的json文件;
- 查看athletes.json
- 查看event.json
- 查看赛事结果reslut文件
3.2Athlete类,Result类以及方法类Lib的设计
- 实现Comparable接口 用List的sort函数来进行排序
- 重构toString函数来实现控制输出格式
这里是Athlete类
3.3json数据解析
做解析Athlete函数时候对JSONObject和JSONArray不熟悉,将转换成了字符串,用字符串对文件数据进行处理 ,返回一个Athlete的list表通过遍历来输出到目标文件
解析Result用fastjson对json文件进行解析,返回一个Result的list表
四.关键代码展示
用静态的方法类Lib中的静态函数来实现接口
- public static void Search(String infilePath,String outfilePath)//处理输入文件 包装成搜索方法
- public static void WriteToFile(String userIn,String outfilePath)//根据用户输入并且判断 将所需内容写入文件
- public static List<Athlete> parseAthlete()//解析运动员
- public static String FindIdByEvent(String eventName)//解析event.json文件 返回根据赛事名查找到的Result路径名并且将赛事名字和id存入hashmap中
- public static List<Result> parseResult(String EventName) //解析Result.json返回Result的LIST
其中的public static String FindIdByEvent(String eventName)比较关键
将eventName和路径iD放在hashmap中这样不会因为每次输入不用重复的的遍历event.json函数
通过查找在不在表中可以减少遍历,缩短后续搜索的时间
五.性能改进
查找result路径名一开始并没用用hashmap进行缓存,导致用文件有多次输入的时候多次遍历了 event.json函数导致运行时间变长,后面通过存入静态的hashmap中,通过用eventname作为key来查找对应的result路径名,使得程序运行时间减少
![](https://i-blog.csdnimg.cn/blog_migrate/813dc8b7fab2a276df846e48f9c0ba2c.png)
六.单元测试
使用 Junit
进行单元测试。 引入Junit-4.5jar包
七.异常处理
try-catch语句捕获异常,在有读入文件和写入文件的所有函数中使用try-catch语句捕获异常
并且抛出异常原因
![](https://i-blog.csdnimg.cn/blog_migrate/158e25210888d66634e3791be687bcc2.png)
八.心得体会
对git工具管理文件更加熟悉,熟悉对文件的读取写入以及方法类的代码编写,了解了JSONObject和JSONArray的用法,学会了如何进行测试,学会了如何将项目打包成jar包,掌握了更多java的特性,以及更熟练的学会应用java各种数据结构及其方法 。