



| PSP2.1 | 个人开发流程 | 预估耗费时间(分钟) | 实际耗费时间(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 75 |
| · Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 60 | 75 |
| Development | 开发 | 700 | 960 |
| · Analysis | 需求分析 (包括学习新技术) | 100 | 120 |
| · Design Spec | 生成设计文档 | 60 | 65 |
| · Design Review | 设计复审 | 30 | 45 |
| · Coding Standard | 代码规范 | 30 | 60 |
| · Design | 具体设计 | 60 | 100 |
| · Coding | 具体编码 | 300 | 420 |
| · Code Review | 代码复审 | 60 | 80 |
| · Test | 测试(自我测试,修改代码,提交修改) | 60 | 70 |
| Reporting | 报告 | 100 | 140 |
| · | 测试报告 | 45 | 60 |
| · | 计算工作量 | 25 | 30 |
| · | 并提出过程改进计划 | 30 | 50 |
WordCount.exe后,正确的参数的长度只有4和6两种,指令只有“-n/-m/-i/-o”四种且都为“-n/-m”开头,出于实现便利的考虑,设置为“-n/-m”不同时出现,"-o"则自主决定是否跟在参数尾,分析过后这样对于参数的判断就比较简单了。Main类与FileDeal两个类,Main类主要涉及一部分参数的筛选,并决定执行调用FileDeal类的什么方法。FileDeal类中包含了FileDeal()构造方法,用于一部分参数的设定;FileNotExist()向前端界面输出报错信息;getConnection()建立与文件的连接;getChars()获取字符总数;getLines()获取行数;getWords()获取单词数;getWordsSort()统计单词出现次数并排序;getGroups()统计词组出现次数并排序;wordstoString()输出单词统计结果,并写入文件;groupstoString()输出词组统计结果,并写入文件。
doGet()方法,也包含了一部分筛选参数的语句,根据不同筛选结果将表单参数传递至后台交由Servlet的相应函数进行处理,。

getConnection()方法实现与文件建立连接
getWordsSort()方法通过映射(Map)与比较器实现对文件中单词的统计及排序,结果返回一个包含键值对的数组infoIds。

wordstoString()方法获取上一步获得的infoIds数组,按照格式将结果输出反馈至前台,并根据是否给定“-o”参数决定是否将统计结果输出到文件中。
getGroups()处理词组的方法与其他的方法等基本与处理单词的类似,此处不再贴代码及阐述。运行index.jsp时的输入界面

含无法识别指令(-r为例):-m 10 -r d:\1.txt与-n 10 -r d:\1.txt

无可识别指令参数(-n/-m):10 3 d:\1.txt

参数不完整(-o后缺失):-n 10 -i d:\1.txt -o与-m 3 -i d:\1.txt -o

参数数值小于0:-n -2 -i d:\1.txt与-m -3 -i d:\1.txt

指定文件不存在:-n 10 -i d:\d.txt

一次传入多个指令(-n/-m):-n 10 -m 3 -i d:\1.txt -o d:\output.txt

正确参数:-n 10 -i d:\1.txt与-m 3 -i d:\1.txt与-n 10 -i d:\1.txt -o d:\output.txt与-m 3 -i d:\1.txt -o d:\output.txt。(注:由于单词判断条件为前四个为字母,所以当选定词组长度为1时,输出的结果与单词统计结果不一致)

文件数据测试
英文文件

纯中文文件

空白文件

参数为-n 10 -i d:\1.txt -o d:\output.txt,正常执行并输出到文件时。

参数为-m 3 -i d:\1.txt -o d:\output.txt,正常执行并输出到文件时。

参数为10 3 d:\1.txt,错误参数不通过时。

原文:https://www.cnblogs.com/Fogram-c/p/9749501.html