评价博文连接:http://www.javashuo.com/article/p-whaerzlf-kn.html
1.缺点:博文结构不太清晰,排版能够在美化一些,博文的内容中对程序功能的描述不太齐全,能够在加一下本身作的软件功能的截图,博文结构设计凌乱,对一些功能的描述比较的浅。因为咱们之间没有养成对细致软件书写规范,在对PSP的设计与时间的掌握有着很大差异。
2.优势:功能实现的比较完整,对柱形图的实现也比较的完美。在博客中基体现了软件的各类需求,软件实现过程当中人机交互书写的比较的好。
评价源代码连接:https://github.com/runju/WordCount
1.优势:最值得表扬的是代码的规范,该同窗有着良好的书写代码的习惯,各类类与方法命名见名思意,有着良好书写代码的习惯
2.缺点:在代码方面须要注意的是功能模块的强化,对代码质量的提升,例如在封装类的时候注意封装的方法。html
在阅读完改同窗的代码与博客以后,值得我学习的地方是该同窗书写代码的习惯,对项目功能可以见名思意,因为是咱们结对须要完成的做业,也在评价该同窗代码的时候向改同窗请教了一些我本身不足的问题。
GitHub的使用过程当中存在的一些问题:
对GitHub的不熟悉,练习了好几回才学会对GitHub的克隆、Pull request、Merge pull reques等一些操做,对结对方的代码进行下载与修改的时候也存在过一些问题,在网上查找一些资料解决问题。java
为了练习软件的我的开发流程,设计一个关于词频统计的小程序,在词频统计的小程序中须要实现的功能具体有:git
咱们组主要是利用web网页的方式来实现这次项目的功能,服务器是经过Tomcat来支撑项目的实现。采用的是最简单的servlet来传递参数,将全部的方法封装在一个WordCount类,在这个类里面每一个功能的核心实现存放在不一样的方法里面,将此类进行封装。在servlet中直接调用封装好的方法,经过请求(request)与响应(response)的方式来与jsp页面进行传递。
这次的项目一共有三个类
2.1 WordCount.java 类:对全部功能的方法的一个封装
2.2 WordCountServlet.java :与web页面相联系的servlet类,是java内容与web交互的一个java封装好的类
2.3 WordCount.jsp:一个前台页面,须要在网页中展现的页面
项目类图:github
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //请求与响应的编码格式 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); String id=null; //接受页面数据 fileName = request.getParameter("fileName");//文件名 String words = request.getParameter("word");//指定单词 String wordnum = request.getParameter("wordnum");//高频数 String wordlines = request.getParameter("wordlines");//行数 String result = request.getParameter("result");//存放 id=request.getParameter("id");//功能编号的获取 if(id.equals("0")){ //文件的上传 WordCount wordCount = new WordCount(); map=wordCount.count(fileName); out.print("<script>alert('上传成功!!');location.href='html/WordCount.jsp'</script>"); }else if(id.equals("1")){ //指定单词的查找 //开始时间 long startTime=System.currentTimeMillis(); TreeMap<String,Integer> map1 = new TreeMap<String, Integer>(); 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("html/WordCount.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/WordCount.jsp").forward(request, response); }else if(id.equals("4")){ //写入文件 //开始时间 long startTime=System.currentTimeMillis(); WordCount cunfang = new WordCount(); cunfang.cunfang(map); //结束时间 long endTime=System.currentTimeMillis(); float excTime1=(float)((endTime-startTime)/1000)*1000; request.setAttribute("excTime1", excTime1); out.print("<script>alert('存储成功!!');location.href='html/WordCount.jsp'</script>"); request.getRequestDispatcher("html/WordCount.jsp").forward(request, response); } }
文件上传首先须要获取的是文件的名字,经过文件名来获取文件的内容,将文件内容存放在TreeMap集合中。web
在上传的文件中查找指定单词算法
高频词的统计是须要指定所须要查找单词的个数,每一个功能都有时间的统计,须要在调用方法前设置时间,在结束后设置一个时间,先后时间相减。小程序
柱状图是经过继承JFrame可视化界面来实现的,这个方法中须要传递存放文件的集合和指定单词的数组,调用java已有的方法来绘制柱状图,二维的柱状图方法是Graphics2D。数组
在项目开发过程当中,遇到了不少的问题,主要是在前台与后台的交互,包括前台页面中文件名上传以后再后台获取文件名的问题,在el表达式的操做过程当中数据从servlet中拿不到值,主要在servlet中数据获取后调用方法饭后的集合类型的数据在jsp中遍历的空难,经过重定位的方式转接到jsp页面,在JavaScript中经过forEach的方式遍历servlet传来的数据集合,一些必要的jar包的支持,例如standard.jar,jstl.jar等一些jar包。这次项目中还用到了Tomcat服务器来做为运行项目的一个小型的支撑服务器。经过结对项目的过程,体会到团队的重要性,合做工做过程当中会有一些分歧,例如各自见解与想法的不一样。经过无数次的实验与测试才会有此次的项目。服务器
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
Planning | 计划 | 6 | 5 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 10 | 14 |
Development | 开发 | 200 | 400 |
Analysis | 需求分析 (包括学习新技术) | 3 | 5 |
Design Spec | 生成设计文档 | 5 | 10 |
Design Review | 设计复审 (和同窗一块儿审核设计文档) | 5 | 7 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3.5 |
Design | 具体设计 | 14 | 20 |
Coding | 具体编码 | 180 | 420 |
Code Review | 代码复审 | 6 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 6 | 10 |
Reporting | 报告 | 10 | 15 |
Test Report | 测试报告 | 6 | 15 |
Size Measurement | 计算工做量 | 5 | 10 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 5 | 10 |
经过这次的项目认识到本身代码的不足以及对以前知识的回顾,以前全部的项目经验都是经过jsp页面来写的,这次因为时间问题也利用了以前学过的jsp网页的形式来实现,对于一些知识点有一些忘记,经过这次试验认识到软件开发须要时常的练习,不能遗忘,勤动手,多练习一些算法。jsp