个人项目

1. 项目简介

本项目是论文查重项目,项目默认使用UTF-8编码,由于本项目的算法原因,两篇完全不同的重复率都有30%的重复率,经过多次测试,决定是以50%为界限,超过则判定抄袭。

查看我的gitCode仓库

查看我的博客

查看我的班级

2.需求分析

需求

  • 给出两篇文章,查重,然后再答案文件输出重复率
  • 要从命令行参数给出文件的路径(绝对路径)
  • 答案精确到小数后两位

分析

可以用Scanner类获取路径,然后对文章的内容进行比对,以句子与句子来比对,获取最高的重复率,然后算取综合下来的平均数。

3.PSP表格

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

4.接口的设计与实现

  • 有三个类,Main,CheckRepeat,FileToString,其中Main类是主类,负责调用其他两个类实现查重功能,FileToString负责接收文件并把文件转化为字符串集合,CheckRepeat则是接收字符串集合进行查重。

  • FileToString有FileToString(),getFileArrayList()和split()方法
    -CheckRepeat有CheckRepeat(),checkBySentence()和returnTwoStringRepetitionRate()方法

  • 函数关系图

5.性能改进

  • 性能分析图

6.单元测试展示

@Test
public void testFileToString(){
    for (String s : filePath) {
        new FileToString(s);
    }
}
@Test
public void testCheckRepeat() {
    for (int i = 0; i < filePath.length; i++) {
        CheckRepeat.checkBySentences(new FileToString(filePath[i]).getFileArrayList(),
        new FileToString(checkedFilePath[i]).getFileArrayList());
    }
}
  • 测试覆盖率

7.异常处理说明

  • 本系统并没有自己设置的异常,但本系统非常专注于对IO流异常的处理
  • 在FileToString中,在对文件的读取时,使用了try-catch-finally来启动和关闭数据流管道,这保证了即使输入的文件地址不对或无法访问都不会使程序出错。
  • 在Main类中,使用了try-with-resources,简化代码的同时还可以使代码健壮性更好
posted @ 2024-03-11 17:13  zhinanai  阅读(115)  评论(0编辑  收藏  举报