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、基本功能及拓展功能

  • 计算单个源程序文件

  • 计算多个源程序文件

  • 计算文件夹中的所有源程序文件

六、项目总结

通过本项目的实践,熟悉了开发软件的相关工作流程(分析项目需求、设计项目流程、实现项目功能、进行单元测试、程序功能运行测试、项目总结)。