个人项目
个人项目:
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146 |
这个作业的目标 | 使用java编程语言开发论文查重功能,测试代码性能和覆盖率。 |
GitHub仓库地址:
https://github.com/Adorkble/AdorkableWN
PSP表格:
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 80 | 90 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | 600 | 500 |
· Analysis | · 需求分析 (包括学习新技术) | 50 | 50 |
· Design Spec | · 生成设计文档 | 30 | 40 |
· Design Review | · 设计复审 | 20 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
· Design | · 具体设计 | 40 | 50 |
· Coding | · 具体编码 | 200 | 200 |
· Code Review | · 代码复审 | 30 | 35 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 20 |
Reporting | 报告 | 80 | 80 |
· Test Repor | · 测试报告 | 30 | 45 |
· Size Measurement | · 计算工作量 | 20 | 15 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 15 |
合计 | 1280 | 1200 |
类的详细说明:
1. 类说明:
-
CheckArticle:此类中有4个方法,readChinese()将每一行文本内容中的中文字符提取出来;readChineseFromFile()将文本所有中文字符逐行提取出来;Deconstruct()将readChineseFromFile()中提取到的文字进行拆解;Checking()是用Deconstruct(path)文章拆分出来的词组进行对比查重。
-
Logfile:此类中有3个方法,Logfile()方便新建Logfile对象;start()判断是否日志创建成功;addToLog()开启日志功能则可正常写入信息,写入日志信息时,为了保证文件信息正确,需要同步。
2. 类图:
3. 函数流程图:
代码性能测试:
1. 内存分析:
2. 运行分析
具体单元测试:
1. 测试单元:
2. 代码覆盖率:
3. 命令行测试:
运行结果展示:
抄袭论文 | 查重率 |
---|---|
orig_0.8_del.txt | 0.8077011 |
orig_0.8_add.txt | 0.5638108 |
orig_0.8_dis_1.txt | 0.8899804 |
orig_0.8_dis_10.txt | 0.7066445 |
orig_0.8_dis_15.txt | 0.4913692 |
异常处理说明:
1. 当用户输入的路径不存在时:
2. 当用户不按照参数之间用空格隔开时:
代码缺陷:
- 查重速率过低,性能不优。
- 没有考虑到一个句子中有13个字与原著相似时定位该句子为抄袭。
- 当有很多一些出现率比较高的词时,会将不断累加相似词的数目,会导致查重率偏高。
- 提取文本所有中文字符,但是没有考虑到英文字母。导致在英文比较的文章中查重率太低,使用感不强。