1. github项目地址:https://github.com/wwwwu/WordCount
2.PSP表格:
PSP2.1 | PSP阶段 | 预估耗时 (分钟) | 实际耗时 (分钟) |
Planning | 计划 | 10 | - |
· Estimate | · 估计这个任务需要多少时间 | 700 | 800 |
Development | 开发 | 600 | 700 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 50 |
· Design Spec | · 生成设计文档 | - | - |
· Design Review | · 设计复审 (和同事审核设计文档) | - | - |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | - | - |
· Design | · 具体设计 | 10 | 10 |
· Coding | · 具体编码 | 500 | 600 |
· Code Review | · 代码复审 | - | - |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 60 | - |
· Test Report | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | - | - |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
3. 解题思路:
看到题目要求后,对于基本功能,我首先考虑的是如何统计出字符数、单词数、行数,然后是读取文件、写入文件,最后再考虑参数解析。高级功能也是先思考统计行数的方法,再是递归处理文件和使用停用表。我觉得这个题目涉及到的知识还是很多的,所以也查了很多相关的资料。印象比较深的是参数解析,一开始我不知道args的使用方法,对于参数的输入无从下手,后来问了同学然后在网上搜索后才知道。
部分参考资料:
1. https://www.cnblogs.com/Berryxiong/p/6232373.html 空格分割字符串
2. http://lucien-zzy.iteye.com/blog/2001275 InputStreamReader和BufferedReader用法
3. https://www.cnblogs.com/renxiaoren/p/5220534.html file文件的读取和写入
4. https://www.cnblogs.com/xy-hong/p/7197725.html main函数里String[] args的使用
5. http://blog.csdn.net/sunkun2013/article/details/13167099 把java文件打包成jar文件以及转换成可执行文件exe
4.程序设计实现过程:
程序一共有一个类,三个方法。除了主方法分别是写入文件和读取文件,读取文件方法里包括了统计各种结果的功能。主方法里主要是进行参数解析,也包括停用表和处理同目录文件的功能。
5.代码说明:
注:递归读取同目录下文件参考了周志为同学的代码
参数解析:
int i = 0;
int fc = 0,fo = 0,fw = 0,fl = 0,fs = 0,fe = 0,fa = 0;
//根据输入对有效参数的状态进行处理
while(args[i].equals("-c")||args[i].equals("-w")||args[i].equals("-l")||args[i].equals("-s")||args[i].equals("-a")){
switch(args[i]){
case "-c" :
fc = 1;
i++;
break;
case "-w" :
fw = 1;
i++;
break;
case "-l" :
fl = 1;
i++;
break;
case "-s" :
fs = 1;
i++;
break;
case "-a" :
fa = 1;
i++;
break;
}
}
6.测试设计:
如何设计:应尽可能考虑到所有情况,将有效和可能无效的输入都进行尝试。
可能导致高风险的地方:比如只输入-o或者-e,以及读取的文件为空。
测试代码设计:
(1)-c file.c
(2)-o
(3)-e
(4)-a file.c
(5)-w -a file.c
(6)-l -a file.c -o result.txt
(8)-w file.c -e tt.txt
(7)-c -l -w -a file.c -e tt.txt -o result.txt
(9)-s -c *.c -o result.txt
(10)-c -l -w -a -s *.c -e tt.txt -o result.txt
应该全部覆盖了程序的要求
由于没有控制台,所以对有文件生成的测试结果截图。
读取文件
停用表文件
生成文件
7.参考资料链接:
1. https://www.cnblogs.com/Berryxiong/p/6232373.html 空格分割字符串
2. http://lucien-zzy.iteye.com/blog/2001275 InputStreamReader和BufferedReader用法
3. https://www.cnblogs.com/renxiaoren/p/5220534.html file文件的读取和写入
4. https://www.cnblogs.com/xy-hong/p/7197725.html main函数里String[] args的使用
5. http://blog.csdn.net/sunkun2013/article/details/13167099 把java文件打包成jar文件以及转换成可执行文件exe
6. http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html PSP表格的填写
7. http://ask.csdn.net/questions/352138 去除停用词
8. https://www.cnblogs.com/ouyangping/p/6842108.html String matches 正则表达