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

这个作业属于哪个课程 软件工程实践
这个作业要求在哪里 寒假作业(2/2)
这个作业的目标 1.实现完成疫情统计程序编程要求 2.制定代码规范3.编写博客,记录实现的过程4.学习使用Github
作业正文 软件工实践寒假作业
其他参考文献 博客,PSP表格教程,单元测试教程

仓库链接:疫情统计

1.规划

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

2.解题思路

  • 浏览完题目要求后,将程序分为三部分,命令初始化,存取日志文本,文本内容处理。

    • 图片;

    命令行为字符串数组,以list开头,有-log,-date,-out等参数,对命令行进行处理,可以将其封装在一个类中,运行时,可以同传递类,通过调用不同的函 数返回不同list命令参数。

    • 图片;

    存取文件。读取文件,写入文件的数据每一行有固定格式,可以用map类型保存,然后通过函数将数据内容写到文件中。

    • 图片;

    要根据文本内容的不同情况,对疫情情况的数据进行统计。文本内容的不同情况总共有8种情况,可以根据读取的字符串内容进行条件判断,调用不同的数据处理函数。疫情数据主要为省份,感染者,疑似患者,治愈,死亡。可以封装成一个类,调用函数改变其值。

3.设计过程

主要流程:
图片;
执行过程:
图片;

5.代码说明

  • 命令行处理类DocFormatter,保存数组和索引值,不同参数值的返回函数。
    图片;
  • 保存省份病情信息的Status,由省份的字符串,和4个int类型保存4种不同的情况人数。
    图片;
  • openFile函数,逐行读取,拆掉成字符串数组,第一个为省份,检查map中是否含有该省份,进行更新。
    根据下一个字符串的不同情况,调用不同的Status处理函数。处理完各个省份后,对map中,全国情况进行统计。
    图片;
  • WriteFile函数,对map进行按key排序,读取proChecked和tyChecked中的-type,和-province的参数信息,
    写入文件。
    图片;
  • run函数,对命令行返回的province和type进行校验,调用getFiles函数获取要打开的文件后,调用openFile,
    所有文件读取完毕后,调用WriteFile写入文件
    图片;

6.单元测试截图和描述

  • 获取省份排序
    图片图片
  • 获取打开的文件
    图片
    图片
  • 整体测试,测试日志为example下的log.txt文件
  • 测试1:测试默认情况,没有-date、-type、-province参数;
    图片
    图片
    *测试2:测试-date为2020-01-23的情况,没有-type、-province参数;
    图片
    图片
    *测试3:测试-date为2020-01-25情况,没有-type、-province参数;
    图片
    图片
    *测试4:测试-date为2020-01-27,-type为ip,sp的情况,没有-province参数;
    图片
    图片
    *测试5:测试-date为2020-01-27,-province为“福建”、“北京、“全国””的情况,文本中无北京的数据,无-type参数;
    图片
    图片
    *测试6:测试-date为2020-01-29错误日期的情况;
    图片
    图片

7.单元测试覆盖率优化和性能测试

单元测试覆盖率如下:
图片

性能如下:
图片

8.代码规范

链接

9.收获和感悟

一开始,浏览了题目要求后,觉得是一个简单的文件处理的项目,代码程序打完,可以解决大部分工作。仔细一看,发现有许多新的东西,psp表格,git仓库,单元测试等。单元测试用来对一个模块、一个函数或者一个类来进行正确性检验的测试,第一次接触,一开始感觉有点麻烦,但可以明确找出自己出错的部分在哪里。整体过程中,从一开始的需求分析到最后的测试之间,还有许多不同的环节。有规划,有节奏的进行项目编程比一头蛮地编程要更有效率地多。最后,本次的作业使我受益良多,我相信这次作业学到的东西和积累的经验必可活用于下次。

相关链接

1、JavaEETest
链接:https://github.com/LateComerYC/JavaEETest
    简介:该仓库总结了Spring、SpringMVC、MyBatis、Spring Boot案例。
2、Java教程
链接:https://github.com/LateComerYC/JavaTutorial
    简介:该仓库包含了Java教程,包括多线程,泛型,反射,IO,容器类,注解。
3、Java Spring
链接https://github.com/LateComerYC/SpringCloudLearning
简介:该仓库包含了Spring教程和源码,介绍Spring框架格式。
4、Ajax
链接https://github.com/LateComerYC/ajax
简介:该仓库包含了Ajax设计方案。
5、jsp
链接 https://github.com/LateComerYC/jsproxy
简介:该仓库包含了jsp教程,以及jsp应用实例。

原文地址:https://www.cnblogs.com/yangmingwei969/p/12298734.html