项目 | 内容 |
该作业所属课程 | 任课教师博主主页链接 |
作业要求 | 实验四 软件工程结队项目 |
课程学习目标 | 熟悉软件开发整体流程,提升自身能力 |
本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程 |
项目源码 | (https://github.com/Z-zt/shiyan4) |
任务一
- 点评博客地址和点评内容:
- [点评博客地址](https://www.cnblogs.com/XL1105/p/10556116.html)[GitHub链接地址](https://github.com/XL1105/xlproject/blob/master/CiPin.zip)
点评内容:首先你的博文结构有条有理,项目要实现什么,该怎么实现每一个步骤你都表达得很清晰,能看出你在前期也做足了相关的准备,但是我个人有点小小的建议就是你可以把你的标题字号稍微放小一点就看上去更美观和谐一点。还有一点就是你在博文内容上面应该简单阐述一下你的模块化设计是怎么实现的就更好了,我简单分析了一下你的PSP表,我发现你在开发和具体编码两个环节中,计划完成时间和实际完成时间一共相差了80分钟,我想应该是编程能力影响了你的进展速度,我也是由于编程基础薄弱,才导致我的实际完成时间和计划时间有很大的落差,所以我们一起学习,慢慢进步,我相信总会有收获的。最后通过运行你的程序,我发现你的词频统计以柱状图的形式显示出来的这一功能是很值得我去学习的,下来我们可以一起交流一下,互相学习,共同进步!
- [点评博客地址](https://www.cnblogs.com/XL1105/p/10556116.html)[GitHub链接地址](https://github.com/XL1105/xlproject/blob/master/CiPin.zip)
- 点评心得
- 通过互相的博客点评,PSP的互相对比,我发现我还有很多不足的地方,其中最大的问题就是由于我的编程基础太薄弱,所以直接影响到我的项目进展。在本次的博客点评过程中,我也发现了对方的很多优点值得我去学习,比如在博文结构上对方的显然结构更为清晰,条理明确,在项目的功能上她的也更为完善,由于我的编程能力有限,所以我并没有实现该功能,通过在我的机子上运行对方的源码,我发现她在这以功能上做的很好,所以在下来之后我也认真向对方请教了一番。对于互相的博客点评,我觉得很有必要,我认为这样可以使我们互相取长补短,发现对方的闪光点,并且向对方去学习,弥补自己的不足。
任务二
需求分析
- 实验2要求的功能;
- 实现单词频数可视化柱状图;
- 统计该文本行数及字符数;
- 各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
- 可处理任意用户导入的任意英文文本;
- 人机交互界面要求GUI界面(WEB页面、APP页面都可);
- 附加功能:统计文本中除冠词、代词、介词之外的高频词;
- 附加功能:统计前10个两个单词组成的词组频率。
软件设计
核心功能代码展示
- 显示程序所消耗时间
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("
文件行数: " + line);
TreeMap<Character, Integer> tm = Pross(sb.toString());
System.out.println("
字符统计结果为:" + 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();
}
程序运行结果
- 初始化界面
- 程序运行消耗时间结果显示图
- 文件行数显示
结对过程
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 |