第一次个人编程作业

https://github.com/muyu9/031902338

一、PSP表格

  • 在开始实现程序之前,在附录提供PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。
  • 在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块的开发上实际花费的时间。
Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 8 10
· 估计这个任务需要多少时间 8 10
开发 1960 2357
· 需求分析 (包括学习新技术) 600 660
· 生成设计文档 30 20
· 设计复审 10 7
· 代码规范 (为目前的开发制定合适的规范) 40 30
· 具体设计 60 60
· 具体编码 1100 1500
· 代码复审 60 50
· 测试(自我测试,修改代码,提交修改) 60 30
报告 48 37
· 测试报告 15 10
· 计算工作量 3 2
· 事后总结, 并提出过程改进计划 30 25
· 合计 2016 2384

二、计算模块接口

  • 计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(18')

    一个类DFAFilter(object),初始化函数、读取敏感字函数parse(self, path)、建立敏感字的字典树add(self, keyword)、DFA查找filter(self, linenum,message,ans)、汉字和拼音的排列组合。filter中在敏感字查找的同时实现答案列表的填写。关键算法是DFA算法。采用类管理,初始化一个空字典链表,特定结束符以及生成敏感词链表的函数。接下来是parse()读取敏感词库表,通过add()将敏感词以嵌套字典的方式形成链表,即为level,访问level即可匹配敏感词。最后,将传入的词组进行敏感词过滤,遍历新词组,只有当前字在敏感词链表中才能加入敏感词。
    没有什么独到之处,参考的是大佬写好的DFA算法,在这个的基础上修改的。



  • 计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2019、JProfiler或者Jetbrains系列IDE自带的Profiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。

    性能分析图

- 在计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(12')
代码如下



测试覆盖图

不知道为啥一直是这样。。。。。。(真的写了挺久,实在是不行)


- 计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(6')
只在文件读入读出时进行了异常处理。输入输出异常:输入文件不存在时、无法写到指定文件时,引发错误“Unable to open ans file”

三、心得

  • 在完成本次作业过程的心得体会(3')

    心得体会就是我真的是菜鸡。一开始看到题目就有点烦躁,要求好多,不懂的好多,看起来好难。题目看了好几遍才完全理解要的是什么。至少半年没写过代码,有点陌生,对完成这次作业没有什么信心。C++语言掌握得也不咋地,而且这次作业可参考的代码很多是用python的。所以就在B站找了python的网课,大概了解一些语法。这就已经用了不少时间。然后结果当然是边写边BUG,把出现的BUG再去百度找问题然后解决。对这个语言的掌握不够,工具都用不好,还能写出什么东西来。最终。。。没有写出完整、可行的代码。结果一直只有total=0的输出,啥也没有。虽然没有写出来,但是在debug的过程中还是加深了对python语法的理解,还需要继续学习和观看关于python的网课视频。这次学习语言花了比较多的时间,希望下次的编程作业可以完成。

posted @ 2021-09-14 17:16  木玉。  阅读(34)  评论(0)    收藏  举报