首页 > 其他分享 >论文查重

论文查重

时间:2024-09-14 13:25:31浏览次数:8  
标签:查重 String int 论文 originalFile 60 readFile plagiarizedFile

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220
这个作业的目标 学会论文查重算法,学会使用git等操作

GitHub地址:https://github.com/wenzb456123/3122004790

环境:idea2024,JDK1.9

一、PSP表格:

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

二、算法模块接口的设计和实现过程:

1、calculateLongestCommonSubsequence(String originalFile, String plagiarizedFile)//计算最长公共子序列
2、calculateEditDistance(String originalFile, String plagiarizedFile)//计算编辑距离
3、readFile(String filePath)//将文件内容读取到字符串
4、writeResult(String outputFile, double similarity, String originalFile, String plagiarizedFile)//将计算结果和时间记录到result文件当中
5、getCurrentDate()//获取当前的时间
6、main(String[] args)//主函数

设计参数:

设计以及结果:


部分代码:

//最长公共子序列
    private static double calculateLongestCommonSubsequence(String originalFile, String plagiarizedFile) throws FileNotFoundException {
        String text1 = readFile(originalFile);
        String text2 = readFile(plagiarizedFile);
        int[] dp = new int[text2.length() + 1];

        for (int i = 1; i <= text1.length(); i++) {
            // 存储前一行的dp[j]的值以供后续使用
            int prev = dp[0];
            // 初始化当前行的dp[0]
            dp[0] = 0;

            for (int j = 1; j <= text2.length(); j++) {
                // 存储当前行的dp[j]的值以供后续使用
                int temp = dp[j];
                // 如果当前位置的字符匹配
                if (text1.charAt(i - 1) == text2.charAt(j - 1)) {
                    // 更新dp[j]为左上角的值加1
                    dp[j] = prev + 1;
                } else {
                    // 否则,取前一行或前一列的较大值
                    dp[j] = Math.max(dp[j], dp[j - 1]);
                }
                // 更新prev为当前行的dp[j]的值,供下次迭代使用
                prev = temp;
            }
        }

        // 返回最长公共子序列长度除以两个字符串长度的最大值
        return (double) dp[text2.length()] / Math.max(text1.length(), text2.length());
    }

设计:

通过读取两个文件的内容,计算最长公共子序列和距离,进而计算两个文本的相似度,最后将结果写入到指定文件。

三、计算模块接口部分性能的改进:

1、概览

2、内存:

四、计算模块部分单元测试展示:

部分代码:

//最长公共子序列
    private static double calculateLongestCommonSubsequence(String originalFile, String plagiarizedFile) throws FileNotFoundException {
        String text1 = readFile(originalFile);
        String text2 = readFile(plagiarizedFile);
        int[] dp = new int[text2.length() + 1];

        for (int i = 1; i <= text1.length(); i++) {
            // 存储前一行的dp[j]的值以供后续使用
            int prev = dp[0];
            // 初始化当前行的dp[0]
            dp[0] = 0;

            for (int j = 1; j <= text2.length(); j++) {
                // 存储当前行的dp[j]的值以供后续使用
                int temp = dp[j];
                // 如果当前位置的字符匹配
                if (text1.charAt(i - 1) == text2.charAt(j - 1)) {
                    // 更新dp[j]为左上角的值加1
                    dp[j] = prev + 1;
                } else {
                    // 否则,取前一行或前一列的较大值
                    dp[j] = Math.max(dp[j], dp[j - 1]);
                }
                // 更新prev为当前行的dp[j]的值,供下次迭代使用
                prev = temp;
            }
        }

        // 返回最长公共子序列长度除以两个字符串长度的最大值
        return (double) dp[text2.length()] / Math.max(text1.length(), text2.length());
    }




    //编辑距离
    private static double calculateEditDistance(String originalFile, String plagiarizedFile) throws FileNotFoundException {
        String text1 = readFile(originalFile);
        String text2 = readFile(plagiarizedFile);

        int[] dp = new int[text2.length() + 1];
        for (int j = 0; j <= text2.length(); j++) {
            dp[j] = j;
        }

        for (int i = 1; i <= text1.length(); i++) {
            int prev = dp[0];
            dp[0] = i;
            for (int j = 1; j <= text2.length(); j++) {
                int temp = dp[j];
                if (text1.charAt(i - 1) == text2.charAt(j - 1)) {
                    dp[j] = prev;
                } else {
                    dp[j] = 1 + Math.min(prev, Math.min(dp[j], dp[j - 1]));
                }
                prev = temp;
            }
        }

        return 1 - (double) dp[text2.length()] / Math.max(text1.length(), text2.length());
    }

五、计算模块部分异常说明:


参数输入错误,或者参数输入数量不等于3

标签:查重,String,int,论文,originalFile,60,readFile,plagiarizedFile
From: https://www.cnblogs.com/wenzbcoder/p/18413170

相关文章

  • java毕业设计——基于java+ssh+jsp+MySqL的大学生就业信息管理系统设计与实现(毕业论文
    基于java+ssh+jsp+MySqL的大学生就业信息管理系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于java+ssh+jsp+MySqL的大学生就业信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进......
  • springboot+vue在线考试系统的设计与演示录像220239【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,教育领域正经历着前所未有的变革。传统的考试方式,如纸质试卷考试,不仅效率低下、成本高昂,而且在组织、阅卷及反馈等环节上存在诸多不便。尤其是在大规模考试或远程教育中,这些问题尤为突出。因此,开发一种高效、......
  • springboot+vue知识文档共享系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,知识已成为企业核心竞争力的重要组成部分。然而,随着企业规模的扩大和业务复杂度的增加,知识的有效管理和共享成为了一个亟待解决的问题。传统的文档管理方式往往存在查找困难、版本混乱、知识孤岛等问题,严重制约......
  • springboot+vue小区物业管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速,住宅小区作为城市居民生活的重要载体,其管理效率与服务质量直接关系到居民的生活品质与社区和谐。传统的小区物业管理方式往往依赖于人工记录与纸质文档,不仅效率低下,且易出错,难以满足现代小区多元化、精细化的管理......
  • EI国际会议论文征稿:第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
    会议官网:www.iccsmt.net【论文投稿】2024年10月18-20日 中国-厦门截稿时间:以官网信息为准会议出版:ACM独立出版,ISBN:979-8-4007-0999-9会议检索:EI、SCOPUS(ICCSMT往届会议均已完成EI和SCOPU检索,会议历史良好)主办单位:厦门大学承办单位:厦门大学管理学院、厦门大学产......
  • 基于SpringBoot的在线拍卖系统[源码+论文]
    摘要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单管理、留言板管理、系统管理,用户;首页、......
  • springboot+vue校园社团活动推荐系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着高等教育的普及与校园文化生活的日益丰富,校园社团作为学生自主管理、自我提升的重要平台,其活动的多样性和参与度成为衡量校园文化活力的重要指标。然而,面对众多社团及其纷繁复杂的活动,学生们往往难以全面、及时地获取到感兴趣的活......
  • springboot+vue校园跑腿服务平台【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大与学生生活节奏的加快,校园内对于便捷、高效生活服务的需求日益增长。传统的人工跑腿服务已难以满足学生群体对于时间管理和个性化服务的需求。同时,移动互联网技术的普及与智能手机的高度渗透,为构建校园跑腿服务......
  • springboot+vue智能汽车租赁系统的设计与实现【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着科技的飞速发展和城市化进程的加速,交通拥堵与环境污染问题日益严峻,人们对出行方式的需求也愈发多元化和便捷化。智能汽车租赁系统应运而生,作为共享经济的重要组成部分,它不仅能够有效缓解城市交通压力,减少私家车保有量,还能通过智能......
  • 基于Java中的SSM框架实现小说阅读网站书城管理平台项目【项目源码+论文说明】计算机毕
    基于java中的SSM框架实现小说阅读网站书城管理平台演示【内附项目源码+LW说明】摘 要简单而言信息化就是为了人们的生活便利所带来的新时代的东西,有了淘宝、京东,我们可以进行网购漂亮的衣服;有了快手、抖音我们可以真实的感受主播给我们带来最真实的货物;有了美团我们可以......