项目 | 内容 |
---|---|
做业所属课程 | 西北师范大学软件工程 |
做业的要求 | 实验四软件工程结对项目 |
课程学习目标 | 熟悉软件开发总体流程,提高自身能力 |
本次做业的意义 | 第一次体验一个完整的工程 |
点评博客(点评连接),点评内容以下:html
你的博文结构总体思路很清晰,博文内容简单明了,博文结构中的总体思路和PSP中“任务内容”列的思路一致。从需求分析到测试总结,每一个环节都用文字或者图标的形式给出了整个项目较为完整的思路。经过分析你的PSP,在PSP中“计划共完成须要的时间”与“实际完成须要的时间”仍是有必定的差距。在生成文档等这样的任务中实际花费的时间就比计划花费的时间少,这说明你在编写文档的方面仍是颇有优点的,而在编码这样的任务中实际和计划的时间就相差有点大,这说明你的编码能力还有待提升。
你的代码结构清楚,在实现题目要求的功能时有一个欠缺的地方是:当你输入一个该文本中没有的单词时,系统不会有任何提示而是继续显示菜单栏进行功能选择。除此以外,我发现咱们在柱状图的实现上都有必定欠缺,我相信通过咱们的结对合做必定能够改进这个问题的!git点评心得:github
在结对以前经过阅读对方的博客内容以及运行对方项目的代码能够学习到不少东西。能够学习对方好的优秀的编码习惯,能够提高自身的编码能力。编程
a.实验二的功能
b.完善实验2中的统计图功能
c.统计该文本行数及字符数
d.各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
e.可处理任意用户导入的任意英文文本
f.人机交互界面要求GUI界面
g.统计文本中除冠词、代词、介词以外的高频词
h.统计前10个两个单词组成的词组频率学习
a.统计图功能测试
public void paint(Graphics g) { int Width = getWidth(); int Height = getHeight(); int leftMargin = 20;//柱形图左边界 int topMargin = 50;//柱形图上边界 Graphics2D g2 = (Graphics2D) g; int ruler = Height-topMargin; int rulerStep = ruler/20;//将当前的高度平分为20个单位 g2.setColor(Color.PINK);//绘制白色背景 g2.fillRect(0, 0, Width, Height);//绘制矩形图 g2.setColor(Color.BLACK); g.setColor(Color.gray); for(int i=0;i<=100;i+=5){//绘制灰色横线 g2.drawLine(5, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//绘制灰色横线 } for(int i=0;i<rulerStep;i++){ g2.drawString((35000-2000*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据 } g2.setColor(Color.black); 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++; } }
b.统计文本行数及字符数功能编码
lineWordCount.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if (event.getSource()==lineWordCount) { try { FileName(map); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } JOptionPane.showMessageDialog(null,"Lines:"+rowNumber+"\n"+"WordsNumber:"+wordNumber+"\n"+"Time:"+time+"ms","Result",JOptionPane.INFORMATION_MESSAGE); } } });
c.按字典顺序排列设计
/**按字典顺序排序*/ void Sort(Map<String, Integer> map) { Set<Entry<String,Integer>> m= map.entrySet(); LinkedList<Entry<String, Integer>> List = new LinkedList<Entry<String,Integer>>(m); Collections.sort(List, new Comparator<Entry<String,Integer>>() { public int compare(Entry<String, Integer> a, Entry<String, Integer> b) { return a.getKey().compareTo(b.getKey()); } }); for (Entry<String,Integer> entry: List) { Map.put(entry.getKey(), entry.getValue()); } }
a.可视界面测试截图
b.实验2功能测试截图
输出前N个高频词
统计高频词
将结果写入文件
c.统计图测试截图
统计高频词
d.统计文本行数及字符数测试截图
3d
在开始结对编程项目以前,咱们先一块儿学习了何为结对编程,以便双方可以在这次结对项目中把握好本身的角色。在这以后,咱们阅读了对方的代码,并对对方的编码习惯和编码能力进行了必定的了解。通过双方讨论,咱们约定了必定的代码规范。结合咱们自身的编码能力,咱们对PSP的计划部分进行了认真的规划,但在实施过程当中,咱们解决问题的办法是一块儿讨论解决办法,并对某一功能分别担任设计、编码和测试和复审的角色。在此次结对项目的合做中我体会到了合做沟通的重要性,双方对于问题的解决要进行及时有效的沟通便能事半功倍!代码规范
psp | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 15 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 20 | 20 |
Development | 开发 | 200 | 230 |
Analysis | 需求分析 | 15 | 10 |
Design Spec | 生成设计文档 | 30 | 25 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 | 20 | 15 |
Design | 具体设计 | 20 | 15 |
Coding | 具体编码 | 150 | 200 |
Code Review | 代码复审 | 20 | 15 |
Test | 测试 | 10 | 15 |
Reporting | 报告 | 30 | 25 |
Size Measurement | 计算工做量 | 5 | 3 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 10 | 1 |