首页 > 代码库 > 某县百姓百事110便民服务管理系统(1)——项目总结
某县百姓百事110便民服务管理系统(1)——项目总结
项目总结
我是研二的一名学生,一直学习嵌入式方面的知识,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类:统计表中,每条记录对应一个BeanHashMap:一个统计表对应一个Map接口设计startTime,endTime,countFormName:点击已存在统计表时,作为参数,count.jsp ——————> existedServlet,existedServlet ——————> count-form.jsp,count-form.jsp ——————> recomputeServletcountMap:existedServlet ——————> count-form.jsp, recomputeServlet ——————> count-form.jsp,count-form.jsp ——————> saveServlet,saveServlet ——————> count-form.jspBean中:setXXX(),getXXX()countMap的key为’单位名‘
某县百姓百事110便民服务管理系统(1)——项目总结