软工个人项目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:主方法,用来分析输入调用特定的方法。
流程图如下:
五、测试结果
测试文件说明:除了特殊文件夹里面的文件,其他均为正常的源文件。特殊文件夹里面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
- 点赞
- 收藏
- 分享
- 文章举报
- 软工个人项目WC(Java实现)
- 个人项目WC(java实现)
- 个人项目-WC(Java实现)
- 红黑树:个人理解与Python实现
- 实践项目一:Python实现Windows定时关机
- 获取Jawbone UP中的个人数据(三)Python实现
- python urllib, urllib2实现登陆和简单爬取网页(个人坑点笔记)
- H2O中的随机森林算法介绍及其项目实战(python实现)
- 个人对未来Python项目的展望
- Qeephp整合ucenter实现单点登陆之个人PHP项目与Ucenter整合
- Python的Flask框架中实现登录用户的个人资料和头像的教程
- Android 个人理财工具一:项目概述与启动界面的实现
- Python简易项目 加减计算器的实现
- 实践项目五:python调用百度API实现自动检测翻译
- Python个人项目--豆瓣图书个性化推荐
- python3.6 抓取网页文本并实现词频统计-自然语言处理小项目
- 教学项目之-通过Python实现简单的计算器
- 二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
- 手动实现把python项目发布为exe可执行程序过程分享
- Android实战 - 个人App 乐逗项目 (实现初始化页面,引导页)