软件工程实践寒假作业
这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践第二次作业 |
这个作业的目标 | 完成对世界游泳锦标赛跳水项目相关数据的收集,并实现一个能够对赛事数据进行统计的控制台程序 |
1.项目地址
地址:https://gitcode.net/qdwfq3/project-java
2.psp表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 35 |
• Estimate | • 估计这个任务需要多少时间 | 30 | 35 |
Development | 开发 | 400 | 450 |
• Analysis | • 需求分析 (包括学习新技术) | 60 | 80 |
• Design Spec | • 生成设计文档 | 20 | 20 |
• Design Review | • 设计复审 | 20 | 10 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
• Design | • 具体设计 | 30 | 30 |
• Coding | • 具体编码 | 220 | 260 |
• Code Review | • 代码复审 | 20 | 20 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 15 |
Reporting | 报告 | 80 | 80 |
• Test Repor | • 测试报告 | 40 | 40 |
• Size Measurement | • 计算工作量 | 20 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 510 | 565 |
3.解题思路
3.1 数据获取
同学友情提供。
3.2 json文件的读取使用
利用jackson来解析读取json文件以便于我们能在代码中使用json文件中的信息。
3.3 文件读写
利用bufferedwriter与文件类的静态读文件方法。
3.4 代码组织
由于指令类型包括players与result两种,故编写player与result类接收找到的结果。DWASearch作为主函数入口。
4.实现过程
4.1 初步实现player类与result类
为player类与result类赋予各种字段:gender、country、fullname等等。
编写player的关键函数getPlayers——用于从athletes.json中获取所有运动员信息。
编写result的关键函数getResults——用于从各种比赛类文件中中获取决赛结果信息。
利用控制台输出内容测试函数可行性。
4.2 实现DWASearch
按照实践要求在DWASearch中编写合适的逻辑来实现用户对于想要获取的信息进行正确的查找。
编写完毕后与player类、result类的函数结合使用实现查找与输出。
此阶段利用预设input.txt内容进行测试逻辑正确性。
4.3 正式测试
在上述两阶段都完成以后将整个项目打包为jar文件进行测试,将过程中发现的问题逐一解决后完成代码编写部分。
5.代码展示
5.1 DWASearch部分
接受input.txt中的内容,循环判断每一行的内容:
若该行内容为“players”则调用getPlayers函数将所有运动员信息写入output.txt。
否则将该行内容用split函数分成以单词为单位的string数组,
若第一个单词为result且最后一个单词为detail则将剩余单词拼接为文件名,利用Files.exist函数检验该文件是否存在,存在代表该比赛存在输出对应内容,否则该比赛不存在输出N/A。
若第一个单词为result且最后一个单词不为detail则将除result外剩余单词拼接为文件名,利用Files.exist函数检验该文件是否存在,存在代表该比赛存在输出对应内容,否则该比赛不存在输出N/A。
若第一个单词不为result则输出error。
5.2player类与result类
6.单元测试展示
7.心路历程与收获
本次实践作业完成过程中,我的心境从迷茫到初窥门径再到进入状态,感觉完成一个项目还是要有坚实的基础与善于查找、询问、解决未知问题的能力,这些都是我需要持续去锻炼的。收获在于学习到了json文件的处理与使用。