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