工程概论作业2——第一次个人编程作业
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟 | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 5 | 5 |
| ·Estimate | .估计这个任务需要多少时间 | 180 | 240 |
| Development | 开发 | 15 | 15 |
| .Analysis | .需求分析(包括学习新技术) | 60 | 60 |
| .Design Spec | .生成设计文档 | 30 | 30 |
| .Design Review | .设计复审 | 5 | 5 |
| .Coding Standard | .代码规范(为目前的开发指定合适的规范) | 5 | 5 |
| .Design | .具体设计 | 30 | 20 |
| .Coding | .具体编码 | 60 | 90 |
| .Code Review | .代码复审 | 30 | 20 |
| .Test | .测试(自我测试,修改代码,提交修改) | 20 | 20 |
| Reporting | 报告 | 60 | 50 |
| .Test Report | .测试报告 | 45 | 45 |
| .Size Measurement | .计算工作量 | 5 | 5 |
| .Postmortem & Process Improvement Plan | .事后总结,并提出改进计划 | 0 | 0 |
| .合计 | 550 | 610 |
作业要求:
| 这个作业属于哪个课程 | 软件工程|
| 这个作业要求在哪里| 个人项目 |
| 这个作业的目标 | 编写论文查重的代码 |
目标
题目:论文查重
描述如下:
设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。
原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:
- 从命令行参数给出:论文原文的文件的绝对路径。
- 从命令行参数给出:抄袭版论文的文件的绝对路径。
- 从命令行参数给出:输出的答案文件的绝对路径。
代码整体框架

接口设计与实现过程
main 方法:程序入口,指定原文文件路径和抄袭版论文文件路径。然后读取文件内容并计算相似度。
readFile 方法:读取指定文件的内容,返回一个字符串。
calculateSimilarity 方法:接受两个字符串参数,计算它们的相似度。使用动态规划算法计算最长公共子序列的长度,然后将其除以原文长度,最后乘以100得到相似度百分比。
主要采用动态规划的算法,通过一一比对两句话的每个字符,来计算两句话的相似度。
代码



测试结果


浙公网安备 33010602011771号