首页 > 其他分享 >个人项目

个人项目

时间:2024-03-12 15:55:05浏览次数:25  
标签:count 抄袭 String 个人 项目 论文 getString 原版

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 学会使用github管理代码,学会自己设计算法、编写代码、制作PSP表格

 
 

一、作业github链接:https://github.com/nokcool/nokcool/tree/main/3122004393

 
 
二、PSP表格:

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 2
· Estimate · 估计这个任务需要多少时间 342 422
Development 开发 20 40
· Analysis · 需求分析 (包括学习新技术) 120 150
· Design Spec · 生成设计文档 2 3
· Design Review · 设计复审 10 15
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 5 1
· Design · 具体设计 20 30
· Coding · 具体编码 60 45
· Code Review · 代码复审 10 7
· Test · 测试(自我测试,修改代码,提交修改) 20 45
Reporting 报告 30 40
· Test Repor · 测试报告 20 25
· Size Measurement · 计算工作量 5 7
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 12
· 合计 342 422

 
 
三、模块接口的设计与实现过程:
 
1、代码的组织:
该论文查重算法一共包括一个类、一个主函数、四个方法。四个方法处于平行对等关系,均由主函数单独调用。
 
2、程序执行流程:
(1)主函数调用getString方法,将文件中的数据写入字符串;
(2)主函数调用getCount方法,计算论文中重复的字数;
(3)主函数调用getInts方法,计算重复率并存入数组中;
(4)主函数调用writeResult方法,将程序执行结果写入文件中。
 
2、算法的关键:
(1)分别将原版论文和抄袭版论文写入字符串;
(2)将抄袭版论文字符串的每一个字符与原版论文字符串对应的下标的前后二十个字符进行比较,若找到相同字符则count+1,最后用count除以抄袭版论文字符串长度得出重复率。
(3)该算法的独到之处是用count除以论文总字数时,先将count乘以10000再除以总字数,随后将结果拆分成个位十位和小数位存入数组中,再将数组按一定的下标顺序写入文件,从而得到保留两位小数的结果。
 
 
四、计算模块接口部分的性能改进:
 
1、改进计算模块性能上所花费的时间:15分钟;
 
2、改进思路:
(1)将抄袭版文件前后对比的字数设置为全局变量,方便根据论文的不同来改进算法。
(2)由于论文字数可能较多,于是将计算重复数字的变量count的类型由int改为long。
(3)JProfiler性能分析图:

(4)程序中消耗最大的函数:getString函数

getString函数代码如下:
public static String getString(String w1) throws IOException {
FileReader fr = new FileReader(w1);
int ch;
String word1 = new String();
while ((ch = fr.read()) != -1)
word1 += (char) ch;
fr.close();
return word1;
}
 
 
五、计算模块部分单元测试展示:
 
1、测试的函数:main函数
 
2、测试的思路:
(1)创建多组原版论文、抄袭版论文和输出文件的txt文件。原版论文和抄袭版论文一共十组,包括内容毫不相干的几组以及内容有一定关联的几组和没有内容的几组。
(2)将主函数执行流程套入循环中,重复输入多组文件路径进行测试。
(3)单元测试代码:
public static void main(String[] args) throws IOException {
for(int k=0;k<10;k++){
Scanner sc=new Scanner(System.in);
System.out.println("请输入原版论文的绝对路径:");
String w1=sc.nextLine();
System.out.println("请输入抄袭版论文的绝对路径:");
String w2=sc.nextLine();
System.out.println("请输入输出答案文件的绝对路径:");
String out=sc.nextLine();
String word1 = getString(w1);//将原版论文写入字符串
String word2 = getString(w2);//将抄袭版论文写入字符串
long count = getCount(word2, word1);//计算重复字数
long result=0;
if(word2.length()!=0)
result=count*100000/word2.length();
long[] arr = getInts(result);//计算重复率,将结果存入数组
writeResult(arr, out);//将结果写入文件中
}
}
(4)测试覆盖率截图:

 
 
六、计算模块部分异常处理说明:
 
异常1:文件的绝对路径输入错误时,程序会自动报错。
对应场景:用户输入文件的路径错误时系统会提示。

解决办法:重新运行程序并输入正确的路径。
 
异常2:用户提交的原版论文或抄袭版论文是空白时输出的重复率为0。

 

 

 

对应场景:两篇论文至少有一篇是空白论文时输出正确的重复率。

标签:count,抄袭,String,个人,项目,论文,getString,原版
From: https://www.cnblogs.com/leti/p/18066541

相关文章

  • 怎样通过IT服务台来增强IT项目管理?
    当下,越来越多的企业和组织重视IT项目管理的重要性。而如何通过IT服务台来增强和提升IT项目管理效率,成为了许多企业领导和IT专业人员共同关注的话题。如何充分利用IT服务台,以促进IT项目管理水平的提升和项目成功率的增加变得至关重要。  1、一体化管理将IT服务台与项目管理平......
  • Maven - 项目的JDK编译level是1.5,修改不掉??
    背景  idea中的maven项目,父项目和子项目的ProjectStructure的languagelevel都是1.5,怎么修改为8?尝试修改并应用后会失效,还是会自动恢复为1.5。 1、Settings中JavaCompiler中,子项目的Targetbytecodeversion都是1.52、ProjectStructure中的Module的LanguageLevel都是5......
  • 初始配置:IntelliJ Android无法运行项目并报错Error: Module not specified
    最近重拾android,想趁复试前搞一个东西出来,顺便给毕设做好准备。写代码前得让IDEA把初始的空项目在虚拟机上运行一下,看看开发环境是不是有什么问题,果然每次过一段时间重开,哪怕我上一次关闭时啥也没碰,总得出点配置上的小问题。Error:Modulenotspecified未指定模块错误,但点......
  • 创建Vue3+Vite+TypeScript项目
    一、安装node环境,安装18.0或更高版本的Node.js  推荐使用nvm管理node版本:一看就会使用nvm实现多个版本的node自由切换-始是逍遥人-博客园(cnblogs.com)二、创建项目  1、选择一个工作路径,如:E:\webproject  2、打开cmd命令窗口进入到当前目录    快捷方式:直接......
  • Maven项目中在pom.xml中添加依赖包
    https://blog.csdn.net/qq_40768312/article/details/134314296Maven项目中在pom.xml中添加依赖包1、查找需要的依赖包例如:easypoi-base地址:https://mvnrepository.com/搜索:easypoi-base 点击第一个,查看版本,选择最新版本  2、添加依赖包复制下方红框里的内容,粘贴至pom......
  • 创建一个vue项目
    1.使用vite创建项目npmcreatevite@latest2.替换main.js//从Vue.js框架中导入createApp函数。createApp是用来创建Vue应用的函数。import{createApp}from'vue'//导入一个CSS文件,这个文件包含了应用程序的样式信息。'./style.css'表示这个CSS......
  • Gitlab如何将多个项目移动到指定目录/群组?
    将您的个人项目移至群组本教程将向您展示如何将个人项目移动到群组中。为什么群组很重要?在极狐GitLab中,使用群组可以同时管理一个或多个相关项目。群组具有很多的好处。例如,您可以:管理您的项目的权限。查看群组中项目的所有议题和合并请求。查看您命名空间中的所有项目......
  • python怎么创建项目?
     Python是一种高级编程语言,可以用于各种不同的开发和编程场景。Python的灵活性使其成为许多开发者的首选。在本文中,我们将探讨如何在Python中创建项目。一.准备工作在开始使用Python进行开发之前,您需要确保您的计算机上已经安装了Python。如果您尚未安装Python,可以通过官......
  • 新版eclipse创建maven项目步骤
    eclipse版本:eclipse-jee-2023-12R一、使用eclipse自带的maven,先进行eclipse配置:1、打开Window-》preferences-》maven-》installations-》可以看到eclipse自带的maven版本,默认勾选的也是该版本(如果需要使用自行安装的maven可以在这里add);2、打开Window-》preferences-》maven-......
  • 博弈论个人笔记总结
    博弈论简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)-The_Virtuoso-博客园(cnblogs.com)尼姆博弈(Nim)游戏引入:假设先手为$X$,后手为$Y$先假设有两堆石子,数量分别为a,b,如果$a\neqb\and\a>b$,$X$选石子$x$个让$a-x=b$,然后$......