第一次编程作业

news/发布时间2024/5/21 1:42:10

第一次个人编程作业

github连接

这个作业属于哪个课程 工程概论
这个作业要求在哪里 作业的要求
这个作业的目标 初步学会完整开发一个项目

需求

题目:论文查重

描述如下:

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

  • 原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
  • 抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。

要求输入输出采用文件输入输出,规范如下:

  • 命令行参数给出:论文原文的文件的绝对路径
  • 命令行参数给出:抄袭版论文的文件的绝对路径
  • 命令行参数给出:输出的答案文件的绝对路径

我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。

注意:答案文件中输出的答案为浮点型,精确到小数点后两位

一、PSP表格

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

二.异常情况

1.输入的参数不为3个

2.找不到对应文件

三.源代码

package com.example.personalobj;import java.io.*;
import java.util.*;public class PlagiarismChecker {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入原文文件路径:");String originalFilePath = scanner.nextLine();System.out.println("请输入抄袭版文件路径:");String plagiarizedFilePath = scanner.nextLine();System.out.println("请输入输出文件路径:");String outputFilePath = scanner.nextLine();try {String originalText = readFile(originalFilePath);String plagiarizedText = readFile(plagiarizedFilePath);double similarity = calculateSimilarity(originalText, plagiarizedText);writeResult(outputFilePath, similarity);} catch (IOException e) {e.printStackTrace();}}private static String readFile(String filePath) throws IOException {StringBuilder content = new StringBuilder();try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;while ((line = reader.readLine()) != null) {content.append(line).append("\n");}}return content.toString();}private static double calculateSimilarity(String text1, String text2) {// 这里简单地比较两份文本的相同词语数量String[] words1 = text1.split("\\s+");String[] words2 = text2.split("\\s+");int commonWords = 0;for (String word1 : words1) {for (String word2 : words2) {if (word1.equalsIgnoreCase(word2)) {commonWords++;break;}}}int totalWords = Math.max(words1.length, words2.length);return (double) commonWords / totalWords;}private static void writeResult(String filePath, double similarity) throws IOException {try (PrintWriter writer = new PrintWriter(filePath)) {writer.println("重复率:" + (similarity * 100) + "%");}}
}

四.测试

五.开发环境

idea-2022.2.2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/06166028.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Go每日一库之17:watermill

简介 在上一篇文章Go 每日一库之 message-bus中,我们介绍了一款小巧、实现简单的异步通信库。作为学习,message-bus确实不错。但是在实际使用上,message-bus的功能就有点捉襟见肘了。例如,message-bus将消息发送到订阅者管道之后就不管了,这样如果订阅者处理压力较大,会在…

javaweb运行tomcat时Jsp文件显示源码

今天在写javaweb项目的时候出现了运行一直不打开浏览器,如果手动打开浏览器的话,就会出现自己写的jsp文件中的所有源码,具体如图所示我的问题在Servlet中因为要告诉jsp文件servlet在哪里所以要在类名的上一行写上@WebServlet("/Servlet"),但是由于我的粗心写成了@…

9.20日

今天在英语提高课堂上简单学习了状语从句的用法

手游模拟器长时间运行后,游戏掉帧且不恢复

1)手游模拟器长时间运行后,游戏掉帧且不恢复2)FrameBuffer Fetch无论哪种模式在确定支持的手机上显示全紫3)协程中yield return CoFunction()和yield return StartCoroutine(CoFunction())的区别这是第353篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答…

学法减分-基于搜索引擎

缘由违章扣分较多,通过学法减分减少扣分操作线上申请:12123操作 线上学习:文档或视频 线上考试:一次考试,2次补考线上考试可以通过搜索引擎指定网站的功能搜索考题关键字,基本能过 示例最大允许总质量百分之三十 site:https://www.jiakaobaodian.com/site:https://www.ji…

Mybatis 04 一对一,一对多,多对多关联映射

一对一 一个员工对应一个部门实体类 emp package com.entity;import java.io.Serializable; import java.math.BigDecimal;public class EmpVo implements Serializable {private Integer empno;private String ename;private String job;private Integer mgr;private String …