博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201671030116宋菲菲 《英文文本统计分析》结对项目报告
阅读量:6256 次
发布时间:2019-06-22

本文共 3987 字,大约阅读时间需要 13 分钟。

信息表:

项目 内容
作业所属课程
作业要求
课程学习目标 熟悉软件开发整体流程,提升自身能力
帮助实现目标 第一次体验一个完整的工程

任务1

【 】

【 】

  • 点评内容:通过阅读你的博文,我认为你的博文的结构不是很清晰,没有充分利用Markdown编辑的特点,我建议可以将每个模块用加粗字体或副标题加以区分。博客内容很简练。通过浏览你的PSP,发现你的计划时间与实际运行时间几乎相同,我认为你的计划做得很到位,但是看了实际的代码运行结果,我发现你的很多功能都没有实现,希望下次可以继续努力,完善项目。
  • 点评心得:阅读完这位同学的博文,我认为她对时间的把控能力很好,PSP表可以看出是一个很会计划时间的人,这一点值得我去学习。但是她的部分任务没有完善,希望这次的结对项目对她有所帮助,也希望通过这次的结对项目,相互学习,共同进步。

任务2

【 】

1.需求分析

  • (1)实验2要求的功能;
  • (2)单词频数可视化柱状图:
  • (3)统计该文本行数及字符数;
  • (4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
  • (5)可处理任意用户导入的任意英文文本;
  • (6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
  • (7)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
  • (8)附加分功能:统计前10个两个单词组成的词组频率。

2.软件设计

项目主要包含三个类,一个是主函数Main,一个是统计单词的类SortResult,还有一个是绘制柱状图paint。

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

3.核心功能代码展示

除去冠词、代词、介词两种方法

直接删除

int i,j;    for(j=0;j

新建一个Map存放删选后的单词映射:

Map
map1=new LinkedHashMap
(); for(Entry
m: map) { for(i=0;i
=Eword.size()) { map1.put(m.getKey(), m.getValue()); } } Set
> Map1=map1.entrySet(); LinkedList
> List = new LinkedList
>(Map1); //排序 Collections.sort(List, new Comparator
>() { @Override public int compare(Entry
wk1, Entry
wk2) { return wk1.getKey().compareTo(wk2.getKey()); } });

原本的代码实现在paint中画图显示,但是为了传参,new main()后显示出柱状图后会跳出Main函数的主框架

public paint(){    JFreeChart chart = ChartFactory.createBarChart3D(                    "词频统计",                         "单词",                         "数量",                        new Main().dataset,                         PlotOrientation.VERTICAL,                        true,                                 false,                        false                              );       CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象    CategoryAxis domainAxis=plot.getDomainAxis();         //水平底部列表     domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));         //水平底部标题     domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));  //垂直标题     ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状     rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));      chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));      chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//设置标题字体              frame1=new ChartPanel(chart,true);     }

为了解决问题,将建立图表信息的代码写入在main中,统计用户输入单词词频及绘制柱状图

for(i=0; i
entry : wordsStatistics.entrySet()) { if(input[i].equals(entry.getKey())) { map.put(entry.getKey(), entry.getValue()); print2+=entry.getKey()+":\n"; for(int j=0;j

统计行数、列数

while((read = br.readLine()) != null)    {          linenumber++;//行数        charnumber+=read.length();//字符数                for (String w:read.split("[^a-zA-Z]"))         {               if(w.length()!= 0)               {                   list.add(w);                 }            }      }

4.程序运行

程序运行前添加自定义jar包Libraries:

1616084-20190331094416195-2033930987.png

统计用户输入单词的词频,显示系统运行时间:

1616084-20190331094232560-484843341.png

生成相应的柱状图:

1616084-20190401084458013-517182686.png

若不退出程序继续查看其它单词词频,则柱状图将相应的单词柱状图添加到原有的图中:

1616084-20190401084513309-231290665.png

要除去的冠词、代词、介词:

1616084-20190331094342140-650641923.png

统计用户输入的n个文本中除冠词、代词、介词之外的高频词并显示运行时间:

1616084-20190331094348088-884133347.png

统计该文本行数、字符数及每个单词和相应的词频,并将其写入到文件中,生成result.txt文件:

1616084-20190331095510160-1437053096.png

5.结对过程:

1616084-20190402220656919-14191278.jpg

6.PSP

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

7.小结感受

这次的合作让我切身感受到结对项目的过程,让我体会到了交流沟通对结对合作的重要性,有时候两个人的想法会发生分歧,很好的沟通会使我们的效率变得更高。

分工明确会使项目进展较快,不会在同一个问题上浪费时间。遇到问题时,会相互沟通交流,解决问题。

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

你可能感兴趣的文章
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
安防大数据应用国家工程实验室在乌鲁木齐成立
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
[译] 全新 Android 注入器 : Dagger 2 (二)
查看>>
oracle的drop命令
查看>>
设计与梳理企业二级流程的路线方法
查看>>
Python正则表达式指南
查看>>
垃圾回收概念与算法
查看>>
TFS实现需求工作项自动级联保存
查看>>
springmvc 4.x 处理json 数据时中文乱码
查看>>
Python练习(day7)
查看>>
网络工程师笔试题总结
查看>>
C# DataTable的詳細用法
查看>>
飞舞的蝴蝶
查看>>
codeforces 6A. Triangle
查看>>
对Map按key和value分别排序
查看>>
Async Performance: Understanding the Costs of Async and Await
查看>>