WC个人项目
github项目传送门:https://github.com/liangjingdev/wc
一、项目相关要求
wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
现在需要实现一个源程序文件的代码统计程序,它能正确统计源程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
1、程序处理用户需求的模式为:
直接通过用户在图形界面上的相关操作来读取用户的需求。
2、基本功能列表:
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的字符数
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的词数
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的行数
3、扩展功能:
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的有效代码行的数目
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的空行的数目
- 返回单个源程序文件/多个源程序文件/文件夹中所有的源程序文件的注释行的数目
二、项目开发过程中遇到的困难及解决方法
# 实现图形界面的困难:
由于并没有很经常接触到Java的GUI编程,所以不太熟悉相关的控件编写以及窗口布局。
# 做过的尝试:
借助MyEclipse编译器中的WindowBuilder Editor插件完成了该程序的图形界面。
# 解决:
最后,实现了基础功能以及拓展功能。
# 有所收获:
冰冻三尺,非一日之寒,路漫漫其修远兮,吾将上下而求索。
三、PSP开发耗时
PSP2.1
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 | 40 |
· Estimate |
· 估计这个任务需要多少时间 |
50 | 60 |
Development |
开发 |
800 | 600 |
· Analysis |
· 需求分析 (包括学习新技术) |
100 | 120 |
· Design Spec |
· 生成设计文档 |
40 | 30 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
30 | 30 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 | 30 |
· Design |
· 具体设计 |
80 | 60 |
· Coding |
· 具体编码 |
200 | 180 |
· Code Review |
· 代码复审 |
40 | 30 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 | 40 |
Reporting |
报告 |
120 | 80 |
· Test Report |
· 测试报告 |
20 | 20 |
· Size Measurement |
· 计算工作量 |
10 | 10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 | 20 |
合计 |
1640 | 1350 |
四、程序代码结构
1、entity包中的CodeFileInfo类是源程序文件的实体类。
2、filter包中的SourceFilenameFilter过滤器类的作用是筛选出文件夹内的源程序文件(目前实现了筛选以.c以及.java为后缀的源程序文件)。
3、function包中的Function接口是基本功能及拓展功能的抽象接口,BaseFunction类和ExtendFunction类是具体的实现类,是功能实现的关键类。
4、handle包中的CalculateHandler类是一个控制类,主要是根据用户的需求(计算单个源程序文件/多个源程序文件/文件夹中的所有源程序文件)去调用对应的计算逻辑进行计算。
5、WcMain类是程序功能的主入口(图形界面)。
五、程序功能截图
1、程序图形界面
2、基本功能及拓展功能
- 计算单个源程序文件
- 计算多个源程序文件
- 计算文件夹中的所有源程序文件
六、项目总结
通过本项目的实践,熟悉了开发软件的相关工作流程(分析项目需求、设计项目流程、实现项目功能、进行单元测试、程序功能运行测试、项目总结)。