第一次编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220
这个作业的目标 写一个论文查重项目

GitHub链接:https://github.com/Zhangxingyuan123/3122004803

一、PSP表格

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

二、算法设计

1、设计以及结果:

三、计算模块接口部分性能的改进:

1、概览:

2、内存:

四、单元测试:

1、测试代码:package test;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.LinkedList;
import java.util.Queue;

import com.Parse;
import org.junit.Test;

public class test {

@Test
public void testAllArticle() {
    Path basePath = Paths.get("src", "testfiles");
    Path resPath = Paths.get("src", "res.txt");
    String origin = "orig.txt";

    long startTime = System.currentTimeMillis();

    Queue<String> testFileNames = getTestFileNames(basePath);

    // 测试每一个子文件查重率
    while (!testFileNames.isEmpty()) {
        String fileName = testFileNames.poll();

        if (origin.equals(fileName)) {
            continue;
        }
        String[] args = {
                basePath.resolve(origin).toString(),
                basePath.resolve(fileName).toString(),
                resPath.toString()
        };
        System.out.println("参数:" + Arrays.toString(args));
        Parse.main(args);
        System.out.println();
    }

    long endTime = System.currentTimeMillis();
    System.out.println("消耗时间:" + (endTime - startTime) / 1000.0 + "s");
}

@Test
public void testWrongArgs() {
    String[] args = {
            "wrong_origin_path",
            "wrong_target_path",
            "wrong_res_path"
    };
    System.out.println("参数:" + Arrays.toString(args));
    Parse.main(args);
}

@Test
public void testShortArgs() {
    String[] args = {
            "wrong_args_length"
    };
    System.out.println("参数:" + Arrays.toString(args));
    Parse.main(args);
}

/**
 * 获取目录下的所有文件名
 *
 * @param basePath 目录路径
 * @return 目录下的所有文件名
 */
private static Queue<String> getTestFileNames(Path basePath) {
    Queue<String> filenames = new LinkedList<>();
    try {
        Files.list(basePath).forEach(path -> {
            if (!path.toFile().isDirectory()) {
                filenames.add(path.getFileName().toString());
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
    return filenames;
}

}

五、异常处理:

1、FileNotFoundException
发生原因:试图打开一个不存在的文件。
处理方法:使用 try-catch 结构捕获此异常,并给出适当的提示,如文件路径错误或文件不存在等。

2、IOException
发生原因:在读取或写入文件时出现问题。
处理方法:同样使用 try-catch 结构捕获此异常,并提供相应的错误信息。

3、SecurityException
发生原因:当应用程序试图执行某些安全策略不允许的操作时。
处理方法:提示用户检查文件权限设置。

posted @   zhangxingyuan123  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示