任务一
- 点评博客地址和点评内容:
- 点评心得
- 通过互相的博客点评,PSP的互相对比,我发现我还有很多不足的地方,其中最大的问题就是由于我的编程基础太薄弱,所以直接影响到我的项目进展。在本次的博客点评过程中,我也发现了对方的很多优点值得我去学习,比如在博文结构上对方的显然结构更为清晰,条理明确,在项目的功能上她的也更为完善,由于我的编程能力有限,所以我并没有实现该功能,通过在我的机子上运行对方的源码,我发现她在这以功能上做的很好,所以在下来之后我也认真向对方请教了一番。对于互相的博客点评,我觉得很有必要,我认为这样可以使我们互相取长补短,发现对方的闪光点,并且向对方去学习,弥补自己的不足。
任务二
需求分析
- 实验2要求的功能;
- 实现单词频数可视化柱状图;
- 统计该文本行数及字符数;
- 各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
- 可处理任意用户导入的任意英文文本;
- 人机交互界面要求GUI界面(WEB页面、APP页面都可);
- 附加功能:统计文本中除冠词、代词、介词之外的高频词;
- 附加功能:统计前10个两个单词组成的词组频率。
软件设计
![1614551-20190403082554533-734765601.png](https://img2018.cnblogs.com/blog/1614551/201904/1614551-20190403082554533-734765601.png)
核心功能代码展示
for(Map.Entry<String, Integer> map : list) {
if(num <= sb.length()) {
bw.write("出现次数第" + num + "的单词为:" + map.getKey() + ",出现频率为" + map.getValue() + "次");
bw.newLine();
System.out.println(map.getKey() + ":" + map.getValue());
num++;
}
else break;
}
bw.write("耗时:" + (System.currentTimeMillis() - t1) + "ms");
br.close();
bw.close();
System.out.println("耗时:" + (System.currentTimeMillis() - t1) + "ms");
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件!");
} catch (IOException e) {
System.out.println("文件读取错误!");
}
public static void main(String[] args) {
BufferedReader br = null;
int line = 0;
String str = "";
StringBuffer sb = new StringBuffer();
try {
br = new BufferedReader(new FileReader("src/file.txt"));
while ((str = br.readLine()) != null) {
sb.append(str);
++line;
}
System.out.println("\n文件行数: " + line);
TreeMap<Character, Integer> tm = Pross(sb.toString());
System.out.println("\n字符统计结果为:" + tm);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
程序运行结果
结对过程
![1614551-20190403083949091-790126628.jpg](https://img2018.cnblogs.com/blog/1614551/201904/1614551-20190403083949091-790126628.jpg)
PSP
任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|
计划 | 15 | 20 |
估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 15 |
开发 | 300 | 350 |
需求分析 (包括学习新技术) | 200 | 220 |
生成设计文档 | 10 | 15 |
设计复审 (和同事审核设计文档) | 10 | 10 |
代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
具体设计 | 40 | 35 |
具体设编码 | 200 | 300 |
代码复审 | 15 | 20 |
测试(自我测试,修改代码,提交修改) | 40 | 35 |
报告 | 20 | 30 |
测试报告 | 8 | 8 |
具体设计 | 40 | 35 |
计算工作量 | 15 | 20 |
事后总结 ,并提出过程改进计划 | 10 | 15 |
小节感受:两人合作真的能够带来1+1>2的效果吗?通过这次结队合作,谈谈感受与体会。
- 通过本次实验,我得出的结论是在两个人配合默契的前提下,能达到1+1>2的效果,在结队的初期,我们配合的还算可以,实验进展的速度也还行,但是在中后期,由于两个人的能力有限,我们被卡在一个地方和长时间,所以这也是的为什么我们在开发和具体实施的环节耗费了那么多的时间。结队编程的优点就是两个人在合作的过程中可以互相学习,取长补短,两个人在合作时也能避免走许多弯路,都能起到监督的作用,发现问题也得以及时解决。但是我认为结队也有他的缺点,那就是两个人不够熟悉,在合作的过程中会有一个磨合的过程,但这个过程也降低了结队的进展速度。在本次实验后我们也认识到两个人最致命的缺点,那就是编程能力薄弱,所以整个实验设计的结果也不是很满意,所以当下的一个问题就是课后进行学习,努力提高编程能力。