✈️

扩大
缩小
回到顶部

软工实践寒假作业(2/2)

这个作业属于哪个课程 <班级的链接>
这个作业要求在哪里 <作业要求的链接>
这个作业的目标 github初使用代码规范制定 编写疫情统计程序
作业正文 如下
其他参考文献

GitHub仓库地址

主仓库地址
个人仓库地址

阅读《构建之法》

  • 阅读心得

    在阅读这本书之前,我对这本书的作者先进行了了解。本书的作者邹欣有着多年的一线软件开发经验,同时,他在多所高校进行了长达了6年的软件工程实践,所以我认为这本书对于软件工程的学生来说,还是很有益处的。
    这次我只阅读了前三章。第一章的内容,作者介绍了一些关于软件工程的基本知识。第二章我在单元测试的学习上受益匪浅,在此之前我还未接触过单元测试,所以学习到了很多。第三章讲述了软件工程师的成长,以及职业发展。邹欣老师把枯燥的理论概念讲的非常生动,深入浅出,让我深受启发。

  • PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
Estimate 估计这个任务需要多久时间 10 10
Development 开发 450 485
Analysis 需求分析 (包括学习新技术) 60 60
Design Spec 生成设计文档 30 30
Design Review 设计复审 20 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 15
Design 具体设计 60 90
Coding 具体编码 240 240
Code Review 代码复审 20 30
Test 测试(自我测试,修改代码,提交修改) 30 40
Reporting 报告 40 40
Test Repor 测试报告 20 20
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 20
合计 1060 1130

解题思路描述

  • 学习使用github

    首先我学习了github基本命令以及github desktop的基本使用,了解了github的基本功能后,到主仓库fork下项目

  • 需求分析

    1.解析命令行参数
    对于用户的命令行参数进行合法性检验,例如-log参数后面必须加文件目录路径,-out参数后面必须加文件路径,必须使用list命令等
    2.对文件进行筛选
    通过-date参数,筛选出比-date后面的日期小的日期文件
    3.读取文件信息
    读取筛选出来的文件信息
    4.将文件信息进行筛选
    针对不同参数,例如-type ip等对读取到的文件信息进行筛选
    5.将信息存入数组
    将筛选后的信息存入数组
    6.将数组信息写入文件
    将信息写入-out参数后面的指定文件中

设计实现过程

  • 类图
    声明了Province类 该类有四个属性,分别对应该省份的感染患者人数,疑似患者人数,治愈人数,死亡人数

类图

  • 软件流程图
    流程图

  • 命令行参数处理

    对命令行输入的参数首先进行长度,是否为list命令的检验,然后检验是否有-date、-type、-province、-log、-out参数,若有,则将参数的信息赋予某个变量,后面将通过变量进行信息筛选

  • 针对-date参数对文件进行筛选

    通过将读取目录下的文件名截取0-10之前的字符,然后与-date参数后面的日期进行大小比较,读取符合条件的文件,若-date后无参数,则读取命名规范的所有文件。-date后面的日期若大与文件中任意日期,则给出日期超出范围的错误提示

  • 针对-province参数对文件信息进行筛选

    通过字符串匹配,匹配出与-province后面跟的省份相同的文件信息,若-province后面无参数,则输出所有信息

  • 针对-type参数对文件信息进行筛选

    通过字符串匹配,匹配出与-type后面跟的种类信息相同的文件信息,若-type后面无参数,则输出所有信息

  • 省份按拼音排序

    采用哈希表存储各省份信息,key为省份名称,value为省份对象,含有ip、sp、cure、dead四个属性,然后再将key存入list进行排序

代码说明

数据结构

  • 采用HashMap存储省份:key对应省份的名字,例如“福建”,value对应省份Province类
    部分代码截图如下:
    哈希表1
    哈希表2
    类2
  • 采用list存储省份名称即哈希表中存储的键值对,主要用来将省份名称按拼音排序
    部分代码截图如下:
    list
  • 采用数组存储从文件中读取的信息

变量说明

  • 使用5个变量记录-log、-out、-date、-province、-type后面的参数值 例如-type ip 则type="ip"
  • 使用5个变量记录命令行中是否出现-log、-out、-date、-province、-type这几个参数
    变量

-date参数处理

  • 当-date后面有参数时,将选出读取文件目录下日期最晚的与参数进行对比,如果参数大于最晚一天的日期,则给出日期超出范围的错误提示,若没有,则读取日期氛围内的文件
  • 当-date后面没有参数时,将读取文件目录下符合命名规范的所有文件
    日期参数

-type参数处理

  • 初始化type="ipspcuredead" 如果检测出-type后面有参数,则改变type变量的值,例如-type ip,则type="ip"匹配type的值,筛选出对应的信息
    type

-province参数处理

  • 当-province后面有参数时,则改变list_province的值,例如-province 全国 福建,则list_province="全国福建" 匹配list_province的值,筛选出对应的信息
    province

单元测试

  • 当-date后无参数
    test1
    test1result
  • 当-date后面参数为"2020-01-23"
    test2
    test2result
  • 当-date后面参数为"2020-01-28"
    test3
    test3result
  • 当-date后面的参数为"2020-01-23" -type后面无参数
    test4
    test4reult
  • 当-date后面的参数为"2020-01-23" -type后面的参数为"ip"
    test5
    test5result
  • 当-date后面的参数为"2020-01-23" -type后面的参数为"ip cure"
    test6
    test6result
  • 当-date后面的参数为"2020-01-23" -province后面的参数为"福建"
    test7
    test7result
  • 当-date后面的参数为"2020-01-23" -province后面的参数为"全国 福建"
    test8
    test8result
  • 当-date后面的参数为"2020-01-23" -province后面的参数为"全国 福建 湖北"
    test9
    test9result
  • 当-date后面的参数为"2020-01-23" -type后面的参数为"-ip" -province后面的参数为"全国"
    test10
    test10result
  • 覆盖率
    覆盖率1
    覆盖率2

仓库

仓库链接

代码规范

代码规范链接

心路历程和收获

这次作业让我收获了很多。从github的使用,在此之前,我只是从github上clone下代码,从来没有深入学习使用github,没想到它竟然有这么多功能,而且对于团队合作开发小型项目非常有用。同时,这一次打代码之前,我先进行了需求分析,设计分析等,以前完成代码做的时候没有这样系统的去进行,感觉有了前面的分析,打代码的时间缩短了很多,漏洞也少了很多。还有很重要的一点是在这次开发前,我学习了一下代码规范,严格按照代码规范进行开发,感觉代码的可观性比之前强很多。这次的作业还让我学会了单元测试这个新的概念,之前我测试代码都是自己随便出测试样例,很麻烦且很不准备,通过对单元测试的学习,我对测试有了更深的体会。

技术路线图相关的仓库

腾讯机器学习数据集

  • github地址:链接
  • 简介:该存储库介绍了名为腾讯ML-Images的开源项目
    ML-Images:最大的开源多标签图像数据库,包括17,609,752培训和88,739验证图像URL,这些注释最多包含11,166个类别
    Resnet-101模型:在ML-Images上进行了预训练,并通过转移学习在ImageNet上达到了top-1的精度 80.73%

DensePose-实时人体姿态估计

  • github地址:链接
  • 简介:DensePose 是Facebook 研究院开发的一种实时人体姿态估计方法,它能够将2D RGB 图像中的目标像素映射到3D 表面模型。DensePose 项目旨在通过这种基于3D 表面模型来理解图像中的人体姿态,并能够有效地计算2D RGB 图像和人体3D 表面模型之间的密集对应关系。与人体姿势估计需要使用10或20个人体关节(手腕,肘部等) 不同的是,DenPose 使用超过5000个节点来定义,由此产生的估计准确性和系统速度将加速AR和VR 工作的连接。

NeuralEnhance: 提高图像分辨率的深度学习模型

  • github地址:链接
  • 简介:NeuralEnhance是使用深度学习训练的提高图像分辨率的模型,使用Python开发,它比普通插值算法要优秀的多,你还可以通过提高神经元数量(或是使用相似的图片样本进行训练)来获得更好的结果。

FaceNet-人脸识别算法

  • github地址:链接
  • 简介:谷歌人脸检测算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 cnn + triplet mining 方法,在 LFW 数据集上准确度达到 99.63%,在 youtube 人脸数据集上准确度 95.12%,比以往准确度提升了将近 30%。

Age and Gender Estimation-年龄和性别评估模型

  • github地址:链接
  • 简介:该项目是一个基于 Keras 框架实现的 CNN 模型,用于根据人脸照片测算年龄和性别。

posted on 2020-02-21 13:29  sw14  阅读(166)  评论(2编辑  收藏  举报

导航