201671030119 词频统计软件项目报告

项目名称:词频统计软件

需求分析

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

功能设计

基本功能:  
1.指定单词词频统计功能;
2.高频词统计功能;
3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt
扩展功能:无

测试运行

  • 将单词及词频数按字典顺序输出到文件result.txt
    1619949-20190319231222776-216652870.png

  • result.txt:
    1619949-20190319232114945-1580838162.png

  • 指定单词词频统计
    1619949-20190319231449554-1206191328.png

  • .高频词统计功能
    1619949-20190319231527754-924099041.png

部分代码

循环Map使用set接受返回的值,后遍历查询与输入单词相同的单词,输出单词以及词频。

for(int i=0;i<n;i++)
{
    System.out.println("单词 "+(i+1));
    String word = in.next();
    Set<StringBuffer> ks1 = ts.keySet();
    for(StringBuffer s2:ks1) 
    {
        if(word.equals(s2.toString()))
        {
            System.out.println("单词:"+s2.toString()+"            出现次数:"+ts.get(s2));
            num++;
            if(num==n)
                break;
        }   
    }
}

将文本文件中的单词存于lists,遍历lists将单词存放在treeMap ts与hashMap之中。借助treeMap特性完成单词的排序和 词频的统计,而hashMap是关于最高词频的统计。

Map<String, Integer> hashMap = new HashMap<String, Integer>();
        for(String str: lists) 
        {
            StringBuffer s2 = new StringBuffer( str);
            
            if (ts.containsKey(s2)) {
                count=Integer.parseInt(Integer.toString(count));;
                count++;
                ts.put(s2,Integer.toString(count));
                hashMap.put(str,count);
            }
            else {
                count=1;
                ts.put(s2, Integer.toString(count));
                hashMap.put(str,count);
            }    
        }

总结

此次软件项目个人开发项目让我对软件开发有了更深刻的理解,一个完整的软件开发过程中,任何一个步骤都是不可缺少的。在开始此次软件开发后,我先是进行了软件的需求分析,将老师的要求全部理解以后开始设计,完成设计后我才知道原来一个好的设计可以将一个软件所有的东西都呈现在我们的眼前。在之后开始了代码的编写,毕竟不是老练的的程序员,代码的编写还是没有流程中说的那么简单,在经过挺长时间的编程后,软件呈现了出来,经过测试,实现了大部分功能,还有柱状图功能因为编码能力差了点没有实现。经过这一个完整的个人开发流程,我发现虽然编码前花费了很多时间进行一些前期设计,但因为它们的存在,编程世没有花费时间去想功能、数量、数据结构以及算法,在所有的一切准备好之后开始写代码,真的会很舒心,这大概是我这一次设计最重要的收获了。

PSP:

PSP任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划105
Estimate估计这个任务需要多少时间,并规划大致工作步骤55
Development开发80100
Analysis需求分析(包括学习新技术)68
Design Spec生成设计文档1020
Design Review设计复审55
Coding Standard代码规范(为目前的开发制定合适的规范)55
Design具体设计1020
Coding具体编码6090
Code Review代码复审510
Test测试(自我测试,修改代码,提交修改)1020
Reporting报告55
Test Report测试报告55
Size Measurement计算工作量1510
Postmortem & Process Improvement Plan事后总结,并提出过程改进计划55

源码

转载于:https://www.cnblogs.com/tanggq/p/10558080.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值