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

本文介绍了在福州大学软件工程实践中,如何通过Gitcode项目获取跳水比赛数据,使用Gson解析JSON,设计缓存机制优化性能,以及进行接口设计、单元测试和异常处理的过程。作者分享了关键代码片段和性能改进策略,强调了软件工程实践中的重要技能学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个作业属于哪个课程 福州大学-202302软件工程实践
这个作业要求在哪里 软件工程第二次作业–文件读取
这个作业的目标 完成对世界游泳锦标赛跳水项目相关数据的收集,并实现一个能够对赛事数据进行统计的控制台程序
其他参考文献 构建之法、JUnit 4 超详细教程、码出高效_阿里巴巴Java开发手册IDEA单元测试–详细使用步骤


一、Gitcode项目地址

Gitcode项目地址


二、PSP表格

PSP Stage Description Estimated Time (minutes) Actual Time (minutes)
Planning Plan 35 35
• Estimate • Estimate how long the task will take 30 30
Development Development 1400 1445
• Analysis • Requirement analysis (including learning new technologies) 400 350
• Design Spec • Generate design documentation 35 40
• Design Review • Design review 50 60
• Coding Standard • Coding standards (define appropriate standards for the current development) 30 30
• Design • Detailed design 55 65
• Coding • Coding 520 560
• Code Review • Code review 45 50
• Test • Testing (self-testing, code modifications, submitting changes) 230 270
Reporting Reporting 100 110
• Test Report • Test report 55 60
• Size Measurement • Measure the amount of work 30 30
• Postmortem & Process Improvement Plan • Postmortem and propose process improvement plans 25 25
Total 1645 1875

三、解题思路描述

3.1、获取数据

本次作业使用助教提供的相关数据,结构如下所示:

在这里插入图片描述

  • athletes:存储了关于跳水项目的运动员信息。
  • event:存储了项目名称项目id的对照,通过项目名称可以找到对应的项目id。
  • results:文件夹下存储以项目id命名的各个项目的成绩。包括总分与每一次比赛的小分。

3.2、数据处理

通过查阅网上资料,我选择使用Gson来解析数据:Gson 是一个由 Google 提供的用于在 Java 对象和 JSON 数据之间进行转换的库。它提供了简单易用的 API,可以方便地将 Java 对象序列化为 JSON 数据,也可以将 JSON 数据反序列化为 Java 对象。
我们可以通过gson.fromJson方法来将json数据转化为已定义的Java对象。Java类对象的定义如下图所示:
在这里插入图片描述

3.3、问题1

(1) 读取athletes.json文件

  • 首先定义文件的路径,利用BufferedReader对象读取json文件的内容并转换为字符串。

(2) 解析json文件中的数据

  • 由于athletes.json文件中是Country类的对象的数组,因此先通过gson.fromJson()提取出country对象,转换为country数组。
  • 然后依题意先按国籍进行排序,通过Arrays.sort();得到按国籍进行排序的country数组。再接着以LastName为次要关键字进行排序。

(3)返回解析完毕的字符串

  • 将排序完毕的信息拼接成字符串并返回。

3.4、问题2

(1) 解析输入命令

  • 首先读取并处理命令,解析命令result,过滤不合规的命令,构建命令对象,然后根据合法的命令对象中的比赛名称解析出相应比赛的ID。

(2) 构建路径并解析数据

  • 使用得到的比赛ID去构建文件路径,通过文件路径寻找到对应的json文件中去获取决赛结果信息。然后通过parseFinalEventResult方法得到所需的决赛结果。

(3)构建字符串并返回

  • 将决赛结果构建成符合输出要求的字符串并返回。

四、接口设计和实现过程

4.1 总体设计

Model类:根据Gson解析json数据的要求,构建相应的Java类,例如Country类、Command类、EventResult类等,并设计相应的属性字段。因为Gson 会自动将 JSON 对象中的字段名和 Java 类中的字段名进行匹配,如果匹配成功,Gson 就会将 JSON 对象中的值赋给 Java 类中的相应字段。如果 JSON 对象中的某个字段在 Java 类中没有对应的字段,那么 Gson 就会忽略这个字段。
Util类:本次作业设计了Lib类和CoreLib类,Lib类封装了大部分用来解析数据信息的函数,例如readAthletesInfoprocessResultCommand方法等。并用来控制相应的Model类。CoreLib类提供了输出运动员信息和输出决赛结果信息的接口。

4.2 核心部分实现过程

总体流程图:

在这里插入图片描述

4.3 算法的关键之处

数据读取机制:
模仿Cache的缓存机制,利用局部性原理设计算法,大大节省时间开销。
异常处理:
在读取文件、解析Json数据时加入异常处理机制,提高程序的健壮性。
接口封装:
将输出关键信息的功能封装成一个模块,便于组织和维护。
使用流操作࿱

内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值