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的使用。总之,花费了许多时间来完成此次项目的实现。相对于上次个人项目的开发,此次结对项目就相对而言比较省时省力。但与此同时,也取决于两人的合作跟默契程度。

九、GitHub仓库地址

该项目仓库地址

posted @ 2019-03-21 09:19  姚玉婷  阅读(347)  评论(3编辑  收藏  举报