软工实践个人编程作业
软工实践个人编程作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2020/ |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167 |
| 这个作业的目标 | 制作一个程序统计和分析 GitHub 的用户行为数据。 |
| 学号 | 151803103 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 100 |
| Estimate | 估计这个任务需要多少时间 | 100 | 200 |
| Development | 开发 | ||
| Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
| Design Spec | 生成设计文档 | 30 | 30 |
| Design Review | 设计复审 | 30 | 60 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
| Design | 具体设计 | 500 | 600 |
| Coding | 具体编码 | 300 | 600 |
| Code Review | 代码复审 | 30 | 60 |
| Test | 测试(自我测试,修改代码,提交修改) | 40 | |
| Reporting | 报告 | 30 | 50 |
| Test Report | 测试报告 | ||
| Size Measurement | 计算工作量 | 60 | 80 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 20 |
| sum | 合计 | 1280 | 1875 |
解题思路
刚开始拿到题目之后还是很懵的,毕竟自己的python水平还是很菜的。
根据题目,先要将给出的数据文件输入进入代码中运行。所以我先去找找
python file有关的内容。所以找到了open()、with语句和对格式为.json文件的处理。
json.dump()和json.load()函数功能。
参考程序定义了Data类:最前面的代码有点不懂,后面使用open()读入了文件并保存在以P,R,perR结尾的三个变量中分别对应了要做的三个任务
在__init()函数中为三个任务各自建立了字典,遍历整个文件,以行为单位进行分片,并加入到索引序列。
在这个函数中可以考虑修改,打开文件之后比较,若事件存在于字典之中,就可以加1.
再有一个函数,其中有一个字典,记录了用户的id和四种事件对应的数目,其中用户id可以表示为字典对应的下标,
字典的元素也为dict, dict里有4个键值对对应4个事件的数目。项目同理可以这样处理。
参考了很多同学大佬的建议,看了很多方法,勉勉强强写出来一些,效果一般。
设计实现过程
(1)将json文件读入(采用参考程序的遍历方法)
(2)针对3个不同的要求,建立个人,项目,个人和项目三个字典,遍历。
(3)建立三个函数,根据不同的任务对4个event进行统计计数。如果存在就输出数目
(4)主函数中加入命令行的一些操作,这里函数基本来自参考函数,进行命令行的判断和处理。

代码说明
(1)首先使用Data函数读取文件,定义了data函数读取.json文件,其中用到了load()加入json文件,新建三个字典用于存储后面的键值对。

(2)从上一步的列表中读取事件,如果存在就更新相应的字典,同时+1,最后存进三个新建文件夹中。刚开始也不知道如何处理,后来在同学指点下提到可以用这种方法处理,百度搜索大概知道了一些关于get,updata()的用法,用的还是很生疏,后面还是要继续学习。

(3)接下来使用3个函数输出,和已经保存的文件中的event进行比较,如果符合这种条件,就输出统计出来的数字

(4)最后是命令行的函数Run()

测试描述
本地测试

代码在github上可以通过
但是本地测试有一些问题,命令行输进去不能统计正确的数字。接着尝试找一下原因
因为技术力不足目前的单元测试还没有完成。
链接
https://github.com/count001/2020-personal-python/blob/master/编程规范.txt
总结
对我总之感觉很难
(1)最开始的输入文件一开始比较让人懵逼,后面查一些资料才明白(菜鸟教程上的python很不错),不过没有找到很好的解决办法。看别人的代码都很复杂,说明自己还有很长的路要走。
(2)第一次用python处理这样的作业,之前用python都是在写一下小代码,这一次才算是接触到了文件、命令行等处理方式,整体写的比较散乱,希望作业之后有所进步。
并没有完全生成一个比较运行成功的代码,git是第一次使用所以比较棘手,也是第一次尝试用命令行的方式写入,有关写入/读取文件的相关知识看了很长时间,总的设计时间还是紧张,主要是搞懂参考代码做了很长时间。

浙公网安备 33010602011771号