688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪里 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程第二次作业-个人实战 |
| 这个作业的目标 | 实现一个能对澳大利亚网球公开赛进行数据统计的控制台程序 |
| 其他参考文献 | 菜鸟教程 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 5 | 5 |
| • Estimate | • 估计这个任务需要多少时间 | 10 | 10 |
| Development | 开发 | 240 | 300 |
| • Analysis | • 需求分析 (包括学习新技术) | 20 | 15 |
| • Design Spec | • 生成设计文档 | 10 | 15 |
| - Design Review | - 设计复审 | 0 | 0 |
| - Coding Standard | - 代码规范(为目前的开发制定合适的规范) | 5 | 5 |
| - Design | - 具体设计 | 10 | 5 |
| - Coding | - 具体编码 | 10 | 5 |
| - Code Review | - 代码复审 | 60 | 0 |
| - Test | - 测试(自我测试,修改代码,提交修改) | 60 | 60 |
| Reporting | 报告 | 30 | 45 |
| - Test Report | - 测试报告 | 5 | 5 |
| - Size Measurement | - 计算工作量 | 0 | 0 |
| Postmortem & Process Improvement Plan | - 事后总结, 并提出过程改进计划 | 60 | 60 |
| 单元格 | 合计 | 525 | 570 |
拿到题目后,我意识到这次的题目是爬虫+JSON处理,而这两项技术我均没有很好掌握。
考虑到未来实践开发的需要,我决定使用java语言来作答这道题目。
这是一道比较面向过程的题目,于是我就依照程序流程来分析问题,很快便理清了思路。
事实上要完成题目给出的任务,其实只需要以下几步:
1. 从input.txt文件中读取指令
2. 在目标文件中获取JSON数据并解析
3. 把解析好的JSON数据输出到output.txt文件中
实现的过程就只需要把这几个步骤分别用函数模块化封装起来即可。
通过分析JSON文件,我发现要实践result指令的功能需要从players.json文件中访问到队伍uuid和运动员uuid,
所以在执行任何指令之前直接先访问一边players.json文件,并且将其中有用的信息保存在哈希表中,
未来解析指令时,只需要在哈希表中查找到所需要的数据即可。
为此,我把这几个函数按照流程顺序列出如下:
1. getInput() :获取input.txt文件中的指令
2. getPlayers() :从players.json中获取所需数据并存入哈希表中
3. getResults() :从目标文件和哈希表players中获取所需数据并存入哈希表中
4. getPlayersJSON() :解析运动员数据
5. getResultsJSON() :解析比赛结果数据
6. writeOutput() :写出文件到output.txt中
---
我的设计实现最主要的想法就是使用哈希表来存储所需数据,下面我用getPlayers()函数来举例


我最主要的改进就是从一开始以行为单位读出JSON改进为使用哈希表来处理数据。
事实上在实际工程中,就可以使用HashMap<String, Object>来构造JSONObject类。
不过本题只需要解析部分JSON数据,直接使用HashMap就可以实现需求了。

本次作业应该算基本工程能力了,我估计一个普通在岗程序员一小时之内就能完成这个任务。
只能说开发经验实在过少,我还是花了数天时间才能从理解问题开始到完成作业目标。
但是在实践的开发过程中我直观意识到了自己编程能力的进步。
同时我也在实践的过程中思考出实践范围以外的工程思想。