第一次个人编程作业
- [Github链接](https://github.com/RoseZ18/031802245)
- 计算模块接口与设计过程
- 类
Txtprocess----文本处理
Calculate-----计算重复度
Inputpath-----路径读入
IO------------输出结果写入文本
Main----------主方法 - 主要函数
ReadtoString(String filepath)----将文本转为String
output(String outputPath, String result)-----将输出结果写入指定路径的文本中
detect(String filepath,String fileaddpath)----计算文本重复率 - 设计过程
- 核心算法描述
将被检测的语句与已有语句进行重复率检测,使用KMP算法得出两个语句中最长公共子字符串,并以此计算该语句的重复率,字符与已有语句中字符使用二维矩阵计算两字符集合的交集,并以此得出被检测语句重复率。语句重复率取字符重复率和语句重复率的均值,文本重复率等于语句重复率的总和除以语句数。
- 计算模块部分单元测试展示
1.展示单元测试代码
部分输出结果图
2.测试覆盖率图
- 性能分析图展示(以orig_0.8_add.txt为例分析)
1.堆内存情况
2.Cpu Load
- PSP表格
PSP2.1 Personal Software Process Stages 预计耗时 实际耗时 Plannig 计划 40 30 Estimate 估计这个任务需要多长时间 60 120 Development 开发 600 800 · Analysis · 需求分析 (包括学习新技术) 120 240 · Design Spec 生成设计文档 30 50 · Design Review · 设计复审 60 90 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 40 50 · Design · 具体设计 30 40 · Coding · 具体编码 40 50 · Code Review · 代码复审 40 50 · Test · 测试(自我测试,修改代码,提交修改) 20 60 Reporting 报告 40 60 · Test Repor · 测试报告 20 40 · Size Measurement · 计算工作量 10 20 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30 合计 1170 1730 - 个人总结
1.刚开始看到题目整个人都懵了,一点思路都没有,后来老师说让我们站在巨人的肩膀上思考问题,我开始从网上查各种资料。我刚开始打算用python写的,因为以前有学过一些,结果我在导入第三方库jieba的时候一直出问题,刚开始是告诉我pip版本不行,我去升完级后又出现一大堆错误,然后我想了想反正后面也要学java,那还不如现在开始学java,所以我就决定用它来完成我的个人编程作业。
2.我先学了java的基本语法然后下了IDEA这个编辑器开始我的项目编程,我在网上找了有关查重算法的文章开始看,找到我要的部分进行修改,从刚开始的直接输出结果到现在的利用命令行参数输入、结果写入文本。(这是一个漫长的修改过程,因为太菜了一直有BUG,要不断的解决)
3.在用git把文件推到github的时候也是出现各种错误然后就要上网查怎样改,然后重新push(太痛苦了各种奇奇怪怪的错误)