课程

软件工程

要求

个人项目作业

题目

论文查重系统

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测试结果

Java stream查重 java查重系统_java


orig_0.8_del.txt测试结果


Java stream查重 java查重系统_绝对路径_02


orig_0.8_dis_1.txt测试结果


Java stream查重 java查重系统_软件工程作业_03


orig_0.8_dis_10.txt测试结果


Java stream查重 java查重系统_命令行参数_04


orig_0.8_dis_15.txt测试结果


Java stream查重 java查重系统_java_05

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

    MainTest.java测试结果

性能测试

Main.java的性能测试

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

Java stream查重 java查重系统_命令行参数_06

Java stream查重 java查重系统_java_07

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