201671030125 曾佳+《英文文本统计分析》结对项目报告
作者:互联网
项目 | 内容 |
---|---|
这个作业属于哪个课程? | 2016级计算机科学与工程学院软件工程(西北师范大学) |
这个作业的要求在哪里? | 实验四 软件工程结对项目 |
我在这个课程的目标是? | 熟悉软件开发整体流程,提升自身能力 |
本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程 |
本次项目代码 | GitHub链接 |
任务一:两两自由结对,对结对方的《实验二 软件工程个人项目》的项目成果进行评价
点评内容
博文结构排版布局层次分明,排版合理,是我该学习的地方。博文内容按照老师的要求以需求分析、功能设计、设计实现、测试运行、关键代码、总结、PSP展示的步骤分别书写,让阅读的人可以方便快捷、清楚明了地找到自己想看的部分。在PSP表中“计划共完成需要的时间”与“实际完成需要的时间”两列数据差别较大的是开发和具体编码两个阶段,并且都是实际完成需要的时间相比更多,我也有这个问题,分析原因可能是对JAVA编程不熟练,或是在编码运行过程中遇到了困难和阻碍。
点评心得
通过这次点评,我认识到自己的不足,排版不够美观大方,需要向同学学习,
任务二:采用两人合作方式,设计开发一个英文文本统计分析软件
需求分析
通过对项目要求的分析,本次结对项目的需求为:
(1)实验2要求的功能;
(2)绘制单词频数可视化柱状图;
(3)统计该文本行数及字符数;
(4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(5)可处理任意用户导入的任意英文文本;
(6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(7)附加分功能:统计文本中除冠词、代词、介词之外的高频词。软件设计:使用类图
核心功能代码展示:展示核心功能代码
计算查询单词词频的时间
long time=System.currentTimeMillis() - start;
JOptionPane.showConfirmDialog(null,print+"\n"+"所用时间为:"+(System.currentTimeMillis() - start)+"ms","结果",JOptionPane.DEFAULT_OPTION);
Histogram histogram=new Histogram(map1,input.length);
统计文本行数、字符数、大小写字母、汉字、数字、字节数等功能
while ((str = in.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
i++;//每循环一次就进行一次自增,用于统计文本行数
c += str.length();//用于统计总字符数
byte[] bytes=str.getBytes();//求出该行的字节数组
d += bytes.length;//用于统计总字节数
for (int j = 0; j < str.length(); j++) {//for循环的条件,当j小于该行长度时就一直循环并自增
b = Character.toString(str.charAt(j));//返回一个字符串对象
if (b.matches("[\\u4e00-\\u9fa5]")) {//if语句的条件,判断是否为汉字
c1++;//若为汉字则c1自增
} else if(b.matches("[A-Z]")){//if语句的条件,判断是否为大写字母
c2++;//若为大写字母则c2自增
} else if(b.matches("[a-z]")){//if语句的条件,判断是否为小写字母
c3++;//若为小写字母则c3自增
} else if(b.matches("[0-9]")){//if语句的条件,判断是否为数字
c4++;//若为数字则c4自增
} else {//否则可判断为其他字符
c5++;//若为其他字符则c5自增
}
}
词频柱状图部分代码
public void paint(Graphics g)
{
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.BLACK);
for(int i=0;i<rulerStep;i++){
g2.drawString((30000-1500*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据
}
g2.setColor(Color.YELLOW);
int m=0;
for (Entry<String, Integer> entry : map.entrySet())
{
int value =entry.getValue();
int step = (m+1)*40;//设置每隔柱形图的水平间隔为40
g2.fillRoundRect(leftMargin+step*2,Height-value/50-5, 40, value, 40, 10);//绘制每个柱状条
g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5); //标识每个柱状条
m++;
}
}
- 程序运行:程序运行时每个功能界面截图
主界面
输入要查询词频的单词,用“,”隔开。
点击输出词频和柱状图,显示单词及词频数,以及运行时间
点击确定后弹出柱状图界面
输入要查询的高频词个数
点击输出前N个高频词,弹出单词及词频个数,以及运行时间
点击词频导出到文件,弹出运行时间
点击确定后弹出“写入文件成功...”
点击各项统计,弹出统计的文本行数、字符数、大小写字母、汉字、数字、字节数及运行时间等
将单词及词频按字典顺序输出到文件中
结对的过程
1.在实验二的基础上,分析了还需实现的功能。
2.我们分开实现了文本行数和字符数和计时功能,我负责统计文本行数和字符数。
3.最后的GUI界面由我们两人共同编写。结对作业的PSP
PSP2.1 | 任务内容 | 计划完成时间(min) | 实际完成时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 10 |
Estimate | 规划工作步骤 | 8 | 10 |
Development | 开发 | 130 | 150 |
Analysis | 需求分析 | 18 | 20 |
Design Spec | 生成文档 | 10 | 12 |
Design Review | 设计复审 | 15 | 10 |
Coding Standard | 代码规范 | 20 | 15 |
Design | 具体设计 | 15 | 20 |
Coding | 具体编码 | 250 | 280 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试 | 25 | 30 |
Reporting | 报告 | 20 | 20 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工作量 | 12 | 15 |
Postmortem & Process Improvement Plan | 事后总结 | 20 | 20 |
标签:结对,20,int,曾佳,自增,201671030125,++,词频,文本 来源: https://www.cnblogs.com/zj-0408/p/10576338.html