需求分析
- 可以使用Java编程语言,独立完成一个英文文本词频统计的软件开发。
- 程序可读入任意英文文本文件,该文件中英文词数大于等于1个。
- 程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。
测试环境
- 此次项目的测试机为Windows环境。
- 使用的JDK版本为 jdk8u161。
- 使用的JRE版本为jre8u161。
基本功能需求
- 用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数。
- 统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。
- 本次项目必须包含src文件夹,在src文件夹中必须包含名为Main.java文件,且Main.java中包含 public static void main(String[] args) 方法。
- 生成的文件使用的是相对路径,生成的 result.txt 文件在项目的根目录下。
设计实现
在整个项目设计中,Map类是以按键/数值对的形式存储数据,即单词所出现的次数;BufferedReader类的作用是在读取文件时,让单词从文件中读入字符数据并置入缓冲区;SortMap函数用于实现数组的排序,文件的输出,搜索单词的录入,搜索结果的打印等。
测试运行
测试结果如图所示
- 单词词频数
- 将结果返回到result.txt 文件中
代码展示
- 读取一个英文文本,并过滤出只含有字母的文本,且去除长度为0的行
- 单词的词数统计并按值进行排序
- 将统计的结果返回到result.txt文件中
总结
本人以前没有接触过Java项目的设计与实现,所以这次通过做这个Java项目,我才真正进行了实践,在这个期间,我也通过自主查询资料及上网查询视频教程对Java这个编程语言及它的编程环境有了一些初步的认识及了解。在整个项目实现的过程中,代码这一块是最耗时的,也是通过请教身边的学长学姐和一些朋友才将这个项目完成,对我来说也算是比较困难,归集原因还是因为编程功底太薄弱了,通过这次实验,我想我应该好好学习编程语言,虚心向他人请教,争取越来越好。
展示PSP
任务内容 | 计划共完成需要的时间(min) | 实际完成所需要的时间(min) |
---|---|---|
计划 | 15 | 10 |
估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 10 |
开发 | 300 | 600 |
需求分析(包括学习新技术) | 120 | 240 |
生成设计文档 | 40 | 60 |
设计复审(审核设计文档) | 20 | 30 |
代码规范(为目前的开发制定合适的规范) | 10 | 15 |
具体设计 | 30 | 50 |
具体编码 | 200 | 600 |
代码复审 | 20 | 40 |
测试(自我测试,修改代码,提交修改) | 40 | 70 |
报告 | 40 | 50 |
测试报告 | 20 | 30 |
计算工作量 | 10 | 15 |
事后总结,并提出过程改进计划 | 30 | 50 |