作业二
github链接:https://github.com/jiongand/-jiongand/tree/main/3122004482/3122004482/x64/Release
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 45 |
Estimate | 估计这个任务需要多少时间 | 20 | 25 |
Development | 开发 | 60 | 90 |
Analysis | 需求分析 (包括学习新技术) | 30 | 60 |
Design Spec | 生成设计文档 | 5 | 5 |
Design Review | 设计复审 | 15 | 15 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 5 | 5 |
Design | 具体设计 | 15 | 15 |
Coding | 具体编码 | 60 | 90 |
Code Review | 代码复审 | 20 | 34 |
Test | 测试(自我测试,修改代码,提交修改) | 56 | 66 |
Reporting | 报告 | 5 | 5 |
Test Repor | 测试报告 | 5 | 5 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 20 |
合计 | 291 | 439 |
实现过程
本次项目选取实现语言为c++。
查重算法:重复字数/总字数
通过哈希表记录每个字出现的个数,遇到重复的字就减少。
所设计类如下:
class Check
{
int same;//重复字个数
std::unordered_map<char,int> g;
int total;//总字数
void load(const char* a);//将原文载入哈希表
void find(const char* a);//把目标文章与原文章进行比对
public:
Check();~Check();
bool check(const char* f, const char* c, const char* a);//处理输入的文件路径,进行文件流操作
};
性能改进
分析图如下
主要耗时在哈希表的遍历。无力解决。
耗时最高函数如下:
单元测试
部分测试情况。
以老师的样例做测试。
空文档测试
异常处理
命令行输入有误时
if (argc != 4) {
std::cout << "输入不足或过多"<<std::endl;
return -1;
}
文件打开失败时
if (!(sample.is_open() && target.is_open() && answer.is_open())) {
std::cout << "文件打开失败。" << std::endl;
sample.close();
target.close();
answer.close();
return false;
}
被测试文章为空时
if (total == 0) {
sample.close();
target.close();
answer.close();
std::cout << "被测试文章无内容"<<std::endl;
return false;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步