项目要求
源码地址

一、需求分析

尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。软件基本功能要求如下:

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

二、功能设计

  • 读取文件text.txt,能容纳10万单词以上。
  • 统计词频,可以分解输入字符串并统计输入一个或多个单词的词频。
  • 统计高频词,用户输入高频词个数n,程序返回n个高频词以及每个单词的词频。
  • 将text.txt文本中的单词及其词频按照字典顺序输出到文件result.txt文件中。

三、设计实现

项目主要包含两个类,一个是主函数Main,一个是统计单词的类SortResult。

  • 主函数Main中实现图形用户界面,实现各个功能。输入框3个,分别是原文本文件的文件名(采用相对路径),想要查找的一个或多个单词,想要查找的N高频词及其词频数。两个按钮,分别是“确定”和“取消”。由于两个查找在同一个面板,防止出现冲突,若两个输入框均有输入,则实现第一个输入框的功能。点击确定后,直接将字典顺序输出到result.txt文本中,并且实现相应功能。
  • SortResult中将文本中的每个单词按照字典顺序将单词及词频数输出到result.txt文本文件中。

四、测试运行

读入text.txt文件,输入要查找的一个或多个词语,以空格为分割符,返回各个单词的词频及柱状图:

输入想要查找的高频单词个数n,输出前n个高频词及其频数:

若同时输入了查找单词和查找高频单词个数,只执行查找单词功能:

result.txt

五、部分代码


输出柱状图:

                int i;String print = "";//记录输入单词及词频String print2 = "\n";//记录柱状图for(i=0; i<input.length; i++) {for(Entry<String, Integer> entry : wordsStatistics.entrySet()) { if(input[i].equals(entry.getKey())){map.put(entry.getKey(), entry.getValue());print2+=entry.getKey()+":\n";for(int j=0;j<entry.getValue()/100;j++)print2+="*";//柱状图以“*”显示print2+="\n";print += entry.getKey() + ":" + entry.getValue()+"    "; break;}} }JOptionPane.showConfirmDialog(null, print+print2,"结果",JOptionPane.DEFAULT_OPTION);

输出高频词:

            if(admin.isEmpty() && !num.isEmpty()) //若输入单词栏为空且输入高频词个数不为空{int n=Integer.parseInt(num);//将读到的字符串转化为整型String print = "";ArrayList<Map.Entry<String,Integer>> resultlist = new ArrayList<Map.Entry<String,Integer>>(wordsStatistics.entrySet());//结果存入 resultlistCollections.sort(resultlist,new Comparator<Map.Entry<String,Integer>>(){  @Override  public int compare(Entry<String, Integer> w1, Entry<String, Integer> w2) {  return w2.getValue() - w1.getValue();    //以降序的形式存入}  }); for(int i = 0; i<n; i++){  print += resultlist.get(i).getKey()+ ": " +resultlist.get(i).getValue()+"    ";}JOptionPane.showConfirmDialog(null, print,"结果",JOptionPane.DEFAULT_OPTION);}

六、总结

  • 本次项目为单人项目,通过实践,大致了解了软件项目个人开发流程。从需求分析到设计实现再到测试运行,此次项目实验让我体验了每一个步骤的具体实现。
  • 学会了在Github上发布软件项目的操作方法。
  • 项目完成后还有许多地方不足,比如柱状图没有用图形的样式表现出来。
  • 本次项目完成时的模块划分能力有所欠缺,只有两个模块,功能实现Main和字典输出到文本,多数功能都在Main中直接编码调用。

七、PSP

实际完成时间(min) 计划完成时间(min) 任务内容 PSP2.1
28 20 计划 Planning
28 20 估计这个任务需要多少时间,并规划大致工作步骤 Estimate
1020 674 开发 Development
30 20 需求分析(包括学习新技术) Analysis
35 20 设计 Design
22 10 设计复审 Design Review
5 4 代码规范 Coding Standard
58 60 具体设计 Design
720 480 具体编码 Coding
120 60 代码复审 Code Review
30 20 测试 test
65 60 报告 Reporting
30 30 测试报告 Test Report
20 20 计算工作量 Size Measurement
15 10 事后总结,病提出过程改进计划 Postmortem & Process Improvement Plan

通过总结,发现本次项目的计划时间与实际完成时间出入比较大,尤其在具体编码方面,体现了我的动手编写代码能力不足,需要加强,也是因为设计的时候没有细化,不够完善,导致编写代码时不顺利。在今后的学习中,希望可以加强我的项目具体设计能力及编程能力。

转载于:https://www.cnblogs.com/SongFeiF/p/10556475.html

201671030116宋菲菲 词频统计软件项目报告相关推荐

  1. 201671010411+巩定定+词频统计软件项目报告

    课程名 软件工程 实验二 词频统计软件项目报告 词频(TF) 是一个词语出现的次数除以该文件的总词语数. 实验目的 (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. ...

  2. 201671010417 金振兴 词频统计软件项目报告

    1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...

  3. 201671030128+词频统计软件项目报告

    一.需求分析 根据实验二 软件工程个人项目的要求本次软件项目的需求有以下几点: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个,程序需要很壮健,能读取容纳英文原版<哈利波特> ...

  4. 201671030125+词频统计软件项目报告

    项目 内容 这个作业属于哪个课程? 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里? 实验二 软件工程个人项目 我在这个课程的目标是? 按时完成老师给的任务,复习JAVA ...

  5. 201671030130+词频统计软件项目报告

    (一)需求分析 根据实验二 软件工程个人项目的要求该软件项目的基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特 ...

  6. 201671010433 | 词频统计软件项目报告

    1.需求分析 使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原 ...

  7. 实验二 词频统计软件项目报告

    实验要求 实验二 软件工程个人项目 GitHib链接 https://github.com/Z-zt/Count 一.需求分析 通过分析实验二题目要求,得出的用户需求主要为: 程序可读入任意英文文本文 ...

  8. 201671010403 陈倩倩 词频统计软件项目报告

    一.需求分析 一个英文文本词频统计的软件开发,其基本需求有: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上 ...

  9. 201671010423 词频统计软件项目报告

    需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 基本功能 1.指定单词词频统计功能:用户可 ...

  10. 201671010444 夏向明 词频统计软件项目报告

    该项目实施过程主要包括以下7部分. 一.需求分析 1.程序需要读入至少一个词,可读入任意英文文本. 2.至少可以统计10万词及以上的文本. 3.用户可以同时查询多个单词的统计,并显示出其个数和柱状图. ...

最新文章

  1. java.lang.RuntimeException: can not run elasticsearch as root
  2. 信号与系统——微分方程与差分方程——编辑中
  3. War-Driving(战争驾驶***)
  4. 蛋糕是叫胚子还是坯子_教你做巧克力淋面蛋糕,掌握这个配比,好看又好吃,10分钟做一个...
  5. SRS 启动正常,拉流没画面,看SRS日志报错 srs is already running
  6. SpringMvc01 第一个Springmvc应用
  7. short s=1;s=s+1有问题吗?short s=1;s+=1;有问题吗?
  8. wptx64能卸载吗_电脑可以卸载bonjour软件吗?详细介绍bonjour软件
  9. 数据之路 - Python爬虫 - BeautifulSoup库
  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
  11. 77GHz毫米波雷达快速chirp信号技术(二):测速原理
  12. python批量发送邮件_EDM营销算法:python自动批量发邮件
  13. 视频直播涉及的上行带宽问题~~
  14. 反垃圾邮件企业邮箱设置(TXT记录)
  15. java 文件服务器搭建_NFS文件共享服务器的搭建
  16. 延边大学计算机考研专业课考什么,延边大学2021小学教育经验贴
  17. 国土防线2计算机内存不足,国土防线2革命配置要求高吗?PC配置要求介绍
  18. Creator 开发微信小游戏-好友排行榜
  19. openjdk1.8的下载与安装
  20. 20200307 NOI Online T2 冒泡排序(逆序对)

热门文章

  1. react 中样式写法
  2. [llvm cookbook] 1、LLVM设计与使用
  3. matlab fsolve fzero,Matlab中的fzero和fsolve函数
  4. HTML+CSS---进阶学习03
  5. Eclipse的各种查找,类的查找,方法查找快捷键
  6. 小米商城——HTML,CSS(附:源码)
  7. 【Burp suite】intruder内的四种攻击模式(attack type)分析!
  8. 大友克洋机器人嘉年华_大友克洋
  9. 【修真院java小课堂】Shiro
  10. 常用财务指标计算公式(信贷指标公式)