项目 | 内容 |
---|---|
项目名称 | 实验四 英文文本统计分析 |
Github的仓库主页 | https://github.com/HaiYou667/WordCount_Analysis |
所属课程 | http://www.cnblogs.com/nwnu-daizh/ |
做业要求 | 实验四 软件工程结对项目 |
课程学习目标 | 体验两人合做,练习结对编程; 掌握Github上增量发布软件的操做方法 |
点评对象 :201671010434王雯涵
点评做业的地址 :http://www.javashuo.com/article/p-rmlcutft-ce.html
点评内容 :
博文的结构基本符合实验要求。博文内容:存在一些小问题:在设计实现虽然列出了功能设计个程序流程图,可是对于流程图中的方法没有必要的说明。只列出了psp,若是能对PSP进行分析和思考就更好了。从你的psp能够看出,在具体编码阶段耗费了大量时间,需求分析,具体编码和测试的实际用时都超出预期不少,这说明在这些开发阶段还有待提升。以前下载运行了你的我的项目代码,代码还算规范,功能方面除了柱状图其余也基本符合要求,但愿后期能获得完善。
点评心得:
从个人博文和结对队友王雯涵的项目对比能够看出,咱们对于设计阶段的内容都不够详细,应该更具体的描述该系统的设计,而且对涉及到的类或方法进行要进行必要说明。在具体编码中,个人代码不够规范,对于一些类型和方法名起的过于简单,不可以直接明了的体现出类或方法的含义,让人不容易理解,然而王雯涵在这方面作的很好,因此在实验四中,我会弥补实验二中的不足,让代码更规范。html
本次实验任务是在实验二我的软件项目的基础上实现英文文本的统计分析。
因此本次实验的需求除了实验二所提到的还需实现下列需求:git
根据需求分析中提到的内容,本程序中设计如下几个功能:github
计算实现各类功能的消耗时间
web
Count1类用于对文件获取和处理,它里面主要有三个方法,其中:编程
wordCountMain类用于处理前台页面中的用户请求,它里面主要有五个方法,其中:浏览器
1.启动Tomcat服务器,在浏览器中输入访问地址,进入主界面
服务器
2.选择功能选项1:统计词频个数,可输入任意文本文件地址
jsp
3.显示词频总数,统计结果及其消耗时间
学习
4.选择功能选项2:统计指定单词词频个数
测试
5.选择功能选项3:查询k个高频词的词频及其统计图
6.选择功能选项4:统计指定文本中的行数及其消耗时间
7.选择功能选项5:统计指定文件中的字符数及其消耗时间
1.统计给定单词词频
private void givenWordCount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Count1 c1=new Count1(); c1.wcount(file); List<Map.Entry<String, Integer>> ordlist = new ArrayList<Map.Entry<String,Integer>>(c1.map.entrySet()); //排序 Collections.sort(ordlist,c1.valcom); String givenword=request.getParameter("givenword"); String word=""; int count=0; int flag=1; //查询统计给定单词词频 for (Map.Entry<String, Integer> entry : ordlist) { if(entry.getKey().equals(givenword)){ word=entry.getKey(); count=entry.getValue(); flag=1; break; }else{ flag=0; } } if(flag==1){ System.out.println("该单词"+word+"出现的个数为:"+count); }else{ System.out.println("对不起文章中没有出现该单词!"); } request.setAttribute("givenword", givenword); request.setAttribute("word", word); request.setAttribute("count", count); request.setAttribute("file", file); request.getRequestDispatcher("/html/givenWordCount.jsp").forward(request, response); }
2.统计k个高频词出现的次数
private void showHistogram(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { long startTime=System.currentTimeMillis(); long totaltime=0; Count1 c1=new Count1(); c1.wcount(file); List<Map.Entry<String, Integer>> ordlist = new ArrayList<Map.Entry<String,Integer>>(c1.map.entrySet()); //排序 Collections.sort(ordlist,c1.valcom); Integer k=Integer.parseInt(request.getParameter("wordnumber")); int num=k; Map<String,Integer> map = new HashMap<String, Integer>(); if(k>0&&k<=ordlist.size()) { for (Map.Entry<String, Integer> entry : ordlist) { map.put(entry.getKey(), entry.getValue()); if(--k==0) break; } }else{ System.out.println("输入有误!请从新输入!"); } long endTime=System.currentTimeMillis(); totaltime=endTime-startTime; request.setAttribute("totaltime", totaltime); request.setAttribute("ordlist", map); request.setAttribute("k", num); request.setAttribute("file", file); request.getRequestDispatcher("/html/HighFrequencyWordsAndHistogram.jsp").forward(request, response); }
第一次尝试两人合做的软件开发模式,刚开始很是的不适应,在结对编程的时候由于两我的的编码习惯不一样,思惟方式也不一样,会出现意见不一致,矛盾争吵等问题,但慢慢的熟悉以后就会发现结对编程其实也有好多好处,我以为最大的好处就是减小了代码出错的几率。一我的编程时总会出现一些细小又不易察觉的错误,但两人结对时,对方就会注意到这些小问题而且及时指出,从而减小了出错的几率。
下面是咱们结对编程过程情景:
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 5 | 6 |
•Estimate | • 估计这个任务须要多少时间,并规划大体工做步骤 | 5 | 6 |
Development | 开发 | 562 | 591 |
••Analysis | 需求分析 (包括学习新技术) | 10 | 15 |
•Design Spec | • 生成设计文档 | 5 | 7 |
•Design Review | • 设计复审 (和同事审核设计文档) | 5 | 7 |
•Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 7 | 7 |
•Design | 具体设计 | 10 | 10 |
•Coding | 具体编码 | 500 | 510 |
•Code Review | • 代码复审 | 5 | 10 |
•Test | • 测试(自我测试,修改代码,提交修改) | 20 | 25 |
Reporting | 报告 | 15 | 15 |
••Test R1eport | • 测试报告 | 4 | 3 |
•Size Measurement | 计算工做量 | 5 | 6 |
•Postmortem & Process Improvement Plan | • 过后总结 ,并提出过程改进计划 | 6 | 6 |
对PSP分析和总结: 对比上次的我的项目PSP,能够看出本次实验在计划,需求分析等方面的用时都相对减小,由于部分需求以前已分析过。本次项目是在上次项目的基础上实现,按理说在具体编码方面应用时更少才对,但实际却偏偏相反,主要缘由是本次实验要实现基于web的人机交互,而我对于web项目又比较生疏,要实现又至关于从新学习一遍,这期间遇到了许多问题像Eclipse中服务器的配置,Tomcat服务器没法启动,服务器运行显示端口占用,web项目jsp报错,el表达式的使用,还有Echarts的学习等等,因此在这方面耗费了大量时间,但通过本身一步一步遇到问题,解决问题仍是感受挺有成就的,日后须要更加努力。