个人项目:论文查重
个人项目:论文查重
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
| ---- | ---- | ---- |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146 |
| 这个作业的目标 | 熟悉个人项目开发流程 学会使用PSP表格 初步掌握Git 论文查重算法的实现 学会使用单元测试 |
一、GitHub地址
GitHub的提交记录

二、PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 80 |
| · Estimate | · 估计这个任务需要多少时间 | 20 | 30 |
| Development | 开发 | 300 | 360 |
| · Analysis | · 需求分析 (包括学习新技术) | 120 | 120 |
| · Design Spec | · 生成设计文档 | 50 | 30 |
| · Design Review | · 设计复审 | 60 | 60 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
| · Design | · 具体设计 | 40 | 60 |
| · Coding | · 具体编码 | 180 | 160 |
| · Code Review | · 代码复审 | 70 | 90 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 40 |
| Reporting | 报告 | 70 | 100 |
| ·Test Report | · 测试报告 | 20 | 30 |
| ·Size Measurement | · 计算工作量 | 20 | 20 |
| ·Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 40 |
| Total | 合计 | 1090 | 1250 |
三、算法思想
- 1.算法思想:最长公共子串
- 2.算法原理:求两个字符串的最长公共子串
算法思路:
1、把两个字符串分别以行和列组成一个二维矩阵。
2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。
3、通过查找出值为1的最长对角线就能找到最长公共子串。
从上图可以看到,str和str2共有5个公共子串,但最长的公共子串长度为5。
为了进一步优化算法的效率,我们可以再计算某个二维矩阵的值的时候顺便计算出来当前最长的公共子串的长度,即某个二维矩阵元素的值由item[i][j]=1演变为item[i][j]=1 +item[i-1][j-1],这样就避免了后续查找对角线长度的操作了。修改后的二维矩阵如下:
- 3.算法实现:
![]()
四、代码的整体框架及其实现
- 1.代码的整体框架
![]()
- 2.定义的异常类
![参数个数不正确]()
![不含有效文本内容]()
![文本内容为空]()
- 3.主要的类方法及其实现
![实现方法展示]()
![compareText]()
![getLongestCommonSubstring]()
![loadFile]()
![doCompare]()
五、代码的性能分析


六、单元测试
-
1.代码展示
![测试代码]()
-
2.运行结果
![运行结果1]()
![运行结果2]()
-
3.代码覆盖率及运行时间
![代码覆盖率]()
![运行时间]()
七、异常处理
-
1.参数个数不正确
假设只传入两个参数
![仅含两个参数]()
![参数个数不正确]()
-
2.不含有效文本内容
无效的文本内容示例
![无效的文本内容]()
![不含有效文本内容]()
-
3.文本内容为空
空文本内容示例
![空文本内容]()
![文本内容为空]()
-
4.文件路径错误
错误路径示例
![错误路径]()
![文件路径错误]()


























浙公网安备 33010602011771号