项     目   内     容 
所属课程 软件工程
作业要求 实验二软件工程个人项目
课程目标 掌握软件项目个人开发流程,
掌握Github上发布软件项目的操作方法。
项目源码 源码链接

一、需求分析

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

二、功能设计

1.读取英文文本的功能;
2.可输出指定单词的词频(可输入一个或多个单词);
3.可显示对应单词的柱状图;
4.统计并输出前k个高频词及其词频;
5.统计文本中的单词数量及词频数;
6.将单词及词频数按字典顺序输出到文件result.txt。

三、设计实现

  • 1.项目包含两个类,分别是主函数Main类和实现功能的Function类。
  • 2.Main类的作用是实现用户选择功能、退出功能和读取英文文本的功能。
  • 3.Function类的作用是实现指定单词词频统计功能、统计并输出前k个高频词及其词频功能、统计文本所有单词数量及词频数并将单词及词频数按字典顺序输出到文件result.txt的功能和退出功能。
  • 4.流程图:

四、测试运行

  • 1.指定单词词频统计功能:
  • 2.高频词统计功能(前k个):
  • 3.统计该文本所有单词数量及词频数,并将单词及词频数按字典顺序输出到文件result.txt:

  • 4.退出功能:

五、部分代码展示

1.统计并输出前k个高频词及其词频

public void topword(TreeMap<String, Integer> wordFrequent) {Set<Map.Entry<String, Integer>> set=wordFrequent.entrySet();    List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(set);System.out.println("请输入单词个数:");int k = in.nextInt();int i;Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() {            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                return o2.getValue()-(o1.getValue());            }        });//end of sortfor (i = 0; i < k; i++) {System.out.println(list.get(i));}System.out.println("Over!");System.exit(0);}//end of topword   

2.将单词及词频数按字典顺序输出到文件result.txt

public void printresult(TreeMap<String, Integer> wordFrequent) throws IOException {Set<Map.Entry<String, Integer>> set=wordFrequent.entrySet();//返回treemap里的条目规则集FileWriter file = new FileWriter("result.txt");BufferedWriter reader = new BufferedWriter(file);for(Map.Entry<String, Integer> e:set){   reader.write(e.getKey() + ":" + e.getValue() + "\t");}reader.close();System.out.println("Over!");System.exit(0);}//end of printresult

六、总结

主类里实现功能选择,简单的退出功能和调用Function类中的函数的功能,Function类里实现指定单词词频统计功能,高频词统计功能(前k个)和统计该文本所有单词数量及词频数,并将单词及词频数按字典顺序输出到文件result.txt的功能,每个功能用一个函数实现,以实现软件设计的“模块化”原则。

七、PSP

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 8 10
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 8 10
Development 开发 130 256
Analysis 需求分析 (包括学习新技术) 20 44
Design Spec 生成设计文档 10 14
Design Review 设计复审 10 12
Coding Standard 代码规范 5 5
Design 具体设计 10 10
Coding 具体编码 60 145
Code Review 代码复审 5 10
Test 测试(自我测试,修改代码,提交修改 10 16
Reporting 报告 5 5
Test Report 测试报告 3 2
Size Measurement 计算工作量 2 3
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 3 5

通过本项目,我对软件的开发流程有了大致的了解,这种规范化的流程对比我以往的代码编写方法确实有许多的优点;通过本项目,我也学到了一些新知识,比如怎样将TreeMap按value值排序,怎样在Github上发布软件项目;通过本项目,我也发现了自己还有许多不足之处,比如Java基础不好,编程实现困难。在本次项目开发中,我也有一点遗憾,一是没有实现选择功能的循环录入,二是因个人能力不足没有将指定单词的柱状图完全实现,而是用一种投机取巧的方式实现。

转载于:https://www.cnblogs.com/LioRong/p/10562163.html

201671030111 词频统计软件项目报告相关推荐

  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. MySQL列的别名 insert into select from
  2. 残差网络(Residual Networks, ResNets)
  3. 中点和中值滤波的区别_频谱仪和EMI测试接收机什么区别?安泰维修中心分享
  4. ubuntu18.04 用xhell连接失败
  5. 固态硬盘开卡软件_有一种软件号称能让固态硬盘速度飞起,到底靠不靠谱?
  6. 主板有电无法启动_主板通电但不能启动怎么回事
  7. 产生随机数(C语言)
  8. PremierePR2019CC Beat Edit 安装好之后打不开?Pr下载模板安装后不能使用?Pr全屏预览?此效果需要GPU加速?小清新lut?
  9. Win11如何重置电脑 Win11重置电脑教程
  10. 多自由度有阻尼matlab,有阻尼多自由度系统固有频率、阻尼的求取
  11. 数码照巧转胶片效果 美图秀秀制作质感写真
  12. 三菱凌云3故障代码_上海三菱凌云2故障代码
  13. MobaXterm上方工具栏显示
  14. python数据分析与可视化从入门到精通_零基础学Python爬虫、数据分析与可视化从入门到精通...
  15. ui设计现状与意义_UI设计的现状如何?
  16. 微信提示已连接到服务器失败,微信提示无法连接到服务器如何解决
  17. 计算机辅助电路与设计试卷,计算机辅助电路设计_习题集(含答案).doc
  18. 关于VRML中的旋转(orientation或rotation)
  19. 4 分钟,快速了解声网 Agora SDK 3.0
  20. 基础ROS小车软件结构到底是什么样子的?

热门文章

  1. 基于RGMII的FPGA千兆以太网设计
  2. 【错误记录】Ubuntu 编译 ffmpeg 报错 ( nasm/yasm not found or too old. Use --disable-x86asm for a crippled bu )
  3. 深海迷航创造模式中如何起飞火箭
  4. 二牛频道-收集分享各类不花钱的各类绿色优质软件-互联网资源分享
  5. 反转链表 c++实现
  6. 史上最全最强SpringMVC详细示例 实战
  7. 2022-03-02 组建raft集群实战及日志复制与主从切换调研
  8. Nessus插件离线下载
  9. sketch软件_8款原型设计工具与Sketch的强强组合,轻松构建交互原型
  10. HP 8440P 4G内存蓝屏--内存颗粒容量支持问题