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

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

项目 内容
这个作业属于哪个课程
这个作业的要求在哪里
课程学习目标 熟悉软件开发整体流程,提升自身能力
本次作业在哪个具体方面帮助我们实现目标 第一次体验一个完整的工程

任务一:结对方的实验二的项目成果评价

(一)点评作业的博客地址

(二)点评作业的github链接地址

(三)按代码规范修改结对方代码链接地址

(四)点评内容

在博文结构方面,整体结构较为完整,功能设计的内容详细,对需求进行了认真的分析,方便之后的工作开展,测试运行部分能给出相应功能的实现结果,且运行界面对功能的说明清晰。在设计实现部分,没有体现出清晰的功能调用和函数之间的逻辑关系,内容稍简单。通过PSP表的数据,你在需求分析阶段用了较多的时间,有意识到分析的重要性,在编码和测试阶段用时较计划时间长,可能逻辑还没有清晰,处在一个试的过程。

在具体代码方面,功能和菜单功能的实现能独立编写,有较好的模块性,但可以分的在细一些,代码的规范性还有待提高,比如你的类名一个是Functions,另一个是Function,这都表示功能,但我想要看相应功能的代码,到底应该看哪个呢,类中有些变量名的定义有些随便。在功能实现方面,能和用户进行一定的交互,词频统计和柱状图显示做的很好,但是向文件写入的顺序是按字母表顺序,不是按词频顺序,希望通过第四次实验我们能够一起完善这部分的代码。

(五)点评心得

通过本次点评,了解了结对方的代码书写风格和功能逻辑,为任务二的开展定下基础,发现了结对方在博客书写,代码编写上的优点,通过学习注意到自己以后编写时要改进的问题,通过发现不足起到自省和相互学习的目的,有些不足是我们同时都存在的,那么在接下来结对编程时更加注意,相互提醒,使得本次项目更加的完善和规范,功能不完善的地方也需要共同讨论完成。

任务二:英文文本统计分析软件

(一)需求分析

通过对项目要求的分析,本次结对项目的需求为:

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

(二)软件设计

1616083-20190401200907215-707611652.jpg

1.Main中主要是实现主界面和从文本中读入单词并统计词频,统计总行数和总单词数的功能

2.WordCountStatistics实现查询指定单词词频的界面和功能
3.PrintToFile实现向文件按字典顺序写入词频单词的功能
4.因为本次实验中的附加功能1是实验二的查看前N个高频词的扩展,进行合并后HighFrequencyWords实现输出除介词、代词、冠词的用户指定查看的前N个高频词
5.WordCountHistogram实现单词词频柱状图显示
6.在所有功能中都有计时功能

(三)核心代码展示

1.输出除介词、代词、冠词的用户指定查看的前N个高频词

String str = "above, over,in,of,at,on,behind,during,from,into, onto,inside,outside,to,without,throughout,out,she,he,its,we,them,your,i,you,my,myeself,a,an,the";String s[] = str.split(",");                           ArrayList
> list = new ArrayList
>(maps.entrySet());//按词频排序 Collections.sort(list, new Comparator
>() { public int compare(Map.Entry
o1, Map.Entry
o2) { return o2.getValue() - o1.getValue(); } }); int j=0; int i=0; while (j

2.时间统计

long start = System.currentTimeMillis();JOptionPane.showConfirmDialog(null,print+"\n"+"所用时间:"+(System.currentTimeMillis() - start)+"ms","结果",JOptionPane.DEFAULT_OPTION);

3.柱状图显示

int Width = getWidth();int Height = getHeight();int leftMargin = 50;//柱形图左边界int topMargin = 50;//柱形图上边界Graphics2D g2 = (Graphics2D) g;int ruler = Height-topMargin;int rulerStep = ruler/20;//将当前的高度平分为20个单位g2.setColor(Color.WHITE);//绘制白色背景g2.fillRect(0, 0, Width, Height);//绘制矩形图g2.setColor(Color.LIGHT_GRAY);for(int i=0;i
entry : map.entrySet()) { int value =entry.getValue(); int step = (m+1)*40;//设置每隔柱形图的水平间隔为40 g2.fillRoundRect(leftMargin+step*2,Height-value/50, 40, value, 40, 10);//绘制每个柱状条 g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5); //标识每个柱状条 m++;}

(四)程序运行

1.主界面

1616083-20190401201206410-182690820.jpg

2.向文件按字典顺序写入单词词频,并显示所用时间

1616083-20190401201315300-1975401329.jpg

1616083-20190401201324935-1868875494.jpg

1616083-20190401201616186-352694164.jpg

3.统计总行数和单词数,并显示所用时间

1616083-20190401201658750-619625400.jpg

4.除介词、代词、冠词的用户指定查看的前N个高频词

1616083-20190401201830105-1556638176.jpg

1616083-20190401201841170-70583118.jpg

5.查询指定单词词频并显示柱状图

1616083-20190402153559479-572505567.jpg

1616083-20190402153608574-1632377960.jpg

1616083-20190402171731360-1382007939.jpg

(五)结对过程

1.根据共同列出本次结对实验的代码规范。

2.互相阅读对方的代码,了解对方代码编写习惯,并按照制定的代码规范改进对方代码。
3.一起讨论并填写PSP计划时间。
4.共同进行本次项目的需求分析和总体设计,尤其在实验二基础上新增的功能的实现。
5.由我主导GUI框架的搭建、统计行数单词数和运行时间显示部分,赵燕霞主导柱状图和附加功能的实现,在主导位置的互换过程中,另一人则进行对代码规范的监督和提醒,提供功能实现上的不同想法,之后选择出更好的思路,在出现Bug时,一起对代码进行阅读,找出逻辑错误。
6.整个项目完成后,两人共同根据代码规范进行复审,对多余的语句进行简化。
7.填写PSP实际所用时间。
8.撰写报告文档。
1616083-20190402195826389-1823014124.jpg

(六)PSP展示

任务内容 计划完成时间(min) 实际完成时间(min)
计划 10 7
规划工作步骤 10 7
开发 255 264
需求分析 10 9
生成文档 5 10
设计复审 15 10
代码规范 20 15
具体编码 180 200
代码复审 15 10
测试 10 10
报告 15 12
测试报告 5 7
计算报告量 5 2
事后总结 5 3

(七)结对项目总结

在本次结对编程的过程中,体会了合作编程的过程,通过相互的讨论和监督使得代码更规范,功能更完善,逻辑较为严谨,特别是在单元测试和代码复审时,能更快的发现代码的错误,结对编程的效率比较高,在代码规范方面,意识到随意编写的危害,读代码改代码都很费劲,在按编写规范写程序后,逐渐改善了这种情况,但在结对编程中也遇到了问题,比如刚开始分工上打算一人主导一人辅助,但发现主导的人思维有时会混乱,所以就交换充当主导者的角色;在编程的过程中经常会出现都感觉自己的想法是对的,这样使得讨论陷入僵局,这时我们采用独自编程的方法,最后谁的能较好实现功能就用哪个。

(八)结对项目源代码

转载于:https://www.cnblogs.com/zhoulin52/p/10634558.html

你可能感兴趣的文章
SegmentFault 社区访谈 | 有位公子在奇舞
查看>>
jQuery源码分析之jQuery的定义
查看>>
一些经典面试题分析(上)
查看>>
[JS相关的记录01] 那什么来面对你,面向对象编程(__proto__,prototype,constructor以及原型链)...
查看>>
夏日葵电商:搭建一个商城系统,N+功能方案揭秘!
查看>>
Akka系列(一):Akka简介与Actor模型
查看>>
yii2获得从数据库获得数据的方法并处理
查看>>
Android开发百度地图(一)之初体验
查看>>
微服务指南走北(四):你不愿意做微服务架构的十个理由
查看>>
CSS代码重构与优化之路
查看>>
使用 sigprocmask 和 sigpending 在程序正文中捕获和处理信号
查看>>
Bodymovin插件的使用
查看>>
详细深入分析 Java ClassLoader 工作机制
查看>>
关于设计模式
查看>>
对一个“老”架构的重新思考
查看>>
DoubanFMPlayer, A mimic of Douban.fm player
查看>>
埃森哲、亚马逊和万事达卡抱团推出的区块链项目有何神通?
查看>>
2019年自动驾驶5大趋势预测:第一台Level 5 无人车问世
查看>>
后APP时代的破局之路 :阿里技术“三大容器五大方案”亮相,百川开放全面升级...
查看>>
工欲善其事-必先利其器之终端
查看>>