201671010415+词频统计软件项目报告
任务一:
源码在Github的仓库主页连链接地址:https://github.com/jinshengfang123/jsf
一、需求分析:
在信息技术普及的现代教学中,有很多有关英语学习的软件,但是对于一篇文章进行词频统计的软件还是比较少的。为了方便老师和学生在上课时能够快速统计出一片文章中出现的单词的频率,能让老师和学生更明确地了解学习的任务,也能让课堂气氛更加活跃,特此写了这段程序。
2:该程序的功能有如下几点:
二、基本功能:
1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。
2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。
3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。
4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。
三、设计实现
类:class ByvalueComparator
方法:用到了比较的方法和构造方法
四、测试运行
五、代码展示
StringTokenizer st = new StringTokenizer(file," ,.!?\"'"); //用于切分字符串
TreeMap hm = new TreeMap<>();
while(st.hasMoreTokens()) {
String word = st.nextToken();
if(hm.get(word) != null) {
int value = ((Integer)hm.get(word)).intValue();
value++;
hm.put(word, new Integer(value));
}
else {
hm.put(word, new Integer(1));
}
}
TreeMap tm = new TreeMap(hm);
ByValueComparator bvc = new ByValueComparator(tm);
List<String> ll = new ArrayList<String>(tm.keySet());
Collections.sort(ll, bvc);
for(String str:ll){
System.out.println(str+"——"+tm.get(str));
}
}
}
六、总 结
在整个作业的完成过程中,也是很不容易的,请教了很多同学和老师后才算完成。在写程序的过程中,是将程序分成好几个模块进行的。通过这次实验真心体会到了自己代码的功底,如果说没有同学和老师的帮忙,估计这次作业很难独立完成。在以后的学习中得加强程序的练习。
七、展示PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 7 | 6 |
Estimate |
估计这个任务需要多少时间, 并规划大致工作步骤 |
4 | 3 |
Development | 开发 | 22 | 17 |
Analysis | 需求分析 (包括学习新技术) | 6 | 7 |
Design Spec | 生成设计文档 | 4 | 2 |
Design Review | 设计复审 (和同事审核设计文档) | 5 | 3 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3 |
Design | 具体设计 | 7 | 10 |
Coding | 具体编码 | 20 | 16 |
Code Review | 设计复审 (和同事审核设计文档) | 7 | 9 |
Test | 自我测试,修改代码,提交修改 | 5 | 4 |
Reporting | 报告 | 9 | 6 |
Test Report | 测试报告 | 3 | 2 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 3 | 3 |
八:心得体会
这是自己第一次独立完成一个小项目,以前总是觉得自己的编程能力不是太好,但也没怎么在意,通过这次实验,彻底认识到了自己的能力不足,在以后的学习中必须提高编程能力,大量地阅读代码和写代码,尽快掌握 基本的编程语言。