软工个人项目WC(Python实现)

一、github地址:https://github.com/1371272989/WC.exe

实现功能:

1、-c:统计字符数;

2、-w:统计单词数;

3、-l:统计行数;

4、-a:统计复杂数据(空行、代码行和注释行);

5、-s:递归处理目录下符合条件的文件;

  通配符没有全面,只能辨别后缀。

6、-x:通过图形界面选择文件;

  可以通过图形界面选择文件,但输出还是在cmd上显示。

 

二、PSP

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划  30 25
· Estimate · 估计这个任务需要多少时间  20  20
Development 开发  600 660
· Analysis · 需求分析 20  20
· Design Spec · 生成设计文档  20  30
· Design Review · 设计复审   30  30
· Coding Standard · 代码规范  30  40
· Design · 具体设计  80  60
· Coding · 具体编码(学习新技术)  400  370
· Code Review · 代码复审  60  50
· Test · 测试(自我测试,修改代码,提交修改)  60  60
Reporting 报告 120 120
· Test Report · 测试报告  60  80
· Size Measurement · 计算工作量  30  30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划  30  30
  合计  1590  1625

 

 三、解题思路

  看到题目时,发现它的需求可以用Python很容易的实现,然后看到需要用cmd输入,但用python并不会直接生成exe文件,然后在网上看到可以利用一些途径生成exe文件,就直接用python写了。因为我对Python不是很熟悉,对python里面类的方法还不是很懂,并且我之前打惯了C语言,所以我用面对过程的思路去实现了这个程序。下面是实现各种功能的思路:

  1、字符计算:python有方法可以直接知道字符的个数,但要减去空格还有换行的字符。

  2、单词计算:可以通过正则表达式,只保留连续的英文字母,即可得到单词数。

  3、行数计算:有readlines方法,可以把文件按行读入,即可知道有多少行。

  4、复杂数据:按行读入,把空格和换行符去掉,在判断是空行还是注释行还是代码行。

  5、处理文件夹里面符合类型的文件:通过递归把符合类型的文件都存进一个列表里面,在循环处理。

  6、通过图形界面选择文件:直接调用方法即可。

  7、在CMD上输入,可以通过sys模块实现,然后对输入的参数进行读取分析。

  

四、设计过程

  因为用的还是面对过程的思路,所以没有用到类,主要有下面几个方法:

  1、count_char: 统计字符个数;

  2、count_word: 统计单词的个数;

  3、count_line:统计行数;

  4、function_a:实现-a的功能,统计复杂数据;

  5、get_filelist: 递归处理文件夹里面符合条件的文件,存在一个列表里面;

  6、function_s:实现-s的功能;

  7、function_x:实现-x的功能,可以通过图形界面选择文件;

  8、main:主方法,用来分析输入调用特定的方法。

  流程图如下:

  软工个人项目WC(Python实现)_第1张图片

 

五、测试结果

测试文件说明:除了特殊文件夹里面的文件,其他均为正常的源文件。特殊文件夹里面file1.c是空文件,file2.c只有一个字符,file3.c只有一个单词,file4.c只有一行。

 软工个人项目WC(Python实现)_第2张图片s

 

  测试截图:

     测试-c、-w、-l、-a和-s(可以直接用-a命令把-c、-w、-l和-a的答案都输出来):

  软工个人项目WC(Python实现)_第3张图片

 

   测试-s:

   软工个人项目WC(Python实现)_第4张图片

  软工个人项目WC(Python实现)_第5张图片

 

 六、总结

  本次软工作业,是我用Python做出来的第一个软件,我对python的理解进一步加强了。但python是一门面向对象的语言,我却用面向过程的思路去实现这个软件,可以看出我对python的理解和应用还不够深,还需继续深入学习。同时,也可以看出我还没面向过程的思想中跳出来,对“万物皆对象”的理解不够强,对于像这样的小软件还能完成,但对于大程序来说,就可能比较吃力了。本次开发过程中,可能实现的步骤中不明确,有很多的bug出现,大大增加了开发的时间。所以通过这次软工作业,我懂得了一个道理,编程能力固然重要,但实现的步骤同样重要。

 

你可能感兴趣的:(软工个人项目WC(Python实现))