一、Github地址:https://github.com/Jarrett-L/wc(已实现所有列出功能)
二、PSP表格:
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30 | 30 |
|
| 30 | 30 |
Development | 开发 | 1170 | 1095 |
|
| 100 | 100 |
|
| 30 | 40 |
|
| 40 | 40 |
|
| 30 | 35 |
|
| 100 | 110 |
|
| 720 | 660 |
|
| 30 | 30 |
|
| 120 | 90 |
Reporting | 报告 | 120 | 115 |
|
| 30 | 40 |
|
| 30 | 30 |
|
| 60 | 45 |
合计 | 1320 | 1240 |
三、解题思路
①查阅《构建之法》,学习个人软件开发流程是如何建成的,以及单元测试模块应该如何去做得更加完善。
②先做一个类似于UI界面的主程序类,然后调用方法类中的方法来实现wc.exe。
③对于wc.exe的基本功能,主要设计IO流中的相关类与方法,其中用readLIne()方法所获得的每一个行的字符串形式的不同处理即是处理基本功能的关键。特别的是,对于计算词数的方法,每一个词的通用格式使用正则表达式来进行匹配。
④计算空行,代码行,注释行:行中只有这三种属性,即必为三者之一,其中注释行有特殊标志,可用contains()方法来进行判断,而空白行通过trim()方法后的长度为0,这三种特征构成了解本功能的关键。
⑤递归功能:获得文件路径后,用file.listFiles()方法将所有文件包装成一个数组,用于循环遍历,对于通配符的处理,新建match()方法对于遇到*或?时,将字符串截成两端进行匹配。对于找到匹配的文件后,调用方法类的方法进行查询输出。
⑥图形化界面:新建一个window类,选择相关命令时new该类,同时调用其中方法创建JFame以及一个JButton,一个textArea,其中JButton中添加一个监听器,选择后调用JFileChooser()类获取文件,同时调用上面写好的方法,把结果在textArea中输出。
四、设计实现过程。
go
五、测试运行。
六、个人总结
①处理正则表达式的能力还欠缺,使用不够熟练。
②看了构建之法后对项目的创建框架有了新的认识,更加了解了分工以及团队合作的重要性。