个人项目:论文查重
个人项目:论文查重
这个作业属于哪个课程 | < 班级链接 > |
---|---|
这个作业要求在哪里 | < 作业链接 > |
这个作业的目标 | JProfiler的使用和git commit的使用 |
一、GitHub
Github链接:个人项目:论文查重
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 60 | 50 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 60 | 120 |
· Design Spec | · 生成设计文档 | 60 | 50 |
· Design Review | · 设计复审 | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
· Design | · 具体设计 | 30 | 30 |
· Coding | · 具体编码 | 180 | 240 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 50 |
Reporting | 报告 | ||
· Test Repor | · 测试报告 | 30 | 20 |
· Size Measurement | · 计算工作量 | 20 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 15 |
· 合计 | 610 | 665 |
三、模块接口的设计与实现过程
1.Java类文件
FileUtil用于文本文件与字符串的相互转换,Calculate类用于计算两个字符串的相似度.
Main是程序入口.
2.程序流程
从输入参数中分别获取文件,并转化成字符串.
将两个字符串输入Calculate提供的计算方法中,计算出结果并传给FileUtil,生成答案文件,
Calculate调用getSplitWords将文本分词,再合并出一个总词组,并计算出两个子词组的词频.计算出余弦相似度
四、测试
import com.tree.util.Calculate;
import com.tree.util.FileUtil;
import org.junit.jupiter.api.Test;
/**
* @author lucifer
*/
public class CaculateTest {
/**
* 测试句子
*/
@Test
public void sentence(){
String source = "我们去打球";
String fake = "我们去学习";
double res = Calculate.caculate(source,fake);
assert res < 1;
}
/**
* 测试与自身查重
*/
@Test
public void orig(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
double res = Calculate.caculate(source,fake);
assert res == 1;
}
/**
* 测试与增加版查重
*/
@Test
public void orig_add(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_add.txt");
double res = Calculate.caculate(source,fake);
assert res <= 1;
}
/**
* 测试与删减版查重
*/
@Test
public void orig_del(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_del.txt");
double res = Calculate.caculate(source,fake);
assert res <= 1;
}
/**
* 测试orig_0.8_dis_1.txt
*/
@Test
public void orig_dis(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_1.txt");
double res = Calculate.caculate(source,fake);
assert res <= 1;
}
/**
* 测试orig_0.8_dis_10.txt
*/
@Test
public void orig_dis2(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_10.txt");
double res = Calculate.caculate(source,fake);
assert res <= 1;
}
/**
* 测试orig_0.8_dis_15.txt
*/
@Test
public void orig_dis3(){
String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_15.txt");
double res = Calculate.caculate(source,fake);
assert res <= 1;
}
}
测试用时:
代码覆盖率:
除了Main类没有用到,以及测试并没有用到写出文件的方法.