第一次个人项目作业

这个作业属于哪个课程 信安1912-软件工程
这个作业要求在哪里 个人项目作业
这个作业的目标 论文查重、代码测试、PSP表格、性能分析、GitHub上传、博客总结
GitHub

作业需求

题目:论文查重

描述如下:

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

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:

从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。

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

核心算法

Levenshtein 距离 算法简单介绍:

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。
许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。


参考:https://www.iteye.com/blog/wdhdmx-1343856

异常处理

处理输出文件异常

处理输出文件异常

代码性能测试

堆内存:

内存消耗:

测试结果

原文与原文

原文与空文本

原文与抄袭版论文

输出文件

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(min) 实际耗时(min)
Planning 计划 40 60
Estimate 估计这个任务需要多少时间 -- --
Development 开发 630 1060
Analysis 需求分析 (包括学习新技术) 180 240
Design Spec 生成设计文档 40 60
Design Review 设计复审 10 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 30
Design 具体设计 120 100
Coding 具体编码 240 400
Code Review 代码复审 20 50
Test 测试(自我测试,修改代码,提交修改) 100 160
Reporting 报告 50 40
Test Report 测试报告 10 10
Size Measurement 计算工作量 20 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 10
合计 710 1160
posted @ 2021-09-19 14:14  -我在发梦  阅读(46)  评论(0编辑  收藏  举报