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


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

    这个作业属于哪个课程 班级的链接
    这个作业要求在哪里 作业要求的链接
    这个作业的目标 设计一个疫情统计程序,实现对不同时间上传的患者变动文档进行读取以及各地患者状态的统计
    作业正文 软工实践寒假作业(2/2)
    其他参考文献

    1、GitHub仓库地址

    https://github.com/lyf12138/InfectStatistic-main

    2、PSP表格

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

    3、解题思路

    拿到题目之后,我的思路是这样的:首先要建立5个全局的数组,分别用来存放省份名称、感染患者、疑似患者、治愈人数、死亡人数。
    接下来需要去了解如何读取一个文件夹内的所有的文件名称,并且与这个文件夹的路径拼接成一个完整的文件地址存放在字符串中。
    之后使用file类进行文件的按行读取,之后对每一行的内容用split函数按空格进行分割,最后判断读取的内容对相应的数值进行修改。
    main函数中对args进行读取来判断命令符,对输出的内容进行限制。

    4、设计实现过程

    1)构建6个全局数组(第一个string类型用来存放省份名称province,第二个到第五个int类型用来分别存放感染患者ip、疑似患者sp、治愈人数cp、死亡人数dp,
    最后一个int类型pro用来判断该位置的省份是否应该被输出。
    2)构建函数getallfilename,传入参数为-log命令后面的路径名称,通过这个函数将该路径下面的所有txt文件的具体路径依次存放至string类中,
    使用for循环依次读取路径,传入readfile函数中。
    3)构建函数readfile,传入参数为一个需要读取的txt文件的具体路径,之后使用BufferedReader类中的readLine函数利用for循环按行读取文件内容,
    并且将内容传入函数readfile2中。
    4)构建函数readfile2,传入参数为一个文件内一行的具体内容用string储存,利用split函数以空格分割该字符串,此时截出来的字符串个数只有三种可能:
    3或4或5。判断长度过后将第一个省份名称与province进行遍历对比,寻找该省份的下标并,之后判断后面的字符串内容,将最后那部分的字符串进行数字提取,
    对对应的存储数组值进行操作。
    5)main函数。主要是对命令的读取,args的取值判断。按顺序用for循环遍历args,对list后面的命令进行判断,如果是-log则记录下后面的字符串当作文件地址传入
    getallfilename函数中;如果是-out则记录后面的字符串当作输出文件的地址,使用BufferedWriter类进行输出(如果文件不存在则会自动生成);如果是-province
    则对后面的省份对应的pro数组中的值设为1,表示可以输出;如果是-type则对后面的字符(ip、sp、cure、dead)进行判断,做对应模块的输出。

    5、代码说明

    1)存放疫情信息的数组的建立

    2)getallfilename函数
    实现读取一个文件夹下的所有文件的名称,获得这些文件的具体路径。用File类实现,并且使用listFileName存放文件地址

    3)readfile函数
    实现对该文件的内容的读取,利用getline函数按行获取文本信息

    4)readfile2函数
    实现对读取进来的文件的一行信息进行分割,每一块信息进行判断、处理。



    5)main函数
    其中这个for循环用于判断输入的命令是什么。

    6、单元测试截图和描述

    1)-province参数测试

    • 测试命令,-province参数只包含福建
    • 结果如下:
    • 测试命令,-province参数包含全国和福建
    • 结果如下:

      2)-type参数测试
    • 测试命令,-type参数只包含感染患者(ip)
    • 结果如下:
    • 测试命令,-type参数包含感染患者(ip)和疑似患者(sp)
    • 结果如下:

      3)多个参数组合测试
    • 测试命令,-type和-province
    • 结果如下:

    7、单元测试覆盖率优化和性能测试,性能优化截图和描述

    • 我的单元覆盖率

    8、代码规范的链接,即仓库中的codestyle.md

    codestyle.md

    9、解决项目的心路历程与收获。##

    • 读完《构建之法》前三章,知道了一个项目的进行要经过几个步骤,其中设计是项目开始的重点,所以在前期刚拿到作业的时间里会经常思考这个项目应该如何设计,比如读取文件应该怎么读取,读取之后应该怎么去获得文件内部信息,这样设计之后才以达到事半功倍的效果。
    • 同时也了解到了单元测试也是项目开发很重要的一环,之前的我并不了解什么是单元测试,所以对这个并不重视。读完之后才知道,单元测试是对每个模块中的每个方法每个参数进行检测,做的时候需要对每个可能输入的参数进行测试,这样才不会出bug。所以我在做的时候每次写完一个函数或者一个功能的时候都会进行一次参数的输入运行测试,保证这个功能是可以达到我所预期的目的的。
    • 也了解到了写进度条的好处,阅读之后知道了这样做可以帮助我们提高对产品的估算时间,这样子对我们开发项目有着很好的帮助。这次实践写了进度条之后方便我看到了我预期的时间花费和实际花费时间的差距,也可以大概推算出自己完成这个项目的时间。

    10、在github上寻找你在第一次作业中技术路线图相关的5个仓库,star并fork,在博客中提供名称、链接、简介(简介30字左右)##

    • 仓库地址:学习仓库1
    • 仓库说明:这个仓库里面提供了很多详细的web前端的知识,如react技术栈、node应用开发等
    • 仓库地址:学习仓库2
    • 仓库说明:这个仓库里面是基于angular.js,weui和node.js重写的新闻客户端
    • 仓库地址:学习仓库3
    • 仓库说明:这个仓库里面是基于node.js + Mongodb构建的后台系统
    • 仓库地址:学习仓库4
    • 仓库说明:这个仓库里面是基于Node.js+MySQL开发的开源微信小程序商城(微信小程序),做一个简单初步的了解和学习
    • 仓库地址:学习仓库5
    • 仓库说明:这个仓库里面是基于node + express + mongodb的博客网站后台
  • 相关阅读:
    手把手教你写vue插件并发布(一)
    npm 换源
    ajax上传文件显示进度
    angularjs的表单验证
    利用公钥认证登录远程服务器
    centos 搭建 leanote
    读书笔记-JavaScript高级程序设计(1)
    C++读写TXT文件中的string或者int型数据以及string流的用法
    不相交集ADT--链表实现
    不相交集ADT--数组实现
  • 原文地址:https://www.cnblogs.com/suideyib/p/12336986.html
Copyright © 2020-2023  润新知