第一次个人编程作业
| github作业链接 | https://github.com/3222004640/3222004640 |
|---|---|
| 这个作业来自哪个班级 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024 |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13136 |
| 这个作业的目标 | 按照PSP操作流程来实现论文查重功能 |
1.计算模块接口的设计与实现过程
函数关系:

算法:将文件分块读取到缓存区,然后比较字符统计每一块相同的字符数(即字符是否相同,只是针对相应的那一块是否有相同的,而不是整个文件),然后循环统计所有重复的字数。整个文件字数则是使用库函数分别遍历两个文件,然后选取字数最多的那个,重复率=重复字符数/文件里所有的字符数。
2.计算模块接口部分的性能改进
最开始设计的统计重复字符数的方法是将整个文件内容读取出来存到数组中,然后遍历两个数组得到结果,但是这样占用的内存极大,而且需要比较n*m次(n、m分别是两个文件字符数),效率太低。现在使用的是分块处理,相比之前的效率提高了很多,但是程序消耗最多的函数还是比较字符函数char_compare()

3.计算模块部分单元测试展示
测试的函数:similarity_calculation()
设计思路:重复率=重复字符数/文件里所有的字符数,那么被除数不可能为0,否则会出错
部分代码:
EXPECT_EQ(1, Project1.similarity_calculation(1,1)); EXPECT_EQ(0, Project1.similarity_calculation(0, 1000)); EXPECT_EQ(0, Project1.similarity_calculation(1, 0));
测试的函数:calcualting()
设计思路:形参传入的是文件的地址,那么就必须要考虑地址为空的情况
部分代码:
EXPECT_EQ(0, Project1.calcualting(NULL, NULL)); EXPECT_EQ(66, Project1.calcualting("D:/rjgc/org.txt","D:/rjgc/org_add.txt")); EXPECT_EQ(0, Project1.calcualting(NULL, "D:/rjgc/org_add.txt")); EXPECT_EQ(0, Project1.calcualting( "D:/rjgc/org_add.txt",NULL));
测试的函数:file()
部分代码:
EXPECT_EQ(0, Project1.file(NULL, NULL)); EXPECT_EQ(64, Project1.file("D:/rjgc/org.txt", "D:/rjgc/org_add.txt")); EXPECT_EQ(0, Project1.file(NULL, "D:/rjgc/org_add.txt"));
4.计算模块部分异常处理说明
1.similarity_calculation()异常:被除数即文件字符数为0,返回0.
测试用例:EXPECT_EQ(0, Project1.calcualting(NULL, NULL));
2.calcualting()或者file()异常:文件地址为空或者文件打不开,返回0;
测试用例:EXPECT_EQ(0, Project1.file(NULL, NULL));
EXPECT_EQ(0, Project1.calcualting(NULL, NULL));
5.psp表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 1790 | 1370 |
| · Estimate | · 估计这个任务需要多少时间 | 1790 | 1370 |
| Development | 开发 | 1130 | 680 |
| · Analysis | · 需求分析 (包括学习新技术) | 240 | 180 |
| · Design Spec | · 生成设计文档 | 60 | 20 |
| · Design Review | · 设计复审 | 20 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
| · Design | · 具体设计 | 60 | 30 |
| · Coding | · 具体编码 | 480 | 240 |
| · Code Review | · 代码复审 | 60 | 30 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 180 | 120 |
| Reporting | 报告 | 660 | 690 |
| · Test Repor | · 测试报告 | 120 | 150 |
| · Size Measurement | · 计算工作量 | 240 | 300 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 300 | 240 |
| · 合计 | 1790 | 1370 |

浙公网安备 33010602011771号