工程概论第二次作业
GitHub链接
作业要求
课程名称 | 工程概论 |
---|---|
作业要求 | 作业要求链接 |
该作业目的 | Github项目管理,熟悉项目开发过程 |
开发环境
编译语言:Java
工具:IDEA 2020.1
使用系统: windows10
需求
题目:论文查重
描述如下:
设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。
原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:
从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。
注意:答案文件中输出的答案为浮点型,精确到小数点后两位
算法思路
- 主函数main首先检查命令行参数是否满足要求,即包含三个参数:原文文件路径、抄袭版论文文件路径和输出文件路径。如果参数数量不正确,输出错误提示,并返回。
获取命令行参数并保存到对应的变量中:originalFilePath(原文文件路径)、copiedFilePath(抄袭版论文文件路径)和outputFilePath(输出文件路径)。
调用readTextFromFile函数读取原文文件和抄袭版论文文件的内容,并保存在originalText和copiedText字符串中。
调用calculateSimilarity函数计算原文和抄袭版论文之间的相似度(重复率),并将结果保存在similarity变量中。
调用writeResultToFile函数将相似度结果写入输出文件中。
如果在上述过程中出现异常,捕获并输出异常信息。
程序执行完毕,结束。
函数及其功能描述:
1.readTextFromFile(String filePath): 从给定的文件路径读取文本内容并返回一个字符串。
- 输入参数: 文件路径
- 输出结果: 包含文件内容的字符串
2.calculateSimilarity(String originalText, String copiedText): 计算两个文本之间的相似度。
- 输入参数: 原文和抄袭版的文本字符串
*输出结果: 相似度的百分比值
3.main(String[] args): 主函数,用于程序的入口和控制流程。
- 输入参数: 命令行参数(原文文件路径和抄袭版文件路径)
- 输出结果: 打印相似度的百分比值
测试
将程序打包成jar包,在命令行运行
计算模块部分异常处理说明。
想要在命令行中运行一个JAR包,但不知道如何操作。
解决方案:
确保已经安装了Java Development Kit(JDK)并设置了正确的环境变量。
然后通过csdn来解决。
算法性能
1.时间复杂度:
- 读取文本文件:该步骤的时间复杂度为O(n),其中n是原文或抄袭版论文的字符数。
- 计算相似度:为了计算相似度,需要在嵌套循环中比较每个词,因此其时间复杂度为O(m * n),其中m和n分别是原文和抄袭版论文中的词数。这里的实际操作更接近O(n^2)级别,因为对于每个抄袭版词来说,都需要遍历原文词集合。
2.空间复杂度:
- 读取文本文件:该步骤的空间复杂度是O(n),其中n是原文或抄袭版论文的字符数。这是因为使用StringBuilder来存储文本内容。
- 计算相似度:该步骤的空间复杂度是O(m + n),其中m和n分别是原文和抄袭版论文的词数。这是因为将原文和抄袭版论文拆分为词组存储在数组中。
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多少时间 | 810 | 200 |
Development | 开发 | 120 | 50 |
Analysis | 需求分析 (包括学习新技术) | 100 | 20 |
Design Spec | 生成设计文档 | 20 | 10 |
Design Review | 设计复审 | 60 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 10 |
Design | 具体设计 | 200 | 20 |
Coding | 具体编码 | 100 | 30 |
Code Review | 代码复审 | 30 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 5 |
Reporting | 报告 | 100 | 20 |
Test Repor | 测试报告 | 30 | 10 |
Size Measurement | 计算工作量 | 20 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 5 |
合计 | 810 | 200 |