一、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表格让我更加了解整个项目的具体的流程等。