第一次个人编程作业
作业github链接
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planining | 计划 | 120 | 100 |
Estimate | 预估时间 | 30 | 20 |
Development | 开发 | 360 | 360 |
Analysis | 需求分析学习新技术 | 480 | 720 |
Design Spec | 生成设计文档 | 50 | 20 |
Design Review | 设计复审 | 10 | 20 |
Coding Standard | 代码规范 | 30 | 20 |
Design | 具体设计 | 120 | 100 |
Coding | 具体编码 | 200 | 180 |
Coding Review | 代码复审 | 30 | 60 |
Test | 测试 | 180 | 180 |
Reporting | 报告 | 60 | 40 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem&Process Improvement Plan | 总结提出改进计划 | 40 | 20 |
合计 | 1740 | 1880 | |
二、模块接口的设计与实现过程 |
1、计算模块接口的设计与实现过程
- 流程图
graph LR
调用IO读入文本文件 -->转文本为字符串
转文本为字符串 -->对字符串进行DP求出数组值
对字符串进行DP求出数组值 -->求出最小编辑距离并返回
求出最小编辑距离并返回 -->调用IO输出结果
- 实现过程()
主要的代码有:
先调用Main函数 ,如果出现IO异常就进入NullTextException中
然后读取一系列的路径(即命令行输入的三个路径——分别是原文、抄袭版和结果)
读取两个文件
将文件输入负责运算和编辑的函数EditL
得到相应的最小编辑距离
将函数运算得到的结果(即最小编辑距离)进行处理并且输出答案
代码涉及的关键算法:
用一个最小编辑距离算法来求重复率,距离越小,意味着文本的相似度越大。
那么最小编辑距离是什么?.
最小编辑距离即通过增删改1个字实现与另一个文本相同要操作的次数
算出两个文本中的文字之间的最小编辑距离。然后再除以文本长度就得到了重复率。
三、计算模块接口部分的性能改进
- 内存消耗
分析可知内存消耗最多的是byte和string(存字符消耗了大量的内存,这些数据要一直读取)
- 这是个单线程的可执行程序
四、计算模块部分异常处理说明
输入空文本将导致异常,因为算出来的最小编辑距离为0,将要除的文本长度也是0,所以要进行处理
五、总结
- 作为一个只知道一点算法的入门级选手,java和python都不会,但是java好像有好多好用的工具可以用,所以就想用java试试。
在第一波下载软件安装环境就整了好久才完成,后面到了设计编码的时候,通过网络搜索相关知识点,包括去了解命令行怎么执行程序还有调试测试程序的过程中收获了挺多的,但其实很多地方还是不会,之后还需要多多实践,学习更多的知识。