031902518王佳明

导航

 

https://github.com/031902518/031902518

一、PSP表格

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

二、计算模块接口

  • (3.1)计算模块接口的设计与实现过程。
    因为本人比较笨,不是很会用什么高级的算法,只是用最简单的遍历一遍,没有用到类和函数(主要是我觉得我这个想法没什么技术含量,思想过于简单,用不上构造类和函数,也只能实现最基本的查询,但是main里的思想就是:首先把待检测文件读入,在读入一个一个的敏感词,然后每个字每个字一个一个的对比,如果是中文就判断中文的条件,如果是英文就按照英文的语句执行,最后用一个total来记录敏感词的个数,但并不能都检测出来(比如拆分和拼音首字母都不行)),主要思想就是遍历,把org文件一行一行读入然后和他们敏感词比较,如果找到就输出。并且又有中英文之分。如果是中文就判断中间是否有可能进行一些伪装,在敏感词中插入除字母、数字、换行的若干字符仍属于敏感词,会在判断出来。但是因为本人能力有限并不能实现:谐音替换、拼音替代、拼音首字母替代以及中文文本中还存在少部分较难检测变形如繁体、拆分偏旁部首(只考虑左右结构),不存在变形后再拆开偏旁部首的情况。
  • (3.2)计算模块接口部分的性能改进。

从以上图片可以看出,占据主要时间的是执行程序,然后是输入输出的IO时间,因为给定一个黑名单词汇文件和待检测文件,要求在答案文件中输出检测出敏感词汇的数量并按出现输出行号,敏感词词汇及对应检测出的文本。所以要反复读入作比较,还有就是文件系统因为要频繁的读入敏感词,搜索到后还要输出,所以也是在预计范围内。因为有很多循环的关系所以个人感觉会超时间,主要思想就是遍历,把org文件一行一行读入然后和他们敏感词比较,如果找到就输出,不是很会用什么高级的算法,只是用最简单的遍历一遍,反复的读取文件也花了很多时间,本来是想用些方法来改进一下自己的程序,但是后来上网一查发现以自己目前的能力没有办法实现

  • (3.3)计算模块部分单元测试展示。

  • (3.4)计算模块部分异常处理说明。
  1. infile2.open(ors);//用来打开文档
    if (!infile2) { cout << "org fail!" << endl; }
    如果待测试文档打开失败则输出org fail
    infile1.open(wos);//用来打开敏感词
    if (!infile1) { cout << "words fail!" << endl; }
    如果待测试敏感词文档打开失败则输出words fail

2.我的电脑笔记本默认是ANXI,所以设计的时候就用Visual Studio 2019 的ANXI写的,后来要求必须用UTF-8导致输出了大量错误,如下图,后来在测试组同学们的帮助下,在代码中加了一个locale china("zh_CN.UTF-8");才对的,同时,先学习了fstream等知识,掌握基本的读写文件流,这里也要先感谢一下测试组同学的大力帮助

3.老师说的很对很对:读清题目很重要、很重要、很重要(重要的事情说三遍),我就是因为没考虑到敏感词的出现先后问题,所以后来又小改了一下一开始想用string存放文件中的一行数据,后来发现string两个单位存储一个字,输出时比较困难,甚至输出的时候容易难以区分汉字和英文的区别,后来上网上看到了wstring,感觉很是好用,又学到了新的知识。wstring可以实现一个单元两个字节,这样子比较汉字的时候就方便多了

三、心得

1.因为本人比较菜,所以每天熬夜打代码,虽然没能实现全部要求,但是我已经把自己能够做到的都做了,已经不后悔了。
2.读清题目很重要,我就是因为没考虑到敏感词的出现先后问题,所以后来又小改了一下。
3.对github的应用更加明白
4.测试txt文件的读写功能时,发现中文的乱码现象,上网查后,发现txt文件默认用utf-8编码,而Windows控制台默认用ANSI编码,故控制台会出现中文的乱码
5.用c++写,先学习了fstream等知识,掌握基本的读写文件流
6..编写函数,输入为文章的一行和一个敏感词;遍历该行,找到敏感词即输出
7.将结果打印,在目标位置生成txt文件;

posted on 2021-09-12 12:13  031902518王佳明  阅读(223)  评论(1编辑  收藏  举报