WordCount:字符统计小程序

WordCount:字符统计小程序

github地址: https://github.com/Kassation/WordCount

任务1:分析整理需求, 完成PSP表格

  1. 分析整理需求:
    首先分析基本功能

     1. 统计字符数:空格,制表符,换行符均算作字符
     2. 统计单词数:由空白符和逗号分隔开的字符串算作单词
     3. 统计行数:由换行符分隔开的字符串算作一行
    

    所以暂时模块化出三个函数,分别来进行不同的统计并直接返回输出的字符串。
    然后需要实现读取命令行中的参数的功能,基本思路是,先获取-c、-w和-l命令,然后在输入字符串中查找最近的以“.c”为后缀的文件名命为输入文件。用同样的方法对-o命令和输出文件进行处理。需要注意的是命令的输入顺序与输出顺序无关。
    然后分析扩展功能

     1.	递归处理目录下符合条件的文件
     2.	返回更复杂的数据(代码行 / 空行 / 注释行)
     3.	停用词表,统计文件单词总数时,不统计该表中的单词
    
    这里比较难以实现的是判断并统计代码行,空行,注释行的数量,所以我的思路是,先统计空白行,然后将代码行分为几种情况分析代码行,最后非空白行和代码行的记为注释行。
    
  2. PSP表格:

PSP阶段 预估耗时(分钟) 实际耗时(分钟)
计划 30 30
· 估计这个任务需要多少时间 30 30
开发 430 590
· 需求分析(包括学习新技术) 40 60
· 设计复审(和同事审核设计文档) 5 5
· 代码规范(为目前的开发制定合适的规范) 5 5
· 具体设计 30 20
· 具体编码 300 420
· 代码复审 10 20
· 测试(自我测试,修改代码,提交修改) 120 300
报告 50 70
· 测试报告 30 50
· 计算工作量 10 10
· 事后总结,并提出过程改进计划 10 10
合计 510 690

任务2:编码实现,并在Github提交

基本功能
因为这周末有更急的ddl(软件文档写作)要赶,又恰碰上出国中介老师的交接,也有不少文书需要提交,故没有太多时间来研究不熟练的Java语言,尽管后来老师非常人性化地延迟了ddl,因为已经用Python写了一部分了,所以干脆用Python磕到底了T_T
基础功能
下面截取一部分代码展示:
函数count_word—— 先去掉“,”在去掉空格再合并统计:

主函数中解析参数的部分:获取与“-”命令最近的文件名,找到后及时跳出循环

扩展功能
增加停用词表后修改过的count_word函数:

递归打开文件函数:

判断空白行和代码行的函数:

任务3:设计测试用例,编写单元测试

根据课堂上提到的白盒测试,将基础功能实现过程概括为如下控制流图:

其中有两个重要节点:A 和C
可以设计出测试路径:A-B;A-C-D; A-C-E; A-C-F; A-C-D-B; A-C-E-C-F

用例设计为:
wc.exe -o output.txt
wc.exe -c file.c
wc.exe -w file1.c
wc.exe -l file1.c
wc.exe -w file1.c -o output.txt
wc.exe -w -l file1.c -o output.txt

增加扩展功能后的测试文件 file.c:

停用词表 stop.txt
int print

测试脚本:

测试结果:

分析:对代码行和注释行的判断并不能满足所有用户可能出现的情况,时间关系只能默认用户懂得c语言代码而没有选用跟严谨的算法
测试评价:
这些测试脚本还不能完全覆盖程序中所有的语句,还需要设计更多的.c文件来测试不同情况下行数的统计。

参考链接:https://jingyan.baidu.com/article/ea24bc39ae73e8da62b33104.html

posted @ 2018-03-20 22:58  Jing_Zhang  阅读(528)  评论(2编辑  收藏  举报