学号 |
3123004294 |
Github仓库链接 |
https://github.com/Berluga/3123004294.git |
项目 |
内容 |
这个作业属于哪个课程 |
软件工程导论 |
这个作业要求在哪里 |
作业要求文档 |
这个作业的目标 |
通过实现一个查重系统,综合训练算法设计、工程规范、测试及文档撰写能力 |
PSP 2.1 表格
PSP阶段 |
预估耗时(分钟) |
实际耗时(分钟) |
计划 (Planning) |
|
|
· 估计任务时间 (Estimate) |
480 |
|
开发 (Development) |
|
|
· 需求分析 (Analysis) |
60 |
40 |
· 生成设计文档 (Design Spec) |
30 |
10 |
· 设计复审 (Design Review) |
20 |
40 |
· 代码规范 (Coding Standard) |
20 |
40 |
· 具体设计 (Design) |
60 |
60 |
· 具体编码 (Coding) |
120 |
80 |
· 代码复审 (Code Review) |
30 |
50 |
· 测试(包括修改) (Test) |
60 |
50 |
报告 (Reporting) |
|
|
· 测试报告 (Test Report) |
30 |
30 |
· 计算工作量 (Size Measurement) |
10 |
10 |
· 事后总结与改进 (Postmortem) |
30 |
30 |
总计 (Total) |
500 |
480 |
一、计算模块设计与实现
模块架构
plaintext
├── 文件处理层
│ ├── readFileAsUTF8() - UTF-8编码文件读取
│ └── filterChinese() - 中文字符过滤
├── 核心算法层
│ └── LCS() - 最长公共子序列计算
├── 相似度计算层
│ └── jaccardSimilarity() - 相似度转换
└── 输出层
└── writeResult() - 结果格式化输出
创新设计
1.混合相似度计算:
最终相似度 = 0.6 * LCS相似度 + 0.4 * Jaccard系数
2.多编码自适应处理:
// 自动检测BOM头
if(buffer[0]0xEF && buffer[1]0xBB && buffer[2]==0xBF)
decode_with_utf8();
else
try_gbk_decoding();
二、性能优化分析
性能热点分析
Function |
CPU% |
Call Count |
LCS() |
78.2% |
1 |
filterChinese() |
15.1% |
2 |
readFile() |
6.7% |
2 |
三、单元测试展示
测试用例设计

覆盖率报告
File |
Line Coverage |
main.cpp |
98.2% |
file_io.cpp |
95.6% |
lcs.cpp |
100% |
四、异常处理机制
异常类型及测试
1.文件访问异常

2.编码异常处理

3.内存保护机制
