福州大学软件工程实践个人编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2020/
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167
这个作业的目标 更熟练掌握 Git 和 GitHub 的使用,以及学习 JSON 的含义用处和解析思路,cpp 命令行参数,cpp对文件夹、文件的操作
学号 031802203
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
Estimate 估计这个任务需要多少时间
Development 开发
Analysis 需求分析 (包括学习新技术) 600 660
Design Spec 生成设计文档 60 45
Design Review 设计复审 20 15
Coding Standard 代码规范 (为目前的开发制定合适的规范) 120 90
Design 具体设计 100 90
Coding 具体编码 300 210
Code Review 代码复审 20
Test 测试(自我测试,修改代码,提交修改) 300
Reporting 报告
Test Report 测试报告
Size Measurement 计算工作量
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 60
合计 1520

大致思路步骤

  1. 首先由于题目中对初始化和运行格式有格式要求,所以需要对命令行参数进行解析,以符合要求;
  2. 其次对于初始化,由于提供的数据是以 JSON 文件形式存储的,所以就涉及到关于 JSON 的解析; (根据需要解析完分别把相关的键值写入 JSON ,这样会方便统计?)
  3. 然后对数据进行遍历,统计记录用户、项目、事件数量;(遍历肯定时空资源爆炸,但是菜鸡只会遍历了5555 )

学习过程

  • 第一次满怀热情点进去作业,浏览完题目的时候,我是一脸懵逼的

    • 什么东西?题目需求是什么?它叫我干嘛?
    • 我要做什么?
    • json?这又是什么?它能干嘛?我怎么用它?
    • 运行格式是啥?哪里用?
    • 我只会cpp,我能行吗?(男人不能说自己不行!)
  • 当天晚上,我兴致勃勃地看了一个晚上 GitHub Actions 怎么回事,以及 JSON 是什么东西、它的用处。然后到了自己去配置 GitHub Actions 的时候,发现认识和实践真的有条鸿沟,包括解析和构建 JSON 的时候也一样。而且因为 C/C++ 不像 Python 那样有内在字典的结构,所以后来截止前这两天直接去找了下 C/C++ 有没有提供解析和构造函数的库。后来编程的时候调了一个 cJSON 库,之前都是单文件编译执行,这次因为要用 cJSON.h 和 cJSON.c ,所以学了一下 cpp 多个文件做成个项目,多个一起编译。

  • 之前没用到过关于 FILE 的文件操作,所以又去把 f 系列函数学了一下( C/C++ )

    FILE fp; //定义一个文件
    FILE fopen (const cahr FilePath, const char
    type)//打开 FilePath 的文件,并允许其进行 type 操作,返回的是一个FILE
    char *fgets (char *s, int n, FILE *fp) //从指定的流中逐行读取,n 一般可以设为 s 数组的大小

  • 寻思了一两天没啥思路,决定还是先把 Git 的基本操作和命令学一下,然后花了一下午的时间在B站看了 Git 的教程,然后自己用的时候发现,根本就不用看那么久,做题目用到的也就几条基础命令,不管又没用还是大致记一下吧

    git config --global user.name "" //设置用户名
    git config --global user.email "
    " //设置用户邮箱
    git init //正式使用前先初始化
    git add *** //到Index
    git commit -m "" //提交描述
    git status //三个区域的状态
    git reset --hard //彻底回退
    git reset --soft //本地库回退,但其他两个区域不变
    git reset --mixed //出了工作区不变,其他回退
    ......

  • 大佬推荐用 Python 写,同学说用 cpp 的快写疯了哈哈哈哈,gan,流泪,我就是用 cpp,也只会用 cpp。我觉得这时候临时仓促去学 Python 来对付作业可能效果不会很好,所以就还是用 cpp。

  • 之后就卡在那个题目提供的运行格式那边,不知道究竟是什么,怎么用,自己硬是没反应过来,后来看了同学的思维导图,突然就悟了,然后就开始百度 C/C++ 命令行解析。在 C 的库函数中,提供了两个函数进行命令行参数的解析,‘-’ 开头的短参数使用 getopt(),如 “-u” ;而像 “--user” 之类的 “--” 开头的长参数则需要使用 getopt_long() 函数进行解析,当然,getopt_long() 对短参数也可以。而在本次作业中我的命令行输入采用的都是短参数形式,所以就选择了 getopt();

代码说明

编写过程卡壳,夭折了

单元测试和覆盖率

代码规范

https://github.com/Chenyang-1024/2020-personal-cpp/blob/master/CodeStyle.md

总结

  • 在知识的海洋溺水,被生活痛击。。。不觉得码不出来是题目难度,问题出在自己身上,课外没去积累、动手少怪自己,没有经验,完全没有方向,这个是最大的问题。这一周就是在瞎着眼睛乱摸,把一些知识点摸了遍,最后收效甚微。(菜鸡问问老师作业前置学习要求可以稍微稍微再详细一点点吗,就大概完成这个作业要会什么,就大概 ಥ_ಥ )
  • 做作业跟在女娲补天一样,虽然有所收获,但是还是没来得及实现出来,基础思路还算简单的,老师说是 easy 级别,还是希望之后经过学习多动手能完整实现出来,还会继续更博的。
  • 距离结束还有 3 分钟,大概逛了一圈别人的作业回来,大多数都完成出来了,这种别人都会自己不会的感觉就跟 100 个人开着坦克从身上压过一样。嘴上的总是空谈,希望自己行动起来。
posted @ 2020-09-16 22:58  CodingFly  阅读(163)  评论(1编辑  收藏  举报