个人项目

题目:论文查重

GitHub链接:https://github.com/i7uer/3123004308

作业要求

这个作业属于哪个课程 软件工程
这个作业要求在哪里 个人项目(第二次作业)
这个作业的目标 在GitHub中实现论文查重程序,并测试

1.需求

题目:论文查重

描述如下:

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

  • 原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
  • 抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。

要求输入输出采用文件输入输出,规范如下:

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

我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。

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

2.有关开发

语言:Java 18.0.2

环境:IntelliJ IDEA 2021.3.2

3.算法的实现

①算法原理:主要是通过计算两个文件中的文本的最长公共子序列(LCS)来计算它们的重复率。具体如下:

  1. 读取文件:首先,读取两个文件的内容。这两个文件分别是原文文件和抄袭版论文的文件。
  2. 计算最长公共子序列(LCS):然后,计算这两个字符串的最长公共子序列。最长公共子序列是指两个字符串中最长的公共部分。
  3. 计算重复率:最后,计算重复率。重复率是指最长公共子序列的长度除以两个字符串中较长的那个的长度。

②计算模块接口的设计与实现过程:

  1. 代码组织:代码分为两个主要的类,一个是Text1类,另一个是Text2类。Text1类是主类,它负责处理文件输入输出和调用Text2类的方法。Text2类包含了计算两个字符串的最长公共子序列(LCS)的方法和计算两个文件的重复率的方法。
  2. 类和函数的关系Text1类和Text2类之间的关系是协作关系。Text1类需要调用Text2类的rate方法来计算重复率。Text2类的rate方法又需要调用longestcommon方法来计算最长公共子序列。
  3. 算法的关键:算法的关键在于如何准确地计算两个文件的重复率。使用Jaccard相似度或余弦相似度等方法来计算重复率。需要考虑到中文字符的处理,以及文件输入输出的异常处理。
  4. 独到之处:可以处理中文字符,并且可以通过命令行参数来指定文件路径。

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

img
img
img

④将单元测试得到的测试覆盖率截图:

img

⑤计算模块部分异常处理说明:

可能会遇到以下几种异常:

  1. 文件不存在:当试图打开一个不存在的文件时,会抛出FileNotFoundException。可以使用try-catch语句来捕获这个异常,并向用户显示一个错误消息。例如,可以创建一个测试用例,尝试打开一个不存在的文件,然后检查是否抛出了FileNotFoundException
  2. 读取文件错误:当试图读取一个文件,但由于某种原因(如磁盘错误)无法读取时,会抛出IOException。可以使用try-catch语句来捕获这个异常,并向用户显示一个错误消息。例如,可以创建一个测试用例,尝试读取一个无法访问的文件,然后检查是否抛出了IOException
  3. 编码错误:当试图以错误的编码读取一个文件时,会抛出UnsupportedEncodingException。可以使用try-catch语句来捕获这个异常,并向用户显示一个错误消息。例如,可以创建一个测试用例,尝试以错误的编码读取一个文件,然后检查是否抛出了UnsupportedEncodingException

附录:PSP 表格记录

PSP2.1 Personal Software Process Stages 预估耗时(min) 实际耗时(min)
Planning 计划 30 25
Estimate 估计这个任务需要多少时间 5 5
Development 开发 50 45
Analysis 需求分析 (包括学习新技术) 20 23
Design Spec 生成设计文档 20 15
Design Review 设计复审 5 5
Coding Standard 代码规范 3 3
Design 具体设计 20 18
Coding 具体编码 25 30
Code Review 代码复审 10 10
Test 测试 60 50
Reporting 报告 25 30
Test Report 测试报告 20 20
Size Measurement 计算工作量 5 8
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 8 5
合计 306 292
posted @ 2025-03-09 00:20  HCircle  阅读(23)  评论(0)    收藏  举报