个人项目
1. 项目简介
本项目是论文查重项目,项目默认使用UTF-8编码,由于本项目的算法原因,两篇完全不同的重复率都有30%的重复率,经过多次测试,决定是以50%为界限,超过则判定抄袭。
查看我的gitCode仓库
查看我的博客
查看我的班级
2.需求分析
需求
- 给出两篇文章,查重,然后再答案文件输出重复率
- 要从命令行参数给出文件的路径(绝对路径)
- 答案精确到小数后两位
分析
可以用Scanner类获取路径,然后对文章的内容进行比对,以句子与句子来比对,获取最高的重复率,然后算取综合下来的平均数。
3.PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|---|
| Planning | 计划 | 10 | 10 | 
| Estimate | 估计这个任务需要多少时间 | 10 | 10 | 
| Development | 开发 | 90 | 120 | 
| Analysis | 需求分析(包括学习新技术) | 40 | 70 | 
| Design Spec | 生成设计文档 | 20 | 20 | 
| Coding Standard | 代码规范(为目前的开发指定合适的规范) | 10 | 10 | 
| Design | 具体设计 | 20 | 20 | 
| Coding | 具体代码 | 90 | 120 | 
| Code Review | 代码复审 | 30 | 40 | 
| Test | 测试(自我测试,修改代码,提交修改) | 30 | 50 | 
| Reporting | 报告 | 30 | 30 | 
| Test Report | 测试报告 | 20 | 20 | 
| Size Measurement | 计算工作量 | 20 | 20 | 
| Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 20 | 
| 合计 | 410 | 530 | 
4.接口的设计与实现
- 
有三个类,Main,CheckRepeat,FileToString,其中Main类是主类,负责调用其他两个类实现查重功能,FileToString负责接收文件并把文件转化为字符串集合,CheckRepeat则是接收字符串集合进行查重。 
- 
FileToString有FileToString(),getFileArrayList()和split()方法 
 -CheckRepeat有CheckRepeat(),checkBySentence()和returnTwoStringRepetitionRate()方法
- 
函数关系图 
 ![]() 
5.性能改进
- 性能分析图
 ![]() 
6.单元测试展示
@Test
public void testFileToString(){
    for (String s : filePath) {
        new FileToString(s);
    }
}
@Test
public void testCheckRepeat() {
    for (int i = 0; i < filePath.length; i++) {
        CheckRepeat.checkBySentences(new FileToString(filePath[i]).getFileArrayList(),
        new FileToString(checkedFilePath[i]).getFileArrayList());
    }
}
- 测试覆盖率
 ![]() 
7.异常处理说明
- 本系统并没有自己设置的异常,但本系统非常专注于对IO流异常的处理
- 在FileToString中,在对文件的读取时,使用了try-catch-finally来启动和关闭数据流管道,这保证了即使输入的文件地址不对或无法访问都不会使程序出错。
- 在Main类中,使用了try-with-resources,简化代码的同时还可以使代码健壮性更好
 
                    
                     
                    
                 
                    
                



 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号