码迷,mamicode.com
首页 > 其他好文 > 详细

某县百姓百事110便民服务管理系统(1)——项目总结

时间:2015-01-27 21:50:09      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

项目总结

  我是研二的一名学生,一直学习嵌入式方面的知识,C语言用的最多。以前本人未接触过web开发,这是第一次进行web开发,也是第一次学习。学习时间也就一个星期,看了《java编程思想》、《Servlet与JSP核心编程》、《http协议详解》,还未学习设计模式、框架方面的知识,关于js、css,随用随查就可以了。

  因为我实习的公司是做国产芯片的,这个项目只是个试点项目(当然也是某县的真实应用系统),为了测试公司刚设计的服务器的性能。而且,经过测试,在应用框架的应用系统中,框架所占时间比例也是比较大的。所以,这个项目,我们采用无框架、从零开始开发的方式进行。但是,项目完成后,得出的结论是,这种方式不符合主流开发模式,其实这里面也是另有原因吧,呵呵。不然我一个学底层的,做这个干嘛,这不是坑我么,还好以前没学过,做一个月也是能学到点东西,当然再做下去,坚决不能做了。

  闲话不多说,总之,既然做了,也学了这么多,就要有所收获。我先在这里说一下自己的心得,纯属个人观点,如有冒犯,请多原谅。

  对我而言,我觉得作为一名实习的学生,实习期间不必做web开发的事情,还是多做些底层的东西,掌握一些计算机学科的原理比较好,争取有扎实的技术上的长进。之所以这么说,我发现web开发这方面,真正有难度的还是系统架构的设计和大数据的分析研究,技术上不存在非你不可的问题,现在各种框架、库、控件及网上的资源实在是太丰富,读个研为了去做复制粘贴搜索的事情,真的是不值得。而对于经验尚浅的我们来说,完成系统架构的设计和大数据的分析研究这类工作是绝对不可能的,必须经过多个真实项目的磨练,才能担此重任。所以,最初,我们工作的时候只能做码农,经历漫长的码农生活后,才能够有足够的项目经验。反正都是码农,都能接触到真实的项目,那么是不是做一个有技术含量的码农比较好呢?所以至少我确定了研究生阶段,对我最有利的发展路径,去做一些底层的开发吧,毕业前不再做web开发。

  下面,先总结下整个项目,以后再去写技术的实现及问题的解决。

第一阶段

  项目启动

  第一次,与客户协商后,确立初步功能需求(为了以后描述方便,我们称其为一次需求,第二次需求的改变称为二次需求,依次类推...),如下:

  • 两种用户群:指挥中心,各二级平台。
  • 工作流程:受理(电话录音;记录来电人姓名、单位或住址、联系电话、来电时间和内容;记录接线员身份;新建任务)——>交办(将任务分类;交办任务给相应二级平台;规定办理时间限制)——>反馈(二级平台办理任务后反馈)。

  设计原则:简单易用,尽量减少页面的跳转,尽量让用户在一个页面就能获取所需信息或者进行所需操作。这就是我们设计页面数较少的原因,应该说我们用了尽量少的页面来实现全部功能。

  根据需求暂时设计有:3个jsp页面,1个数据库hotline(2个表),5个servlet。

  详细的设计就不说了,用处不大。说一下设计时需要注意的问题:

  • 明确各部分的作用,jsp用来显示信息并与用户交互,数据库用来保存数据,servlet用来实现处理逻辑。
  • jsp的设计要明确,动态部分与静态部分。
  • 数据库的设计,我们的设计比较简单,没有用到太多的复杂知识,我的心得是,按照项目的需要,先直接去建立表,已建表满足现在的需要后,在整体上对所有的表进行调整,该去掉的去掉,该合并的合并,该修改的修改,当然要在不影响功能的前提下。如果想要更加专业或者更加优化,这时候可以去应用数据库设计方面的知识。我相信,每个复杂数据库的设计,也是这么一步一步来的。
  • servlet的设计,应该很简单了,根据逻辑需要去写就行。

  开发环境搭建:

  • linux操作系统
  • JDK
  • Tomcat
  • mysql
  • JDBC

  用到的技术:

  • JSP/Servlet
  • javascript
  • css
  • html
  • http协议了解
  • mysql连接、添删改查、关闭
  • Tomcat应用部署

  开发的顺序:

  • 首先,进行前端设计,用Dreamweaver画出静态页面,同时,建立数据库
  • 然后,将静态页面改造为动态页面,同时,根据逻辑,写出servlet

  遇到的问题:

  • mysql中文乱码问题
  • jsp页面中文乱码问题
  • servlet接收到的中文是乱码

  第一阶段用了大约一周时间。我们要给用户一个阶段性的成果,一是为了让客户对我们充满信心,相信我们;二是,及时更正需求,尽量在工程早期修正错误。

第二阶段

  一般情况下,客户向我们描述功能需求后,我们很难保证,我们接收到的信息与客户想要传达的信息100%相同,也很难保证,客户已将全部100%的信息传达给我们。

  主要使增加了功能需求,主要是搜索功能、数据的备份与恢复和任务分类的选择,还做了一些页面上的改动。

  增加一个jsp页面,两个servlet,一个数据库表。

  遇到的问题:

  • java程序进行导入导出数据库

  在这个过程中,我们发现,程序的可维护性,可扩展性使非常重要的。主要是方便我们开发人员,因为应用开发最经常改变的就是需求,我们需要不断的根据客户需求去完善项目。

  如何提升可维护性呢?

  • jsp页面的设计,重复使用的部分(例如,同一项目中,每个页面的顶部部分和底部部分),封装成单独的jsp,include进使用它的页面,这样如果对重复部分进行修改,只需要修改一个地方,而且还防止了遗漏。我想这就是各种开发框架形成的原因跟过程吧。
  • servlet的设计,使用频繁的逻辑功能,可以封装成单独的类,例如数据库的操作。
  • 明确并分清数据逻辑与业务逻辑。

第三阶段

  需求增加知识库功能、信息缩略、已有任务的删除及修改,已有任务的打印、任务催办等功能。

  遇到的问题:

  • jsp显示时,该换行的地方没有换行

  在客户对需求有改变时,我们要尽量满足客户的要求,即使我们感觉没有必要的地方,只要用户提出来,就要做。另外,还要懂得跟客户沟通,如果遇到特别麻烦或者不能实现的功能,为客户找到其他方式的解决方案,或者向其说明情况,当然这是迫不得已的做法,毕竟,不是所有事情都能实现。

第四阶段

  需求增加高级搜索功能、统计功能。

  遇到的问题:

  • JDK1.7及其以前版本不支持switch(String)
  • Tomcat1.7中,request.setCharacter()不管用,因此显示有乱码问题

  这里详细说一下统计功能,非常麻烦。我们最终是得到一张在某时间段内、各单位任务状态的统计表。能新建,删除,修改,查看各统计表。

  首先,我们先按照客户给出的评价标准得到一堆数学公式,然后几个人一起检查一遍数学公式的正确性,确认数学公式的正确性之后,才开始分工进行实现。我设计了它的实现架构,采用MVC,如下:

逻辑


                                       |—————————————————————————————————Map B—————————————————————————|
                                       |                                                               |
                                       V                                                               |
count.jsp ——————> 点击新建 ——————> count-form.jsp ——————> 点击保存 ——————> 将所有记录放入Map B ——————> saveServlet
   |                                 ^    |    ^
   |                                 |    |    |——————————————————————————————————|
   |                                 |    |                                       |
   V                                 |    V                                       |
点击已存在统计表                       |  重新计算                                   |
   |                                 |    |                                       |
   |                                 |    |                                       |
   |                                 |    |                                       |
   V                                 |    V                                       |
existedServlet                       |  recomputeServlet                          |
   |                                 |    |                                       |
   |                                 |    |                                       |
   |                                 |    |                                       |
   V                                 |    V                                       |
将所有记录放入Map A                    |  将所有记录放入Map C                         |
   |                                 |    |                                       |
   |                                 |    |                                       |
   |                                 |    |                                       |
   |—————————————————————————————————|    |————————————————————————————————————————


数据结构


Bean类:统计表中,每条记录对应一个Bean
HashMap:一个统计表对应一个Map

接口设计

startTime,endTime,countFormName:点击已存在统计表时,作为参数,count.jsp ——————> existedServlet,existedServlet ——————> count-form.jsp,count-form.jsp ——————> recomputeServlet
countMap:existedServlet ——————> count-form.jsp, recomputeServlet ——————> count-form.jsp,count-form.jsp ——————> saveServlet,saveServlet ——————> count-form.jsp
Bean中:setXXX(),getXXX()
countMap的key为’单位名‘

 

某县百姓百事110便民服务管理系统(1)——项目总结

标签:

原文地址:http://www.cnblogs.com/ISeeIC/p/4254029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!