个人编程项目:论文查重系统

课程 软件工程
要求 个人项目作业
题目 论文查重系统
GitHub 链接:https://github.com/EmmaZoeLeft/3218004633.git

要求规范

输入输出采用文件输入输出。按照传递命令行参数的方式提供文件的位置,从指定的位置读取文件,并向指定的文件输出答案。

  • 命令行参数给出:论文原文的文件的绝对路径
  • 命令行参数给出:抄袭版论文的文件的绝对路径
  • 命令行参数给出:输出的答案文件的绝对路径

示例:java -jar main.jar C:\tests\org.txt C:\tests\org_add.txt C:\tests\ans.txt

注意:答案文件中输出的答案为浮点型,精确到小数点后两位

环境

Eclipse 2020 + JDK 1.8

具体实现

  • 结巴分词:使用了 HFUTUtils 工具程序集合中的结巴分词jar包来处理文本,分词后去除了常见停用词

  • 最小编辑距离:最小编辑距离,是指两个字串之间,由一个转成另一个所需最小的编辑操作次数。编辑操作包含:插入、删除和替换三种操作。

类及接口

  • Main.java:主类,调用以下类
  • textSplit.java:分词
  • EditDistance.java:最小编辑距离算法
  • io.java:读写类
  • NullTextException.java:空文本异常抛出

单元测试

eclipse 自带的 JUnit5

  • 逐个文本测试

orig_0.8_add.txt测试结果

orig_0.8_del.txt测试结果

orig_0.8_dis_1.txt测试结果

orig_0.8_dis_10.txt测试结果

orig_0.8_dis_15.txt测试结果

  • 一次多个文本测试
    不断递归迭代会堆栈异常,故不可连续查重多个文本,应采用动态规划完成。

    MainTest.java测试结果

性能测试

Main.java的性能测试

不存在程序内存泄漏严重的情况
5秒内给出了答案
占用的内存未超过2048MB

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
Estimate 估计这个任务需要多少时间 45 25
Development 开发
Analysis 需求分析 (包括学习新技术) 720 660
Design Spec 生成设计文档 120 30
Design Review 设计复审 60 0
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 0
Design 具体设计 120 240
Coding 具体编码 720 1080
Code Review 代码复审 240 360
Test 测试(自我测试,修改代码,提交修改) 720 240
Reporting 报告
Test Repor 测试报告 120 90
Size Measurement 计算工作量 45 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 60 30
合计 3000 2775
posted @ 2020-09-25 01:18  左左左左右  阅读(662)  评论(0编辑  收藏  举报