软件工程第一次作业-论文查重

陈景泰 2022-09-22 03:05:16
这个作业属于哪个课程广工软件课程学习
这个作业要求在哪里个人项目作业-论文查重
这个作业的目标1.熟练gitbub的使用
2.学习PSP表格的制作
3.学习软件的开发和测试
github地址https://github.com/ex-atai/3120004687

目录

  • 编程需求
  • 1.题目
  • 2.需求分析
  • 代码编写与接口设计
  • 原理
  • 模块设计
  • 文件读写
  • 相似度计算
  • 参数检测
  • 性能分析
  • 测试结果
  • PSP表格

编程需求

1.题目

题目:论文查重

描述如下:

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

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:

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

2.需求分析

img

代码编写与接口设计

开发环境:PyCharm Community Edition 2020.3.3 x64
开发语言:Python 3.9.12
环境依赖:requirements.txt
项目工程结构:

img

原理

本程序主要应用了python中difflib库的使用

s=difflib.SequenceMatcher(isjunk=None,a,b, autojunk=True) :构造函数,主要创建任何类型序列的比较对象。
isjunk是关键字参数,主要设置过滤函数,如想丢掉a和b比较序列里特定的字符,就可以设置相应的函数

在正则表达式中,将junk设置为所有标点符号,就可以实现两个文本相似率的计算

模块设计

文件读写

def path_check(path):
  str=' '
  file=open(path,'r',encoding='UTF-8') #只读打开文件
  line = file.readline()
  while line:
    str = str + line
    line = file.readline()
  file.close()
  return str

相似度计算

 def cal_sim(t1,t2):
   from difflib import SequenceMatcher
   ratio =SequenceMatcher(lambda x: x=="[a-zA-Z0-9\u4e00-\u9fa5]",t1,t2).ratio()
   return ratio

参数检测

def parameter_check(add):
    if len(add)!=4:
        print("输入参数不匹配")

性能分析

  8797016 function calls (8797002 primitive calls) in 3.229 seconds

   Ordered by: standard name

img


difflib 性能分析

测试结果

img


img

img

img

PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划500850
· Estimate· 估计这个任务需要多少时间450600
Development开发600800
· Analysis· 需求分析 (包括学习新技术)300300
· Design Spec· 生成设计文档1010
· Design Review· 设计复审2020
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)55
· Design· 具体设计100120
· Coding· 具体编码100120
· Code Review· 代码复审55
· Test· 测试(自我测试,修改代码,提交修改)1010
Reporting报告150150
· Test Repor· 测试报告100100
· Size Measurement· 计算工作量5050
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划55
· 合计12501600
...全文
212 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

203

社区成员

发帖
与我相关
我的任务
社区描述
高校教学社区
其他 高校 广东省·广州市
社区管理员
  • ryue.zh
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧