一、github地址

  https://github.com/zhongxiao136/WC

二、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 50 40
Estimate · 估计这个任务需要多少时间 50 40
Development 开发 1160 1300
Analysis · 需求分析  60 50
Design Spec · 生成设计文档 80 90
Design Review · 设计复审  50 70
Coding Standard · 代码规范 50 30
Design · 具体设计 80 90
Coding · 具体编码 700 800
Code Review · 代码复审 80 90
Test · 测试(自我测试,修改代码,提交修改) 60 80
Reporting 报告 140 160
Test Report · 测试报告 60 80
Size Measurement · 计算工作量 40 30
Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 50
Total 合计 1350 1500

三、解题思路

 浏览完项目需求后,自己大概有了个方向,有点像java课设(文本编辑器),也是有统计的东西,还有打开文件。想到这些,自己就决定用java来实现这个WC.exe的功能。

1、基本功能的实现

  基本功能主要是实现字符数,单词数和行数的统计,主要是正则表达式的使用和文件的读取,将输入的文件与正则表达式结合,自己主要要去复习之前学习的IO流和正则表达式。

2、扩展功能的实现

  空行还有注释行这些同样是可以通过正则表达式来完成,只是可能需要绕一绕比如注释的方式有两种。自己主要是对于递归下的文件这个有些无从下手,自己file类了解得并不透彻,花了很多时间去了解它的各种方法实例。

3、高级功能的实现

  图形化界面主要用JFrame来实现,将界面和主程序连接起来就行。

由上面的想法自己可以决定要写三个类,主程序、功能和界面,然后分别实现测试。先是完成主要框架,设定好命令行的样式,想好自己想要什么样子的效果,做好设计文档,然后分别实现一个一个功能,每个功能进行测试。

四、设计实现过程

整个程序用到的类和方法

 

五、测试运行

test文件夹有一个文件夹test1和3个.java文件,1.java是有代码的,2.java是只有2个字符的,3.java是空文档

test1文件夹里有一个4.java文件

 

 1、基本功能的实现(-c -w -l)

(1)测试文件为1.java

 

 (2)测试文件为3.java(空文档)

 

2、扩展功能的实现

(1)-s 的实现,测试文件夹为test

(2)-a 的实现(代码行 / 空行 / 注释行)测试文件为1.java

3、 高级功能的实现

 

4、使用说明

本程序共有三个类,Frame、Function和main,运行程序时只需运行main程序,之后的操作主要看命令行的提示,输入-e即可退出程序

六、总结

   通过本次个人项目的进行,自己深刻意识到自己的不足,很多一些本该掌握的知识因为没有经常出复习而导致自己遗忘掉了,因此自己写这个项目的时候大部分时间花费在了重新学习上。自己之前的学习又不够透彻,导致很多的类和方法自己是不知道的或是没有去用过的,这样子自己的思维就会一直固定在之前的水平,能想到的方法只能通过自己仅有的知识来执行,而不会变通。但在这个过程中自己也收获了很多,虽然写出来的代码不是很完善,但发现自己不足去补回来的这个过程同样是一次新的学习,能学到之前并不清楚的知识,比如PSP表格让我更加了解整个项目的具体的流程等。