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

寒假作业(2/2)

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 疫情统计
作业正文 如下
其他参考文献 ...

1.仓库地址

2.PSP

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

3.思路描述

对作业题目进行通读后得出本次作业的流程应该为:

1.对命令行参数进行处理

2.读取目标日志文件并进行信息统计

3.输出为指定文件
如图

因为本身基础相当薄弱,在学习了前置知识和查阅有关资料并选择询问同学后,进行了初步的设计

类图

类图

流程图

流程图

4.关键代码

对字符串按空格进行拆解,存为字符串数组。将信息分类之后再进行分组的情况匹配。

public boolean ManageLine(String line)
   {
       String[] data = line.split(" ");
       String beginStr = data[0].substring(0 ,2);
       if (beginStr.equals(Lib.Skip))
       {
           return false;
       }
       Record record = container.GetRecord(data[0]);
       if (record == null)
       {
           record = new Record();
           record.SetProvinceName(data[0]);
           container.AddRecord(record);
       }
       int num = Common.ParserStringToInt(data[data.length - 1]);
       int[] dataLength = {3 , 4 , 5};
       if (data.length == dataLength[0])
       {
           if (data[1].equals(Lib.Dead))
           {
               this.AddDeadNum(record , num);
           }
           else if (data[1].equals(Lib.Cure))
           {
               this.AddCureNum(record , num);
           }
       }
       else if (data.length == dataLength[1])
       {
           if (data[1].equals(Lib.Increase))
           {
               if (data[2].equals(Lib.Ip))
               {
                   this.AddIpNum(record , num);
               }
               else if (data[2].equals(Lib.Sp))
               {
                   this.AddSpNum(record , num);
               }
           }
           else if (data[1].equals(Lib.Sp))
           {
               this.Sp2Ip(record , num);
           }
           else if (data[1].equals(Lib.Exclude))
           {
               this.ExcludeSp(record , num);
           }
       }
       else if (data.length == dataLength[2])
       {
           Record InfectedRecord = container.GetRecord(data[3]);
           if (InfectedRecord == null)
           {
               InfectedRecord = new Record();
               InfectedRecord.SetProvinceName(data[3]);
               container.AddRecord(InfectedRecord);
           }
           this.Move(record , InfectedRecord , data[1] , num);
       }
       return true;
   }

public static <A,B> Map<A, B> SortMap(Map<A, B> map, Comparator<A> comparator)
{
    if (map == null || map.isEmpty())
    {
        return null;
    }
    Map<A, B> SortMap = new TreeMap<A, B>(comparator);
    SortMap.putAll(map);
    return SortMap;
}

利用TreeMap进行省份排序

5.代码规范

6.心路历程

   这次的作业对于过去没有打牢基础的我来说是个不易解决的困难,在静下心来认真思考之后,我查阅了一些资料,在准备前置工作时花费了很多时间,最后在寻求了一些朋友的帮助下还是做出了自己的设计。在《构建之法》中我明白了所有的程序都需要认证细致地设计每一个模块,麻雀虽小五脏俱全,不能因为一时的贪图省事而放弃代码的维护性和拓展性,为将来的修正埋下隐患,改变对于程序的态度和对于设计程序的态度是十分重要的,越早树立起这种认真严谨的设计思想才是对于将来自己的负责。过去我总是逃避对于细节的处理,对于代码总是得过且过,经历这次作业,我才慢慢感受到了这种能力的可贵,只有不断地学习,对自己严格要求,才能踏下坚实的脚步。

7.仓库

名称 简介
Springboot-plus 一个基于SpringBoot 2 的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能
spring-boot-pay 支付服务:支付宝,微信,银联详细 代码案例 (除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试)
spring-boot-examples Spring Boot 使用的各种示例,以最简单、最实用为标准,此开源项目中的每个示例都以最小依赖,最简单为标准,帮助初学者快速掌握 Spring Boot 各组件的使用。
spring-boot spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 65 个集成demo,已经完成 53 个
Java Java的学习之路,学习JavaEE以及框架时候的一些项目,结合博客和源码,让你受益匪浅,适合Java初学者和刚入门开始学框架者
posted @ 2020-02-21 13:18  蔡启文  阅读(117)  评论(0编辑  收藏  举报