博文简要信息表
项目 | 内容 |
这个作业属于哪个课程 | |
这个作业的要求在哪里 | |
课程学习目标 | 熟悉软件开发整体流程,提升自身能力。 |
本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程 |
任务一
点评地址 | |
点评内容 | 博文结构清晰,层次分明。文档编制很有条理,从需求分析到最后的PSP环环紧扣。但是在内容上还有些欠缺,高频词统计没有实现。但是实现了柱状图,柱状图大部分同学都没有实现,也包括我,所以要向你多多请教了。除了一个功能没有实现外,博文内容整体上还是很完整的。此外,在人机交互界面上,还需要完善,整体上并不美观。在PSP中可以很明显的看到实际的编程开发过程所用的时间远远超出了预计的时间。究其原因,主要还是因为首次进行项目编程,并且好多技术都要重新学习,导致占用了较多时间。这个在下一次PSP中可以借鉴本次经验,尽量放宽开发编程的时间。 |
点评心得 | 她的博文整体结构清晰,内容充分。对比我俩的博文,我发现她的柱状图实现的较好,就是对于作业的完成度较高,而我的博文中有流程图设计,在结构流程上看起来更加清晰。所以要多多借鉴他人的经验,看到亮点。不断完善,合作探究。 |
任务二
1.需求分析
- 1.程序要能够读入英文文本,并且要求此文本不能为空。
- 2.程序能容纳的英文单词要在10万以上。
- 3.程序要能输入想查找的一个或者多个英文单词,并且统计出它出现的次数,并且把它的统计结果以柱状图的形式显示出来。
- 4.程序运行结果自动显示该文本的单词总数和每个单词出现的频率。把单词数和词频数按照字典顺序输出到文件result.txt。
- 5.当在键盘输入高频词的个数k后,进行程序统计功能运行,之后要按照词频数降序排列显示在k之前的每个单词的数量和单词。
- 6.实现java后台与前端的交互。
|
2.软件设计:使用类图
3.核心功能代码展示:展示核心功能代码
//开始时间 long startTime=System.currentTimeMillis(); TreeMap map1 = new TreeMap (); WordCount wordCount = new WordCount(); map1= wordCount.bijiao(map, words); //结束时间 long endTime=System.currentTimeMillis(); float excTime=(float)((endTime-startTime)/1000)*1000; //向jsp页面传参数 request.setAttribute("map1", map1); request.setAttribute("excTime", excTime); System.out.println("执行时间:"+excTime+"ms"); request.getRequestDispatcher("index.jsp").forward(request, response);//重定向 }else if(id.equals("2")){ //高频词的统计 //开始时间 long startTime=System.currentTimeMillis(); WordCount wordCount = new WordCount(); int k=Integer.parseInt(wordnum); ArrayList gaopin=wordCount.gaopin(map, k); //结束时间 long endTime=System.currentTimeMillis(); float excTime2=(float)((endTime-startTime)/1000)*1000; request.setAttribute("gaopin", gaopin); request.setAttribute("excTime2", excTime2); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); }else if(id.equals("3")){ //行数统计 //开始时间 long startTime=System.currentTimeMillis(); WordCount wordCount = new WordCount(); List list=wordCount.statistics(fileName); //结束时间 long endTime=System.currentTimeMillis(); float excTime3=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime3", excTime3); request.setAttribute("list", list); request.getRequestDispatcher("html/index.jsp").forward(request, response); } }
/* 获取文件名的函数 */ function one() { var fileName = document.getElementById("file").value; location.href = "../WordCountServlet?fileName=" + fileName + "&id=0"; } function two() { var word = document.getElementById("word").value; location.href = "../WordCountServlet?word=" + word + "&id=1"; } function three() { var wordnum = document.getElementById("wordnum").value; location.href = "../WordCountServlet?wordnum=" + wordnum + "&id=2"; } function four() { var wordlines = document.getElementById("wordlines").value; location.href = "../WordCountServlet?wordlines=" + wordlines + "&id=3"; } function five() { var result = document.getElementById("result").value; location.href = "../WordCountServlet?result=" + result + "&id=4"; }
4. 程序运行:程序运行时每个功能界面截图
|
5. 结对照片
我的搭档是孙苗坤,在合作过程中她主要负责的是前段页面的设计。我负责修改完善代码,然后画出类图的雏形,然后在这个基础上我俩再进行讨论完善彼此的成果。然后是接口的具体设计,查阅资料并筛选之后,最终使用一个特殊类作为接口。 |
6.总结
在本次团队项目合作中,我们首先是互相评论了彼此的上一次作业,找到了优点和不足,用于本次试验完成时要借鉴的技术和改正的地方。先找到不足,然后改正。接着我们规划了要实施的步骤,首先完成任务一,因为相对来说简单些,也只有在任务一完成的基础上才能开始任务二的作业。接着是任务二的需求分析,相对来说较简单,就是在实验二的基础上加上前端界面。然后是概要设计和详细设计,我们是打算放在一起进行的,主要设计程序的类和各个模块,以及各个模块之间的交互,还有Java后台和前端的交互。在后台和前端交互的时候,因为不知道要用什么接口合适,所以我们查找了很多的资料,看到可以用数据库,也可以用json,ajax等,最终选择了一个特殊的类servlet作为实现java后台和前端的交互。在这个过程中花费了大量时间。本次实验中我和搭档合作探究,过程很愉快,更体会到了团队意识的重要性。 |
PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 15 | 15 |
· Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 15 |
Development | 开发 | 146 | 218 |
·· Analysis | 需求分析 (包括学习新技术) | 160 | 200 |
· Design Spec | · 生成设计文档 | 25 | 35 |
· Design Review | · 设计复审 | 10 | 15 |
· Coding Standard | 代码规范 | 20 | 20 |
· Design | 具体设计 | 30 | 50 |
· Coding | 具体编码 | 200 | 300 |
· Code Review | · 代码复审 | 15 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 25 | 30 |
·· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 30 | 35 |