第一次个人编程作业
个人编程作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229 |
这个作业的目标 | 开发个人项目,实现项目单元测试 |
仓库链接 | https://github.com/Kun3M/3222004768/tree/master |
目录
一、需求分析
二、开发环境
三、PSP表格
四、设计与实现
五、性能分析
六、单元测试
七、计算模块部分异常
八、参考文献
一、需求
题目:论文查重
描述如下:
设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。
原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:
从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。
注意:答案文件中输出的答案为浮点型,精确到小数点后两位
二、开发环境
开发环境:IntelliJ IDEA 2024.2.1
开发语言:java
环境依赖:PaperCheck-1.0-SNAPSHOT-jar-with-dependencies.jar
三、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 120 | |
Estimate | 估计这个任务需要多少时间 | 20 | 15 |
Development | 开发 | 400 | 400 |
Analysis | 需求分析 (包括学习新技术) | 120 | 130 |
Design Spec | 生成设计文档 | 40 | 40 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 40 | 50 |
Design | 具体设计 | 60 | 40 |
Coding | 具体编码 | 270 | 300 |
Code Review | 代码复审 | 40 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 80 |
Reporting | 报告 | 120 | 110 |
Test Repor | 测试报告 | 30 | 25 |
Size Measurement | 计算工作量 | 40 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 55 |
合计 | 1450 | 1505 |
四、设计与实现
算法设计
模块设计
读写文件类:TxtlOUtils
包含 readTxt() 和 writeTxt() 读写方法,将txt文本内容转化为String读入字符串中,相似度结果写入txt文本中。
该过程调用了java.io包提供的接口。
imhash模块:SimHashUtil
先后通过 gethash()、getSimHash()这两个方法传入String得到计算结果并以字符串的格式传出。
主函数模块:main
配置路径名读取相应的文件,将文件转化为字符串;
由字符串计算SiHash值;
由SimHash计算文本相似度;
将相似度写入结果文本。
五、性能分析
程序中消耗最大的函数是SimHash()以及hankcs.hanlp对文本的分词操作
单元测试
六、计算模块部分异常
总结
未使用过IntelliJ IDEA 2024.2.1软件 ,遇到很多问题解决, 有些解决不了,有些还能解决。也同时学到了github上怎么上传文件。