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

这个作业属于哪个课程 2020春S班
这个作业要求在哪里                                软工实践寒假作业(2/2)
这个作业的目标 GitHub 初使用、代码规范制定、需求分析、单元测试、覆盖率分析、性能分析
作业正文 就是本文
其他参考文献 JUnit5、JProfiler

 

 

 

1.PSP表格

 
PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划    
Estimate 估计这个任务需要多少时间

600

600
Development 开发    
Analysis 需求分析 (包括学习新技术) 60 90
Design Spec 生成设计文档 30 20
Design Review 设计复审 30 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 20
Design 具体设计 60 60
Coding 具体编码 480 450
Code Review 代码复审 90 60
Test 测试(自我测试,修改代码,提交修改) 90 60
Reporting 报告    
Test Repor 测试报告 30 30
Size Measurement 计算工作量 30 30
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 45
total 合计 1560 1485

 

 

 

2.解题思路描述

 

 

 

 

 

 

3.设计实现过程

 

 

 

 

 

 

4.代码说明

判断是否符合-type的参数值
public boolean checkType(String a) {return Pattern.matches("ip|sp|cure|dead",a);}
  判断参数是否正确
public boolean checkParamter(String a){...}
  判断日期是否符合形式
public boolean checkDate(String a){}{...}
  判断输入省份是否符合要求
public boolean checkProvinces(String a){...}
  判断是否为所需要的日志形式
public boolean checkLogFile(String a){...}

 Province {

    全国, 安徽, 北京, 重庆, 福建, 甘肃, 广东, 广西, 贵州, 海南, 河北, 河南, 黑龙江, 湖北, 湖南, 吉林, 江苏, 江西, 辽宁,

    内蒙古, 宁夏, 青海, 山东, 山西, 陕西, 上海, 四川, 天津, 西藏, 新疆, 云南, 浙江;

}

//处理日志文件 public void dealFile(File file)

 { try { if(!file.exists()&&file.isDirectory())

 { throw new FileNotFoundException(); }

 InputStreamReader inputReader=new InputStreamReader(new FileInputStream(file),"UTF-8");

 BufferedReader br=new BufferedReader(inputReader);

String temp; while((temp=br.readLine())!=null)

{ //跳过// if(temp.indexOf("//")!=0)

{ String temps[]=temp.split(" ");

String number=temps[temps.length-1]

.substring(0, temps[temps.length-1].length()-1);

int changeNumber=Integer.parseInt(number);

 int firstProvinceIndex=getProvinceIndex(temps[0]);

 if(temps.length==4) { if(temps[1].equals("新增"))

{ if(temps[2].equals(typeName[0]))

{ StatisticsNumber[firstProvinceIndex][0]+=changeNumber; }

 else {

 StatisticsNumber[firstProvinceIndex][1]+=changeNumber;

 }

}

 else

{ StatisticsNumber[firstProvinceIndex][1]-=changeNumber;

 if(temps[1].equals("疑似患者"))

 { StatisticsNumber[firstProvinceIndex][0]+=changeNumber; }

 } }

 else if(temps.length==3) { if(temps[1].equals("死亡"))

{ StatisticsNumber[firstProvinceIndex][3]+=changeNumber; }

 Else

 { StatisticsNumber[firstProvinceIndex][2]+=changeNumber; }

StatisticsNumber[firstProvinceIndex][0]-=changeNumber; }

 else {

int secondProvinceIndex=getProvinceIndex(temps[3]);

 if(temps[1].equals(typeName[0]))

{ StatisticsNumber[firstProvinceIndex][0]-=changeNumber; StatisticsNumber[secondProvinceIndex][0]+=changeNumber; }

 else

{ StatisticsNumber[firstProvinceIndex][1]-=changeNumber; StatisticsNumber[secondProvinceIndex][1]+=changeNumber; }

}

 ChangeProvince[getProvinceIndex(temps[0])]=1; }

}

br.close();

 }

catch (IOException e)

{ // TODO Auto-generated catch block e.printStackTrace(); } }

 

 

//输出文件内容public void writeOutTxt()

FileWriter fwriter = null;

int i, j; provinceExist[0] = 1;

try { fwriter = new FileWriter(outPath);

if(isProvinceExist == 0){ //若-province未指定

for(i = 0; i < 35; i++){

if(provinceExist[i] == 1)

{ fwriter.write(provinceStr[i] + " ");

if(isTypeExist == 0){ //若-type未指定

for( j = 0; j < 4; j++)

fwriter.write(typeStr[j] + peopleNumber[i][j] + "人 ");}

else{ //若-type指定

for( j = 0; j < 4; j++)

if(type[j] != 0)

fwriter.write(typeStr[type[j]-1] + peopleNumber[i][type[j]-1] + "人 ");

}

fwriter.write("\n");

}

}

}

 

5.单元测试和描述

 

6.代码规范

代码风格

缩进

  1. 如果开发工具可以设置,则统一设置缩进为四个空格。
  2. 当一行代码划分为两行或多行时,要缩进对齐。

变量命名

采取驼峰命名法命名。

每行最多字符数

  1. 单行字符限制不超过120个,超出需要换行

 

函数

函数最大的行数应该尽量维持在100行内(不包括注释行),超出过多则审视函数是否内部有可重构部分,有则提出重构为新的函数,使主函数代码更加清晰。

一个函数仅完成一件功能。

函数和类的命名

函数的命名遵循驼峰命名规则命名。

 

常量

常量命名全部使用大写,单词之间使用‘ _ ’分隔

 

空行规则

 

函数与函数之间保留一个空行

注释规则

单行注释用//,短的注释直接跟在语句后面,长的注释另起一行

多行注释使用/**/

操作符前后空格

值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ =”、“ +=”、“ >=”、“ <=”、“ +”、“ *”、“ %”、“ &&”、“ ||”、“ <<” 、“ ^” 等二元操作符的前后应当加空格 。

7.5个仓库

Vue2全家桶仿微信App项目,支持多人在线聊天和机器人聊天

专为现代Web构建的基于Node .js的论坛软件

前端入门和进阶学习笔记,超详细的Web前端学习图文教程。

扩展表,用于与一些使用最广泛的CSS框架集成。

小型渐进式客户端HTTP请求库,以及具有相同API的Node.js模块,支持许多高级HTTP客户端功能

 

 

 

 

 

posted @ 2020-02-17 21:05  凝雨随梦  阅读(171)  评论(1编辑  收藏  举报