1、Github项目地址:https://github.com/SSS-SY/wordcount
2、PSP2.1表格
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
Planning |
计划 |
20 |
15 |
· Estimate |
· 估计这个任务需要多少时间 |
30 |
15 |
Development |
开发 |
360 |
605 |
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
80 |
· Design Spec |
· 生成设计文档 |
0 |
5 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
· Design |
· 具体设计 |
20 |
30 |
· Coding |
· 具体编码 |
180 |
360 |
· Code Review |
· 代码复审 |
40 |
60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
100 |
Reporting |
报告 |
60 |
85 |
· Test Report |
· 测试报告 |
40 |
60 |
· Size Measurement |
· 计算工作量 |
10 |
5 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 |
20 |
|
合计 |
440 |
705 |
3、解题思路:
a.创建Args类实现对功能的选择
b.基本功能比较简单,只需读取文件内容后分别按行、按单词、按字符循环统计总数即可
c.对输出文件只需判断是否有选择输出文件然后修改Args的参数output即可
d.对于-e StopLists只需读取文件内容以后创建Hash表然后统计字数时先判断是否在Hash表中即可
e.对于-a功能在统计字符数时使用trim()函数判断blank,使用contains()判断comments,其余情况即可视为code
f.对于-s功能递归处理输入文件列表然后在输出时循环调用输出功能结果功能即可
4.程序设计实现过程
a.查阅资料实现读取以及文件输出
b.实现基本功能
c.实现-e功能
d.实现-a功能
f.实现-s功能
5.代码说明
//参数设置
private static class Args
//计算单词数
private static int wc(String contents,Set<String> stopLists)
//计算行数
private static int[] cl(String[] contents)
//计算字符数
private static int cc(String[] contents)
//stop words:
private static Set<String> stopWords(String stopfile)
//按行获取文件内容
private static ArrayList<String> getLines(String path)
//按字获取文件内容
private static String[] getWords(String path)
//输出结果
private static void ptintResultToFile(String file,Args args,PrintWriter output)
//递归寻找文件
private static String[] findFiles(String path,boolean s)
6.测试设计过程
a.先分别测试各个功能然后综合测试所有功能确保覆盖所有语句
b.具体测试用例放在test文件夹中
c.测试结果放在result文件夹中
7.参考文献链接
a.手把手教你如何把jar文件,打包成jar文件以及转换为exe可执行文件:http://blog.csdn.net/sunkun2013/article/details/13167099
b.作业内容:http://www.cnblogs.com/ningjing-zhiyuan/p/8563562.html
c.java读取文件内容方法:https://zhidao.baidu.com/question/620468183851139852.html
d.java输出内容至文件:http://blog.csdn.net/liuweiyuxiang/article/details/69487326