201671030118 词频统计软件项目报告

(一).需求分析

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

(二)功能设计

基本功能:
—统计文件中单词,并输出到指定文件
—根据题目要求读入文件
— 查询文件中单词出现的次数
—文本中的词频数降序显示前K个单词以及柱状图
扩展功能:
目前没有java

(三).设计实现

Figure.java :统计前K个出现的频次最高的单词及词频的柱状图
StatisticalWord.java: 输入一个单词统计单词在文章中出现的个数,若是不在提示不在!
WordList.java :统计文件中单词出现的频数并输出到文件
这三个类和一个Main()函数,用户能够根据不一样功能进行选择git

(四).测试运行

功能1: 统计单词个数,并把结果存到result.txt中。

功能2:输入一个单词,统计其在文中出现的词数。

没有此单词:

功能3:出入前最高K个词频从多到少并用柱状图(因为图片大小缘故柱状图没有显示明显的差距。)

(五).关键代码

显示柱状图:

System.out.println("请输入要查看的最高词频的个数:");
int k = sc.nextInt();
if(k>0&&k<=ordlist.size())
{
System.out.println("----------词频最高的前"+k+"个单词及其柱状图-----------");github

for (Map.Entry<String, Integer> entry : ordlist) {
                    
                    System.out.printf("单词 "+"%-8s" + "出现" +"%-3d"+"次 ",entry.getKey(),entry.getValue());    
                    //用符号个数来显示模拟柱状图
                        for(int i=entry.getValue();i>0;i--)
                        {
                            System.out.print("▏");
                        }
                        System.out.println();
                        //System.out.println(entry.getKey() + ":" + entry.getValue());
                        
                        if(--k==0)
                            break;//k=0,则再也不输出后面的词频                  
                    
                }
                System.out.println("------------------------------------------------"); 

            }else{
                System.out.println("输入有误!请从新输入!");
            }

将输出结果发送到results.txt中:

try
            {
                
                FileWriter fw= new FileWriter("src\\results.txt");
                System.out.println("词频统计结果已输出列 result.txt文件·");
            } 
            catch (IOException e)
            {
                
                e.printStackTrace();
            }

进行排序

Comparator<Map.Entry<String, Integer>> valcom = new Comparator<Map.Entry<String,Integer>>() {
        public int compare(Map.Entry<String, Integer> rst1,Map.Entry<String, Integer> rst2) {
            int sortrst=rst2.getValue()-rst1.getValue();
            return sortrst;
            
            }     
        };
            List<Map.Entry<String, Integer>> ordlist = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
            Collections.sort(ordlist,valcom);

(六).总结

经过此次的项目发现,以前学过的JAVA忘的一干二净,原本就基础很差,学到的一点也忘了,因此此次代码编写花费了不少时间,须要经过网上和课本以及同窗的帮助下大概的完成了项目,但仍是有不少问题,须要我花更多的时间学习。

(七).psp

psp 任务内容 计划共完成须要的时间(min) 实际完成须要的时间(min)
Planning 计划 15 10
Estimate 估计这个任务须要多少时间,并规划大体的工做步骤 5 10
Development 开发 120 150
Analysis 需求分析(包括学习新技术) 30 60
Design Spec 生成设计文档 30 20
Design Review 设计复审(和同窗审核设计文档) 15 10
Coding Standard 代码规范化(为目前的开发制定合适的规范) 20 30
Design 具体设计 120 180
Coding 具体编码 180 220
Code Review 代码复审 30 20
Test 测试(自我测试,修改代码,提交修改) 20 15
Reporting 报告 50 35
Test Report 测试报告 20 15
Size Measurement 计算工做量 10 10
Postmortem &Process Improvement plan 过后总结,并提出过程改进计划 15 10

源代码

GitHub函数

相关文章
相关标签/搜索