软工实践寒假作业(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初学者和刚入门开始学框架者 | 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号