2020软工个人第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2020 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167 |
这个作业的目标 | 制作一个程序统计和分析 GitHub 的用户行为数据,熟悉编程。 |
学号 | 031802502 |
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
Estimate | 估计这个任务需要多少时间 | 10h | 13h |
Development | 开发 | ||
Analysis | 需求分析 (包括学习新技术) | 90 | 200 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 60 | 120 |
Coding | 具体编码 | 60 | 120 |
Code Review | 代码复审 | 30 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 40 | 90 |
Reporting | 报告 | ||
Test Report | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 25 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 20 |
Total | 合计 | 425 | 740 |
解题思路
- 在室友的帮助下,了解了题目大概是要做什么。这题要做的就是解析 json。从样例数据中可以看出要处理的数据量很大,因此可以在初次访问的时候将数据保存的本地。由于 Cpp与 Python都掌握的不多,而 java完全不会,加上给的样例代码是 Python,于是选择用 Python编写。
设计实现过程
代码组织
- 由于有样例,所以一开始也没想太多,按照样例的方式改了一遍代码。由于比较菜,只能从数据入手优化程序。
流程图
代码说明
思路
- 先编写好解析一个json文件的函数,把要用的信息提取出来并保存在类里定义的变量里,再把这个函数装进一个搜索文件夹中存在.json文件的函数就形成了一个解析一个文件夹的函数,最后配合一个把数据保存本地的函数,在初始化(构造)结束时就完成了所有解析。二次访问的时候就是把保存的文件提取出来,进行查询操作(查询函数过于简单就不再贴出来了,本质就是 json 和 dict 之间的转换)。整体上来说就是从核心突破,化繁为简,完成核心功能函数再一步步拓展,就可以完成整个的项目。
代码截图
-
读入数据
-
解析json
-
保存本地
单元测试截图和描述
单元测试概述
- 没有进行初始化,直接测试三种数据,测试中采用断言的方式来判断是否成功完成对应的操作。一共3个test函数全部通过。
单元测试代码截图
单元测试运行截图
单元测试覆盖率
代码规范的链接
https://github.com/CJH2042/2020-personal-python/blob/master/codestyle.md
总结
- 说实话,一开始看那题目还真不知道到底是个什么意思,都不知道要干嘛,毕竟没遇到过。然后看到最后那个代码分析了一下才知道到底是要干嘛。由于python只学了皮毛,一开始打算用CPP写,刚开始考虑用字符串的方式查找和记录(不会json解析),但考虑到可能存在的一些问题就选择放弃了,转行学起了python,毕竟有代码可以参考,之前也上过课。然后就开始了边学边打边想的心酸作业历程。(好在宿舍有大佬在,帮我解决了很多问题),虽然吧,感觉完成的不好,但至少我在这个过程中学到了很多,也有了很多收获。
- 我觉得这次作业还是有点不太友好,感觉时间太紧了(因为我数学建模的作业好多,好像只有少数人有这上这门课。),刚开学就让我有种像在期末考前的感觉,主要是只能勉强完成作业,而做不了更好,我真真尽力了TOT。
- 偷偷看了别人的博客,突然觉得自己重心是不是放错位置了,由于Python不会,基本吧时间都用在了学python上,结果感觉好多人都基本没处理代码,现在又要降低代码分数。。。。一阵无语,有点难顶。。。。TOT。