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. 测试运行:

1614539-20190318181021739-1868562642.png
1614539-20190318181028914-151443266.png
1614539-20190318181033556-1034355520.png

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计划108
Estimate估计这个任务需要多少时间,并规划大致工作步骤1510
Development开发150200
Analysis需求分析 (包括学习新技术)106
Design Spec生成设计文档1516
Design Review设计复审 (和同事审核设计文档)35
Coding Standard代码规范 (为目前的开发制定合适的规范)66
Design具体设计1520
Coding具体编码100120
Code Review代码复审1525
Test测试(自我测试,修改代码,提交修改)1510
Reporting报告1520
Test Report测试报告1015
Size Measurement计算工作量55
Postmortem & Process Improvement Plan事后总结 ,并提出过程改进计划2015

8.分享心得:

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

转载于:https://www.cnblogs.com/dxd123/p/10528310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值