201671010459张旭辉-词频统计软件项目报告

该博客介绍了一个Java编写的文本单词词频统计程序。包含需求分析,用户可输入单词查词频并显示柱状图;功能设计有高频词统计等;还涉及设计实现,介绍相关类和方法;展示了测试运行截图和代码片段;最后总结模块化设计原则及PSP。

课程名称

2016级计算机科学与工程学院软件工程

作业要求

实验二 软件工程个人项目

课程目标

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

作业意义

1)掌握软件项目个人开发流程。

2)掌握Github上发布软件项目的操作方法

 

Github的仓库主页的链接地址:https://github.com/16rgzxh/zxh-/tree/master/test/src

1.需求分析:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。

2.功能设计

1.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k单词的词频及单词。

2.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt

3. 设计实现,设计包括你会有哪些类,这些类分别负责什么功能。

a)     public BufferedReader(Reader in,int sz)

创建一个使用指定大小输入缓冲区的缓冲字符输入流。

in - 一个 Reader

sz - 输入缓冲区的大小

b)   public BufferedReader(Reader in)

创建一个使用默认大小输入缓冲区的缓冲字符输入流.

c)   toLowerCase 方法
字符串中的字母被转换为小写字母.

d)   ArrayList 排序方法

实现对数组的排序,给输出的单词频率高低进行排序.

e)   PrintStream 打印输出流.

实现统计文本的输出,输出文本结果保存在文档中.

4. 测试运行请展示程序的运行截图,包括题目要求实现功能运行截图。

o_666.jpg

 

5.代码片段博客园正确的代码控件来显示。(提示:要有必要的注释说明,提示:不要贴所有代码!不符合规定的要倒扣分)

BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));

            StringBuffer sb = new StringBuffer();

            String text="";

            System.out.println(br.readLine()!=null);

            while ((text=br.readLine())!=null){

            //遍历追加

                sb.append(text);

            }

            //关闭流

            br.close();

            // stringBuffer转为字符并转换为小写

            String str = sb.toString().toLowerCase();

            // 正则表达式    非单词的字符来分割,得到所有单词

            String[] words = str.split("[^(a-zA-Z)]+");

            Map<String ,Integer> map = new HashMap<String, Integer>() ;

 

            for(String word :words){

            // 若不存在说明是第一次,则加入到map,出现次数为1

                if(map.get(word)==null){ 

                    map.put(word,1);

                }else{

                   // 若存在,次数累加1

                    map.put(word,map.get(word)+1);

                }

            }

6. 总结:

所谓模块化就是将整体软件系统划分成许多个逻辑上相对独立且可独立访问的模块,不同的模块通常具有不同的功能。模块是程序中逻辑上相对独立的单元,每个模块可独立地进行设计、开发和测试,最后所有模块组装在—起从而形成一个完整的软件系统。在结构化方法中,一个模块可能是一个过程、函数或子程序等,它是构成软件的基本构件。

设计原则:

l  建立数据流,可输入的英文文本,遍历文本,统计各个单词出现次数。

l  排序:对统计的单词书出现频率进行排序,一出现频率由高到低的顺序排序,

l  输出单词总数并输出单词出现频率的结果,并且可以查询所需单词的次数。

l  写入输出文本,存储统计结果。

7. 展示PSP

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

30

40

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

20

25

Development

开发

300

720

Analysis

需求分析 (包括学习新技术)

120

150

Design Spec

生成设计文档

45

60

Design Review

设计复审 (和同事审核设计文档)

20

10

Coding Standard

代码规范 (为目前的开发制定合适的规范)

20

30

Design

具体设计

30

60

Coding

具体编码

300

600

Code Review

代码复审

40

80

Test

测试(自我测试,修改代码,提交修改)

120

150

Reporting

报告

60

100

Test Report

测试报告

20

30

Size Measurement

计算工作量

5

10

Postmortem & Process Improvement Plan

事后总结 ,并提出过程改进计划

30

60

 

转载于:https://www.cnblogs.com/16rgzxh/p/10558737.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值