一、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:主方法,用来分析输入调用特定的方法。
流程图如下:
五、测试结果
测试文件说明:除了特殊文件夹里面的文件,其他均为正常的源文件。特殊文件夹里面file1.c是空文件,file2.c只有一个字符,file3.c只有一个单词,file4.c只有一行。
s
测试截图:
测试-c、-w、-l、-a和-s(可以直接用-a命令把-c、-w、-l和-a的答案都输出来):
测试-s:
六、总结
本次软工作业,是我用Python做出来的第一个软件,我对python的理解进一步加强了。但python是一门面向对象的语言,我却用面向过程的思路去实现这个软件,可以看出我对python的理解和应用还不够深,还需继续深入学习。同时,也可以看出我还没面向过程的思想中跳出来,对“万物皆对象”的理解不够强,对于像这样的小软件还能完成,但对于大程序来说,就可能比较吃力了。本次开发过程中,可能实现的步骤中不明确,有很多的bug出现,大大增加了开发的时间。所以通过这次软工作业,我懂得了一个道理,编程能力固然重要,但实现的步骤同样重要。
原文地址:https://www.cnblogs.com/Gleez/p/11575279.html