201671030123+词频统计软件项目报告

需求分析.

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

功能设计.

基本功能:本次设计实现的功能有读取英文文本,将文本中词频数降序排列,输出全部单词的词频,显示最高频率的单词的词频及单词,全部单词的词频写入文件result.txt中。

设计实现

本次设计创建了三个类,Main.java Sort.java WordCont.java
1.Main.java 实现了文本中单词的读入并将单词及其词频数按字典顺序输出到result.txt。
2.Sort.java 实现对文本中单词数目的降序排序,找出出现频率最高的单词
3.WordCont.java实现了词频统计,将单词及其词频数按字典顺序输出,并输出文本中单词的总数目和出现频率最高的单词。
4.流程图
1616085-20190319212913305-1017955293.png

测试运行

  1. 输出英文文本中的单词及其词频数。
    1616085-20190319212816011-632677074.png

  2. 输出文本中单词的总数目和出现频率最高的单词。
    1616085-20190319212925704-116018670.png

  3. 将单词及词频数按字典顺序写入result.txt
    1616085-20190319212949116-1606325786.png
    1616085-20190319212959277-389453923.png

代码片段

1.字符统计


//统计单词词频数
 TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
            int count = 0;
            while((line=reader.readLine())!=null){
                line = line.toLowerCase();
                String str[] = line.split("[【】、.。,\"!--;:?\'\\] ]");
                for(int i = 0; i<str.length; i++){
                     count++;
                    String word = str[i].trim();
                    if(tm.containsKey(word)){
                        tm.put(word, tm.get(word)+1);
                    }else{
                        tm.put(word, 1);
                    }
                }
            }
            //输出我们想要的字符串格式
            System.out.println("按字典序输出为:");
            Iterator iterator=tm.entrySet().iterator();
            while(iterator.hasNext())
            {
                System.out.println(iterator.next());
            }
            System.out.println("该英文文本中共有单词:"+count+"个");

2.降序排序

public class Sort implements Comparable<Sort>{
    @Override
    public int compareTo(Sort o) {
        int cmp = count.intValue() - o.count.intValue();
        return (cmp == 0 ? key.compareTo(o.key) : -cmp);
    }

总结

   在本次程序设计中使用JAVA语言编写程序。对JAVA语言的使用有了更深刻的理解,可以跟熟练的编写代码,了解软件开发过程。本次实验过程中在网上查找了很多资料,通过参考了别人的代码,更好的了解各种方法并将其运用到自己的代码上。本次设计的我将程序分为三个类;Main.java,Sort.java ,WordCont.java .这也便于修改程序,查找错误。在程序中使用TreeMap方法实现存储元素的自动排序,调用compareTo方法来实现单词数目的降序排序,用<key,value>映射,采用Map按键排序。这次实验让我感受到自己在编程方面的不足,以后还需加强学习,重视实践与理论相结合。

展示PSP

任务内容计划完成时间(min)实际完成时间(min)
计划1520
规划工作步骤1510
开发100150
需求分析1515
生成文档2020
设计复审105
代码规范2018
具体编码180220
代码复审105
测试2040
报告3030
测试报告1010
计算报告量55
事后总结1010

GitHub源代码地址

转载于:https://www.cnblogs.com/yehong123/p/10554937.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值