软件工程第二次作业--文件读取

本文介绍了如何完成一项针对世界游泳锦标赛跳水项目的数据收集任务,开发了一个控制台程序进行赛事数据分析。内容涉及Json文件解析、Athlete和Result类设计、性能改进策略,以及单元测试和异常处理。作者通过此项目实践,加深了对Git、Java编程和数据结构的理解。
摘要由CSDN通过智能技术生成
这个作业属于哪个课程<班级的链接>
这个作业要求在哪里<作业要求>
这个作业的目标实现一个能够对赛事数据进行统计的控制台程序

作业任务概述:

完成对世界游泳锦标赛跳水项目相关数据的收集,并实现一个能够对赛事数据进行统计的控制台程序。

目录

一.Gitcode项目地址

二.PSP表格

三.解题思路描述

3.1 Json数据分析

 ​编辑

3.2Athlete类,Result类以及方法类Lib的设计

3.3json数据解析

四.关键代码展示

五.性能改进

​六.单元测试

七.异常处理

​八.心得体会


一.Gitcode项目地址

gitcode项目地址链接: 仓库链接

二.PSP表格

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划6070
• Estimate• 估计这个任务需要多少时间2010
Development开发360600
• Analysis• 需求分析 (包括学习新技术)110100
• Design Spec• 生成设计文档3030
• Design Review• 设计复审6030
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)3030
• Design• 具体设计120150
• Coding• 具体编码360400
• Code Review• 代码复审9060
• MyTest• 测试(自我测试,修改代码,提交修改)120300
Reporting报告100150
• MyTest Report• 测试报告3060
• Size Measurement• 计算工作量6030
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划3060
合计15802080

三.解题思路描述

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路径名,使得程序运行时间减少 


六.单元测试

使用 Junit进行单元测试。 引入Junit-4.5jar包

七.异常处理

try-catch语句捕获异常,在有读入文件和写入文件的所有函数中使用try-catch语句捕获异常
并且抛出异常原因


八.心得体会


        对git工具管理文件更加熟悉,熟悉对文件的读取写入以及方法类的代码编写,了解了JSONObject和JSONArray的用法,学会了如何进行测试,学会了如何将项目打包成jar包,掌握了更多java的特性,以及更熟练的学会应用java各种数据结构及其方法 。

  • 43
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值