第一次个人编程作业

这个作业属于哪个课程 软件工程2024-双学位 (广东工业大学)
这个作业的要求在哪里 个人项目作业-论文查重
这个作业的目标 1.在gitcode的仓库中创建一个以学号为名的的文件夹
2.先在PSP表格中记录我估计在程序开发各个步骤上耗费的时间,在实现程序后记录下实际花费的时间
3.用程序语言来编写论文查重程序
4.使用Code Quality Analysis工具分析代码
5.使用Studio Profiling Tools来找出代码中的性能瓶颈并进行改进
6.使用gitcode来管理源代码和测试用例
7.使用单元测试对项目进行测试
参考文献

1.设计过程

我的gitcode链接cbl的仓库

1.1 PSP表格

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

1.2 设计与实现过程

  我打算使用python语言来进行编程,通过查询资料与新技术的学习,下载jieba包,并导入其中的analyse包,通过关键词提取来做论文查重程序。
import jieba.analyse
  先设计一个获取关键词的方法get_keywords_from_file(fname),

def get_keywords_from_file(fname):
    with open(fname,'r',encoding='utf-8') as file:
        content = file.read()
       return jieba.analyse.extract_tags(content,关键词个数)

  然后再设计关键的一步,通过比较原文的关键词和其他论文的关键词,来计算查重率。而计算查重率就用两篇论文的关键词的交集除并集*100即可获得查重率

def compute_sim(wordsA,wordsB):
    jiaoji = set(wordsA).intersection(set(wordsB))
    bingji = set(wordsA).union(set(wordsB))
  return round(len(jiaoji)*100/len(bingji),2)

  根据需求,需要输入原文文件的路径和抄袭版论文的文件路径,并要向指定的文件输出文件,因此我还需要导入包
import pathlib
from pathlib import Path
  通过input()先让使用者输入文件路径,然后通过Path将字符串转为文件路径,再传入到获取关键词的函数中,最后再结尾使用with open打开result文件,并追加新的文件查重结果。

2.测试结果

2.1 性能分析



  由图片可知,消耗最大的函数就是获取关键词的函数:get_keywords_from_file,但这也是很显而易见的,要对全文进行关键词的提取,所以耗时会比较大。

2.2 单元测试结果

posted @ 2024-03-18 16:07  陈保良  阅读(46)  评论(0)    收藏  举报