个人项目:论文查重

个人项目:论文查重

| 这个作业属于哪个课程 | 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,否则设置为0。
3、通过查找出值为1的最长对角线就能找到最长公共子串。
算法思路图1
从上图可以看到,str和str2共有5个公共子串,但最长的公共子串长度为5。
为了进一步优化算法的效率,我们可以再计算某个二维矩阵的值的时候顺便计算出来当前最长的公共子串的长度,即某个二维矩阵元素的值由item[i][j]=1演变为item[i][j]=1 +item[i-1][j-1],这样就避免了后续查找对角线长度的操作了。修改后的二维矩阵如下:
算法思路图2

  • 3.算法实现:

四、代码的整体框架及其实现

  • 1.代码的整体框架
  • 2.定义的异常类
    参数个数不正确
    不含有效文本内容
    文本内容为空
  • 3.主要的类方法及其实现
    实现方法展示
    compareText
    getLongestCommonSubstring
    loadFile
    doCompare

五、代码的性能分析

Overview
LiveMemory

六、单元测试

  • 1.代码展示
    测试代码

  • 2.运行结果
    运行结果1
    运行结果2

  • 3.代码覆盖率及运行时间
    代码覆盖率
    运行时间

七、异常处理

  • 1.参数个数不正确
    假设只传入两个参数
    仅含两个参数
    参数个数不正确

  • 2.不含有效文本内容
    无效的文本内容示例
    无效的文本内容
    不含有效文本内容

  • 3.文本内容为空
    空文本内容示例
    空文本内容
    文本内容为空

  • 4.文件路径错误
    错误路径示例
    错误路径
    文件路径错误

posted @ 2020-09-25 00:12  码代码的小天才  阅读(538)  评论(0编辑  收藏  举报