作业二

这个作业属于哪个课程 软件工程2024(广东工业大学)
这个作业要求在哪里 个人项目
这个作业的目标

GitHub

GitHub链接

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 10
·Estimate · 估计这个任务需要多少时间 10 10
Development 开发 220 150
·Analysis · 需求分析 (包括学习新技术) 20 60
·Design Spec · 生成设计文档 60 40
·Design Review · 设计复审 20 5
·Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 5
·Design · 具体设计 30 10
·Coding · 具体编码 60 20
·Code Review · 代码复审 10 5
·Test · 测试(自我测试,修改代码,提交修改) 10 5
Reporting 报告 80 70
·Test Repor · 测试报告 40 30
·Size Measurement · 计算工作量 20 25
·Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 15
合计 310 230

模块设计

预处理

用fgetc()读取txt文件中的每一位字符,并且区分是英文字符还是中文字符。如果是英文字符,就将这一位字符以字符串的形式存储到map中,并记录其出现的次数;如果是中文字符,因为一个中文字符需要占两位字符,所以将这一位字符以及下一位字符一起以字符串的形式存储到map中,并记录其出现的次数。由此可以将文本映射为一个n维的向量

计算重复率

利用余弦相似度算法,求得两个文本映射得到的向量间夹角的余弦值,并以此来表示两个文本的重复率。

性能改进

性能分析图


显然,消耗最大的函数是将文本映射为向量的函数,其中主要都消耗在调用map的过程中,暂时不知道优化方法
附:开销最大的函数

异常处理

命令行参数有误

if (argc != 4) puts("Error");
通过这一行代码来判断输入的命令行参数的个数是否符合要求,若是不符合要求则输出Error

目标路径不存在

if (f1 == NULL) puts("Error");
通过这一行代码来判断目标文件是否存在,若是不存在则输出Error

文本长度为0

求余弦相似度时,余弦值由两个向量的数量积除以两个向量的模长获得,当向量模长为0是,会出现分母为0的情况
if (!v1 || !v2) puts("Error");
通过这一行代码来判断文本长度是否为0,其中v1和v2分别表示两个文本映射得到的向量的模长,当出现向量模长为0的情况时输出Error

posted @ 2024-03-12 17:06  Hqwq  阅读(86)  评论(0)    收藏  举报