201671010408-达星斗-词频统计软件项目报告

在Github的仓库主页的链接地址:
https://github.com/daxd123/mygit/blob/master/%E8%AF%8D%E9%A2%91%E7%BB%9F%E8%AE%A1%E4%BB%A3%E7%A0%81.java

1.需求分析:

(1).程序可读入任意英文文本文件,该文件中英文词数大于等于1个。
(2).程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。
(3).指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和 柱状图。
(4).高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。
(5).统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。

2. 功能设计:

基本功能:
              (1).可导入任意英文文本文件
              (2).统计该英文文件中单词数和各单词出现的频率(次数),并能将单词按字典
                            顺序输出。
               (3).将单词数量及频率写入文件。
扩展功能:无

3. 设计实现:

首先,设定文件读取路径,若读取不成功,则显示输出系统找不到指定的文件;若读取成功,则统计单词总数sum和每个单词个数及频率。
a. 预处理模块:
( 1 ) readText()
读文本数据,计算词频
(2)check()
过滤无意义的单词
(3)sort( )
对单词词频进行从高到底排序,取前20个单词。
b. 可视化模块:
单词云:将选出的数据通过大小,位置和颜色区分可视化出来。
初始化: text()构造函数
设置颜色: setColor()
设置大小: setTextSize()
运行(绘制):run( )

4. 测试运行:



5.部分代码:

while ((s = bufferedReader.readLine()) != null) {
            Map<String, Integer> map = new TreeMap<String, Integer>();
            //创建一个words数组,分割字符串,来统计单词出现的次数
            String[] words = s.split("[【】、.。,\"!--;:?\'\\] ]");
            for (int i = 0; i < words.length; i++) {
                String key = words[i].toLowerCase();
                if (key.length() > 0) {
                    if (!map.containsKey(key)) {
                        map.put(key, 1);
                    } else {// 如果不是第一次出现,就把value值++,那么value值是多少就是出现了几次
                        int value = map.get(key);
                        value++;
                        map.put(key, value);
                    }
                }

6. 总结:

一个类只负责一项职责,是防止当由于其中一个类的需求发生改变而需要修改该类时,有可能会导致原本运行正常的另一个类的功能发生故障。

7.

展示PSP

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 10 8
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 10
Development 开发 150 200
Analysis 需求分析 (包括学习新技术) 10 6
Design Spec 生成设计文档 15 16
Design Review 设计复审 (和同事审核设计文档) 3 5
Coding Standard 代码规范 (为目前的开发制定合适的规范) 6 6
Design 具体设计 15 20
Coding 具体编码 100 120
Code Review 代码复审 15 25
Test 测试(自我测试,修改代码,提交修改) 15 10
Reporting 报告 15 20
Test Report 测试报告 10 15
Size Measurement 计算工作量 5 5
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 20 15

8.分享心得:

通过这次软件工程个人项目的开发,让我感触很深。我觉得软件项目的开发应该是一个团队来做,因为过程很是繁琐。一个团队来做的话,会有明确的分工,就不会导致手忙脚乱的情况。还有就是,我觉得自己对java一点都不了解,代码也是问了很多的同学才写出来的。对于软件工程这门课来说,掌握一门编程语言很是必要的,所以我应该去好好学习一门编程语言。

猜你喜欢

转载自www.cnblogs.com/dxd123/p/10528310.html