201671010450姚玉婷-实验四结对项目
项目 | 内容 |
---|---|
所属科目 | 软件工程http://www.cnblogs.com/nwnu-daizh |
作业要求 | https://www.cnblogs.com/nwnu-daizh/p/10569690.html |
课程目标 | 1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。 2)熟练掌握Github上增量发布软件操作方法,参考文章(点击此链接) 3)掌握人机交互界面的实现(如GUI界面实现,WEB页面,APP页面等) |
任务一:博客互评
- 点击博客链接:https://www.cnblogs.com/nwnu-daizh/p/10569690.html
- 点评github链接地址:https://github.com/MLS123456/WordCount
- 点评内容:首先,提交到Github上的项目必须包含src文件夹,你的没有符合要求。还有,功能也暂时未实现全,比如柱状图的实现。还有如果在博客内容上添加用到的类,函数,以及每个函数实现的功能,就更好了。截图欠缺了你result.txt的截图,看到你的此功能已经实现,可以加一下此张截图。代码部分还有待提高,努力。但是,从博文的整体效果来看,还是比较好的,词频的统计,字典排序,输出到Result.txt这些功能都已经实现,但是你的类只有一个,你可以分几个类,分别实现对应功能,然后一个测试类或者主函数类。这样代码结构就比较清晰完美。程序是在控制台输出运行结果,希望在下次结对作业中,能够实现人机交互。加油!
- 评价心得:看到她的博客,同样,我也出现了跟他同样的问题,提交到Github上的项目必须包含src文件夹,没有把每个实现功能的截图都放入博客,我的柱状图也为实现,尝试着写代码去实现此功能,但是程序出错,未能修改成功。希望在这次结对作业中能够尽自己最大的努力去做好此次实验。
任务二:《英文词频统计》结对项目
一、需求分析
- 实验2要求的功能;
- 单词频数可视化柱状图要求是以下样式:
- 统计该文本行数及字符数;
- 各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
- 人机交互界面要求GUI界面(WEB页面、APP页面都可);
附加功能:
1)统计文本中除冠词、代词、介词之外的高频词;
2)统计前10个两个单词组成的词组频率。
二、软件设计:使用类图
1)在本次项目中所用到的类
- ByValueComparator:该类实现次品的比较。
- FileProccessing:用于文件的处理,如文件的上传,显示等。
- WordFrequencyCount:此类实现字频数的统计。
2)在本次项目中所用到的Jsp界面
- FileUpload.jsp:这是此次项目的主界面,用于柱状图的显示,文件的选择,时间的显示等
- FileDownload.jsp:文件上传成功界面,用于显示词频统计的结果。
三、开发工具
||
|:--|:--|
|操作系统|Widnows 7|
|开发工具|Eclipse |
|JDK版本|1.8|
|web服务器|Tomcat 8.0|
|Web网页设计|HBulider PS sublime|
|流程图设计|迅捷流程图制作软件|
四、核心代码展示
1)词频统计显示在web界面
<% String juge = (String)request.getAttribute("message");
if(!juge.startsWith("Error")) {%>
统计结果:<br />
<%FileReader filePrint = new FileReader("D:\\Project\\workspace\\CountWeb\\Result.txt");
BufferedReader br = new BufferedReader(filePrint);
for(int i = 0;i<14;i++){%>
<%=br.readLine()%><br />
<% }
br.close();
filePrint.close();
%>
<br>
<a href="D:\Project\workspace\CountWeb\Result.txt">查看Result文件</a>
<%} %>
2)词频比较(高频单词显示)
public class ByValueComparator implements Comparator<Entry<String,Integer>> {
Map<String, Integer> hashmap;
public ByValueComparator(Map<String, Integer> hm) {
this.hashmap = hm;
}
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
if (o1.getValue().compareTo(o2.getValue()) == -1) {
return 1;
} else if (o1.getValue().compareTo(o2.getValue()) == 0) {
return o1.getKey().compareTo(o2.getKey());
} else {
return -1;
}
3)上传数据及保存文件
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 检测是否为多媒体上传
if (!ServletFileUpload.isMultipartContent(request)) {
// 如果不是则停止
PrintWriter writer = response.getWriter();
writer.println("文件类型有误: 表单必须包含 enctype=multipart/form-data");
writer.flush();
return;
}
五、运行截图
1.主界面
2.文件上传成功
3.计时上传
4.显示统计结果
5.柱状图显示
6.result.txt文件
7.统计行数显示
六、两人合作
||
|:--|:--|
|结对对方姓名|马丽莎|
|对方博客链接地址|地址:https://www.cnblogs.com/MALIS/p/10612563.html|
|对方github链接地址|地址:https://github.com/MLS123456/CountWeb|
结对项目过程:
1)项目开发过程照片
2)项目开发过程
在这次结对项目中,两个人做了需求分析,然后使用web编程的方式来实现英文词频的统计。我的结对人马丽莎主要负责前端的设计(jsp)界面的设计,而我负责后台代码的编写,在此次实验中,花费的时间要比上次实验要多。但是这次是结对项目,相对而言,要比个人项目省时省力。
七、psp
||||
|:--|:--|:--|:--|
|PSP2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)
|Planning|计划|10|8
|Estimate|估计这个任务需要的时间,并规划大致工作步骤|10|15
|Development|开发|180|280
|Analysis|需求分析(包括学习新技术)|6|5
|Design Spec|生成设计文档|30|35
|Design Review|设计复审|15|20
|Coding Standard|代码规范(为目前的开发制作合适的规范)|3|5
|Design|具体设计|10|15
|Coding|具体编码|300|320
|Code Review|代码复审|5|6
|Test|测试(自我测试、修改代码,提交修改)|8|9
|Reporting|报告|9|10
|Test Report|测试报告|30|35
|Size Measurement|事后总结,并提出过程改进计划|5|5
八、总结
|
|-------|
| 此次结对项目是在实验二的基础上增加一些新的功能要求,以及使用人机交互界面的形式展现出来。由于我两对GUI编程都不熟悉,所以,最后使用了web界面的形式来展现。在这次结对项目中,使用了前台跟后台的交互,以及Tomcat的使用。总之,花费了许多时间来完成此次项目的实现。相对于上次个人项目的开发,此次结对项目就相对而言比较省时省力。但与此同时,也取决于两人的合作跟默契程度。