这个作业属于哪个课程 | 2020春S班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 构建之法,PSP表格,github,疫情程序 |
作业正文 | 当前页面 |
其他参考文献 | 百度,CSDN,B站 |
1.GitHub仓库
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 5 | 10 |
Development | 开发 | 1200 | 800 |
Analysis | 需求分析 (包括学习新技术) | 180 | 200 |
Design Spec | 生成设计文档 | 60 | 30 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 50 |
Design | 具体设计 | 120 | 130 |
Coding | 具体编码 | 240 | 360 |
Code Review | 代码复审 | 30 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 60 |
Reporting | 报告 | 30 | 20 |
Test Report | 测试报告 | 30 | 20 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 30 |
合计 | 2165 | 1850 |
3.解题思路描述
1.先看作业要求里面,完成该次作业所要求的知识
2.分析下这个作业的具体要求
4.设计实现过程
因为没带电脑,只能去亲戚那敲代码,不是很方便,所以这次做的比较潦草
5.代码说明
1.数据处理
public static void InforPro(String Path,List<Province> list1,Province Apro) //日志信息处理
{
int people;
String pattern = ".*//.*";
String pattern0 = "(\d+)";
String pattern1 = ".*新增.*";
String pattern2 = ".*流入.*";
String pattern3 = ".*死亡.*";
String pattern4 = ".*治愈.*";
String pattern5 = ".*确诊感染.*";
String pattern6 = ".*排除.*";
String pattern7 = ".*感染患者.*";
String pattern8 = ".*疑似患者.*";
Pattern number = Pattern.compile(pattern0); // 创建 Pattern 对象
try
{
File file = new File(Path);
if(!file .exists())
{
System.out.println("错误的路径");
System.exit(0);
}
BufferedReader br = new BufferedReader(new FileReader(file));
String str = null;
while ((str = br.readLine()) != null)
{
Matcher num = number.matcher(str);
String arrays[] = str.split(" ");
if(Pattern.matches(pattern,str)) continue;
Add(arrays[0],list1);
for (Province pro1 : list1) {
if (arrays[0].equals(pro1.getprovince())&&num.find())
{
people = Integer.valueOf(num.group(0));
if(Pattern.matches(pattern1,str))
{
if(Pattern.matches(pattern7,str))
{
pro1.setip(pro1.getip() + people);
Apro.setip(Apro.getip() + people);
}
else if(Pattern.matches(pattern8,str))
{
pro1.setsp(pro1.getsp() + people);
Apro.setsp(Apro.getsp() + people);
}
}
else if(Pattern.matches(pattern2,str))
{
Add(arrays[3],list1);
for (Province province2 : list1) {
if (arrays[3].equals(province2.getprovince()))
{
if(Pattern.matches(pattern7,str))
{
pro1.setip(pro1.getip() - people);
province2.setip(province2.getip() + people);
}
else if(Pattern.matches(pattern8,str))
{
pro1.setsp(pro1.getsp() - people);
province2.setsp(province2.getsp() + people);
}
}
}
}
else if(Pattern.matches(pattern3,str))
{
pro1.setdead(pro1.getdead() + people);
pro1.setip(pro1.getip() - people);
Apro.setdead(Apro.getdead() + people);
Apro.setip(Apro.getip() - people);
}
else if(Pattern.matches(pattern4,str))
{
pro1.setcure(pro1.getcure() + people);
pro1.setip(pro1.getip() - people);
Apro.setcure(Apro.getcure() + people);
Apro.setip(Apro.getip() - people);
}
else if(Pattern.matches(pattern5,str))
{
pro1.setip(pro1.getip() + people);
pro1.setsp(pro1.getsp() - people);
Apro.setip(Apro.getip() + people);
Apro.setsp(Apro.getsp() - people);
}
else if(Pattern.matches(pattern6,str))
{
pro1.setsp(pro1.getsp() - people);
Apro.setsp(Apro.getsp() - people);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
2.获取命令参数
for(int j = 0;j < args.length;j++) {
if(args[j].equals("list")) judge1++;
else if(args[j].equals("-log"))
{
log = args[j + 1 ];
judge1++;
}
else if(args[j].equals("-out"))
{
out = args[j + 1];
judge1++;
}
else if(args[j].equals("-date")) date = args[j + 1];
else if(args[j].equals("-type"))
{
judge3 = 1;
AddType(args,j,outinforo);
}
else if(args[j].equals("-provence"))
{
judge2 = 1;
Addpro(args,j,ProInfor,list1);
}
}
if(judge1!=3||(judge2==0&&!ProInfor.isEmpty())||(judge2==1&&ProInfor.isEmpty())
||(judge3==0&&!outinforo.isEmpty())||(judge3==1&&outinforo.isEmpty()))
{
System.out.println("非法命令");
System.exit(0);
}
3.数据的输出
public static void InforOut(String out,List<Province> list1,List<String> outinforo)
{
out = out.trim();
String Path = out.substring(0,out.lastIndexOf("\"));
try {
File file = new File(Path);
if (!file.exists())
{
System.out.println("错误的路径");
System.exit(0);
}
BufferedWriter wr = new BufferedWriter(new FileWriter(out));
for (Province province : list1)
{
if (outinforo.isEmpty())
{
wr.write(province.getprovince() + "共有感染患者" + province.getip() + "人 疑似患者" +province.getsp()
+ "人 治愈" + province.getcure() + "人 死亡" + province.getdead() + "人
");
}
else
{
wr.write(province.getprovince() + "共有");
for (String str2 : outinforo)
{
if(str2.equals("ip")) wr.write("感染患者" + province.getip() + "人 ");
if(str2.equals("sp")) wr.write("疑似患者" + province.getsp() + "人 ");
if(str2.equals("cure")) wr.write("治愈" + province.getcure() + "人 ");
if(str2.equals("dead")) wr.write("死亡" + province.getdead() + "人 ");
}
wr.write("
");
}
}
wr.write("// 该文档并非真实数据,仅供测试使用");
wr.flush();
wr.close();
}catch (IOException e) {
e.printStackTrace();
}
}
5.代码测试及性能分析
6.代码规范链接
[代码规范](https://github.com/supercode11/fzu2020/blob/master/221701318/codestyle.md)
7.心路历程与收获
编程能力有点差,没有规划概念,导致这次作业完成的很艰难。好消息就是发现自己很多不足的地方。在接下来的日子里我的加倍努力,从基础编程开始,给自己信心,由简到难。不断进步。
以课本为辅,实践为主。学再多的理论知识,不实践就是掌握不了。