201671010450姚玉婷 实验二词频统计

1、可行性分析

1)操做可行性
     操做可行性是指系统的操做方式在这个用户组织内行得通吗?本次开发只是简单的一个词频统计,不须要太大的人力或是资源。
2) 经济可行性
      经济可行性是从经济的角度分析系统的规划方案有无实现的可能性和开发的价值。本系统是自主开发的,用于本身的做业设计,因此不考虑资金上的流动,故而不存在经济不可行得问题。
3) 技术可行性
      技术上的可行性要考虑未来采用的硬件和软件技术可否知足用户提出的要求。目前,使用eclipse软件彻底能够,因此,也不存在技术可行性的问题。java

2、需求分析

根据实验二可知,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。其基本需求以下:git

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

3、功能实现

   1)现统计词汇数目
   2)查找指定词汇
   3)查找高频单词
   4)实现字典排序github

4、开发环境

操做系统 Widnows 7
开发工具 Eclipse
JDK 1.8
流程图设计 迅捷流程图制做软件

5、流程图

6、部分代码

    该程序共有三个类
1)包含主函数main的主类:Main.java
2)单词词频统计和高频词统计的功能类: Wordcount.java,对用户输入的单词进行处理,查询单词出现的次数。
3)排序功能类:WordEntity.java,对整个文本文件进行降序或者排序。
                       词频统计编程

try {
            BufferedReader reader = new BufferedReader(new FileReader(fileName));
            String line = null;
            TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
            while((line=reader.readLine())!=null){
                line = line.toLowerCase();
                String str[] = line.split("\\s+");
                for(int i = 0; i<str.length; i++){
                    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<Entry<String, Integer>> iterator=tm.entrySet().iterator();
            while(iterator.hasNext())
            {
                System.out.println(iterator.next());
            }
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }

                       高频统计app

try {
            BufferedReader br = new BufferedReader(new FileReader(fileName));
            String s;
            StringBuffer sb = new StringBuffer();
            while ((s = br.readLine()) != null) {
                sb.append(s);
            }
            
            Map<String,Integer> map = new HashMap<String, Integer>();
            StringTokenizer st = new StringTokenizer(sb.toString(),",.! \n");
            while (st.hasMoreTokens()) {
                String letter = st.nextToken().trim();
                int count;
                if (!map.containsKey(letter)) {
                    count = 1;
                } else {
                    count = map.get(letter).intValue() + 1;
                }
                map.put(letter,count);
            }
            
            Set<WordEntity> set = new TreeSet<WordEntity>();
            for (String key : map.keySet()) {
                set.add(new WordEntity(key,map.get(key)));
            }
 
            System.out.println("本文中出现频率最高的单词为:");
for(int i=0;i<rulerStep;i++){
            g2.drawString((400-20*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据
        }
        g2.setColor(Color.PINK);
        int m=0;
        for(int i = 0;i<st.length;i++){
            int value = tm.get(st[i]);
            int step = (m+1)*40;//设置每隔柱形图的水平间隔为40
            g2.fillRoundRect(leftMargin+step*2,Height-value, 40, value, 40, 10);//绘制每一个柱状条
            g2.drawString(st[i], leftMargin+step*2, Height-value-5);    //标识每一个柱状条       
            m++;
        }*/
可是因为本人能力有限,以前对图形化的设计方面不太了解,最后结果没能呈现出来。

7、测试运行

                  开始运行
eclipse

                  统计频率,并按字典排序输出
编程语言

                  统计出现频率次数最高
函数

                  查找单词功能

工具

8、PSP

PSP2.1 任务内容 计划共完成须要的时间(min) 实际完成须要的时间(min)
Planning 计划 15 10
Estimate 估计这个任务须要的时间,并规划大体工做步骤 15 10
Development 开发 180 220
Analysis 需求分析(包括学习新技术) 6 8
Design Spec 生成设计文档 30 20
Design Review 设计复审 15 10
Coding Standard 代码规范(为目前的开发制做合适的规范) 3 3
Design 具体设计 10 10
Coding 具体编码 50 60
Code Review 代码复审 5 8
Test 测试(自我测试、修改代码,提交修改) 8 6
Reporting 报告 9 8
Test Report 测试报告 1 2
Size Measurement 过后总结,并提出过程改进计划 5 5

9、总结

   本身虽然以前编写过程序,也编写过一些小项目,可是,由于时间久了不动手致使在这次编程中
出现了不少问题,不少方面都出现了许许多多的问题。致使本身又回过头从新去学习,花费了大量
的时间。可是,因为本身的编程能力有限,柱形图的功能未能实现。

10、GitHub仓库地址

该项目仓库地址学习

相关文章
相关标签/搜索