《软件技术毕业设计(论文)在线项目管理协作平台.doc》由会员分享,可在线阅读,更多相关《软件技术毕业设计(论文)在线项目管理协作平台.doc(48页珍藏版)》请在三一办公上搜索。
1、题目:在线项目管理协作平台姓名:*专业:软件技术班 级:*指导教师:*2012年4月1日目录题目:在线项目管理协作平台1需求分析3背景3目前状况3存在问题4项目内容5基本模块5项目管理5人员管理5任务列表6消息版6高级模块7里程碑7工时管理7文件管理7功能概要说明书8目标8各个功能模块概述8详细设计16目的161.2.1把握整体的设计技术161.2.2 运用的实现技术21应用服务器上的面向业务逻辑的设计242.1逻辑结构接口实现设计:24浏览器上的面向对象的设计283.1.时序图表示283.1.1 时序图解释:283.1.2 项目时序图表示303.2 表示层前后连接及本身信息32数据库服务器上
2、的面向数据的设计364.1 数据库全局概念设计(E-R):364.2数据库中表的具体设计如下384.2.1项目表384.2.2模块表384.2.3任务表394.2.4角色表394.2.5工时表394.2.6员工表404.2.7消息表404.2.8文件表414.2.9邮件表414.2.10项目员工关系表424.2.11 员工模块表424.2.12 员工任务表43项目总结43需求分析背景 随着互联网的发展,以及Web 2.0概念的逐步为大众所接受,各种以“用户生成内容 (UserGenerated Content, UGC) ”为核心理念、强调个人之间的互联不分享、建立在良好的用户体验上的新一代网
3、站如雨后春笋涌现出来。其中,以“软件即服务(Software as a Service, SaaS)”为主导理念的网站是比较特别的一支。软件即服务倡导的是将软件部署为托管服务并通过互联网进行访问,也就是我们通常听到的把桌面软件网络化。目前状况 随着行业的完善和细分,各行业(尤其是软件行业)出现了越来越多的中小型公司、兼职团队和自由职业者,这些公司戒团队的组成及合作方式非常动态、变化极大、灵活性非常高,他们通常无法在一起面对面工作和沟通,甚至工作的时间段也并一致;加上资金有限,也没有能力购买一整套协作和沟通的软件。 在比较具有规模的公司,目前大多数项目负责人使用的项目管理软件,依然是微软的pro
4、ject。这个软件流行了这么多年,并可否认它确实有很多优点,但是在web 2.0概念盛行的现在,project 以及这类桌面项目管理软件更是有很多无法弥补的缺陷。存在问题 对于桌面项目管理软件(以project为例),主要有如下几个: 1. 费用相对较高(盗版除外); 2. 过于复杂,其中很多功能的使用频率都相当低; 3. 分享比较麻烦。通常的方式是通过email分享文件,但是由于版本过多以及比对麻烦,带来的问题非常棘手,尤其是对于比较大型的项目; 4. 最大的问题是,除了做项目安排之外,基本没有也无法集成其他方面的功能,比如在线方面的功能。带来的后果是每位组员看起来都是在独立工作,缺少即时沟
5、通和通知,比较难适应变化 大、灵活度高的情况。项目内容该实训项目的目标是搭建一个在线项目管理协作平台,方便项目负责人对于项目的规划、管理、任务分配和整体的把握,成员之间协作、沟通、分享资料和互相通知,以适应项目和团队的快速变化和远程协作以及跟踪每个参与人员的进度以及整个项目的进度,以及最后对每个参与人员和项目的评估。基本模块项目管理 1添加项目 2添加邀请项目成员 3查看项目信息 4结束项目 对项目和先关人员进行评估 以扇形图显示。 人员管理 1添加/邀请用户,并填写用户的基本信息 2给用户赋角色 3分角色查看用户 4查看用户任务(领导查看所有的下属的信息,普通用户查看自己的任务(包含未完成的
6、任务进度) 任务列表 1新建任务列表,在任务列表添加任务(发邮件给任务所有者) 2将任务分配给某个成员(设置可见度) 3设置任务优先级4设置任务为完成 5对人物进行评价 6按任务所有者过滤任务消息版 1发送消息,并选择消息通知的成员(是否email通知 2添加消息类型 3添加消息评论 4按类别查看消息 高级模块 里程碑 1添加里程碑,设定定时通知 2设置里程碑完成度 3关联任务到里程碑 工时管理 1为项目成员添加工时,并关联任务 2为项目成员统计工时 文件管理1上传项目文件 2添加文件分类 3添加文件作为消息附件功能概要说明书目标在这个项目中,我们想象模拟公司中的项目管理流程,在其页面上要充分
7、利用我们之前学习的JS、css、Jquery、Ajax等达到良好的用户体验效果,在具体实现上同样要利用我们能够达到的知识把从该项目中能够体现的东西发挥的淋漓尽致。比如说:1.熟悉软件的开发过程、2.熟练应用MVC设计模式、3.画出数据库E-R图并转化为表关系完成数据库分析设计、4.熟练掌握 HTML+DIV布局及调试工具、5.熟悉并严格遵守编码规范、6.熟练掌握Jsp,Servlet,JavaBean,JDBC,JSTL、7.使用javascript 完成页面验证、简单的页面效果。各个功能模块概述模块大类模块名功能说明基本模块基本模块基本模块基本模块基本模块Module1.前台1. 显示开发用
8、途2.提供登录的接口3.提供退出系统的接口该模块相当于是开发的首页面,在向用户展示软件明显用途的同时尽量在该页面上体现更多的美感。首先这边是向用户展现登录入口在页面上,登录的信息主要通过数据库设计的字段完成登录功能上可加入cookie的实现。登录后可依据自己登陆的角色查看项目信息,如:项目经理可以查看项目的完成度,项目的具体信息情况,普通开发人员可以查看自己的任务等等Module2.项目管理1. 添加项目2. 添加邀请项目成员(邀请的成员是已经在本系统存在的用户)3. 查看项目信息4. 结束项目操作这一模块的功能的对象应该具有较高的权限,相当于项目经理a. 按照给定的项目必须的信息可完成添加项
9、目,之后便转入到所有的项目列表中。b. 添加邀请项目成员根据已有的成员列表选择,这里应该是选择项目组长c. 查看项目信息就是能够根据项目列表查看到对应一项目的具体的信息,如参加人员,完成进度等等d. 结束项目,在项目经理全部审核完成后关闭此项目,同时完成对项目和相关人员的评估(用扇形图表示出来)Module3.模块管理1. 添加模块2. 删除模块3. 查询模块4. 更改模块(有权限控制)5. 发放模块(上级发给下级)a. 根据所在的项目和需要添加模块,在这里是到了项目组长级,接到项目后添加模块在项目里b. 项目组长根据需要可以查询更改和删除模块,这些操作达到基本要求即可c. 模块创建完成后要发
10、到指定负责人手中,根据存在的项目成员选择。Module4.任务列表1. 新建任务列表2. 将任务分配给某个成员3. 设置任务优先级4. 设置任务为完成5. 对人物进行评价6. 按任务所有者过滤任务a. 在新建任务列表中,明显的要能够添加任务,为了人性化,同时应具有发送邮件给任务所有者的功能b. 将任务分配好之后同时设置可见度,其实就是权限的问题c. 在项目的众多任务中,会有完成的紧急度,在这里设置优先级,使开发人员更容易把握自己所做的事情的程度。d. 当项目组长确定该任务完成之后就可以标记该任务为完成e. 当项目组长标记任务完成的同时就可以对负责该任务的人员进行评价f. 每个任务所有者都有他的
11、任务,当他要查看任务时只显示他自己的任务,当然普通开发人员以上的所有人员都可以随意查看Module5.人员管理1. 添加/邀请用户,并填写用户基本信息(这里的添加邀请相当是用户在本系统的注册(需要权限)2. 给用户赋角色3. 分角色查看用户该模块也可以理解为角色管理模块a. 当有新的用户要进入该项目的开发中时,就要添加用户的信息,相当于完成用户在该项目中的注册b. 用户添加完成之后,相当是注册,如果有必要就直接为其添加在此项目中担当的角色,比如:项目组长、编程人员等c. 在一个项目的开发中会有不同的角色,如项目经理、项目组长、普通开发人员,可以根绝这些角色查看该角色中的具体人员Module6.
12、消息版1. 发送消息2. 添加消息类型3. 添加消息评论4. 按类别查看消息a. 发送消息时可根据已存在的对象选择发送的对象(Email通知)b. 消息可分为多种类型,根据发送的消息可选择c. 消息既然发送出去并被人看到自然可以对消息评论一下,这也相当于一个项目组里的交流平台了d. 既然消息已经分了类型,当查看消息时就可根据自己的意愿查看自己感兴趣的消息e. 添加文件作为消息附件高级模块高级模块高级模块Module7.里程碑1. 添加里程碑,设定定时通知2. 设置里程碑完成度3. 关联任务到里程碑a. 在一个项目中也可分为几个阶段,划定的每个阶段都可作为一个里程碑,比如完成第一次的整合就可以当
13、做一个里程碑,设置里程碑应该具有调动开发人员积极性的效果b. 当达到已设定的里程碑的时候就是该里程碑完成了,一步一步的都可以标记里程碑的完成度c. 里程碑根绝任务的完成度决定,自然要与任务关联Module8.工时管理1. 为项目成员添加工时,并关联任务2. 为项目成员统计工时a. 一个项目的成立,都会有它的工时,参与人员都会有完成其工作的计划时间,同样的每个成员都对应着他的任务,根据任务的实际情况为项目成员添加工时:把项目的功能及任务从数据库中读出来并用表单显示,对应之下可以为每个具体的任务添加工时,然后提交上去并放到数据库中b. 当零零散散的工时安排好之后需要整理每个项目成员的任务和对应的工
14、时:按项目成员编号查询他的所有任务对应的工时用列表显示出来Module9.文件管理1. 上传项目文件2. 添加文件分类3. 添加文件作为消息附件a. 利用所学的文件上传知识便可把项目文件上传到该项目中b. 为上传文件时选择类别,让查看文件更方便,这部分在上传文件时就应该表现出来,如放在form的select里,也会有很好的用户体验c. 在消息模块中就运用到添加文件,实现是一样的详细设计目的 提供一个在项目开发过程中支持项目组成成员交流、合作、共享数据资料;支持项目负责人规划、管理、分配的友好平台。切合项目开发进程的把握和团队快速协作的整体高度的提升要求。1.2系统关键技术1.2.1把握整体的设
15、计技术 1.2.1.1 MVC模式 1.2.1.1.1 MVC设计模式从名称的组成上来说就是:Model、View、Controller,下面看一下它的关系图 模型(Model)封装程序内部的数据状态封装业务处理方法内部状态改变时通知视图视图(View)显示模型中的数据接受模型的数据更新通知将用户操作传递给控制器控制器(Controller)接受用户操作调用模型的业务处理方法选择相应用户操作的视图数据状态查询状态改变通知调用业务方法和修改数据选择视图用户操作要求1.2.1.1.2 为了详细了解它的执行流程,下面来看一下其实现流程图1.2.1.2 面向接口在本次项目中,我们所做的重点就是放在了接
16、口上面,力求做到全部面向接口的编程,java面向对象已经学习了很久,这次项目中,我们就把之前所学习的关于面向对象的精华都运用到其中,很早之前就听老师说过接口,并且老师一直在强调关于接口的好处,之后我们又接触到了关于设计模式的内容,从而对面向对象的理解又加深了一步,在这次的项目中充分体现了我们队面向对象的理解。我们在这次项目中一共用到了24个接口,其中14个是DAO的接口,其中有10个是BO的接口,在接口中我们定义的都是一些标准,这些标准都是来源于需求分析,组员严格按照定义好的标准做,不会出现混乱的情况,表现出整体感。同时充分体现接口的灵活性。比如说我们具体的实现方式改变了,但是我们是面向接口的
17、编程,只要做到把关于这个实现类赋给这个接口就好,那么在具体的运行中,它会动态的进行绑定,这样程序的灵活性就很好了,之后我们为了让其更加的灵活,我们运行配置文件,写一个专门的辅助类进行解析这个配置文件,得到要得到实现那个接口的具体的全类名称(带包的),之后运行工厂模式来得到,这样的话,如果后期进行修改的时候,我们要做的就仅仅是去修改配置文件就好,而其他的地方都不需要进行任何的修改了,这样我们就做到了面向接口的编程。但是面向接口并不是我们所追求的,我们追求的是面向接口给我们带来的好处,这样之后我们小组就可以同时继续任务,而不会出现相互等待的过程了,这样的效率也高,并且标准都是统一的,把握和处理好团
18、队工作的优势1.2.1.3 数据库连接池 我们使用连接池的原理和原因,以便更好地理解: 它的基本思想是为数据连接建立一个缓冲池,预先在缓冲池中放入一定数量的连接,当需要获得数据库连接时就从缓冲池里取出一个,用完之后再放回去。它负责分配、管理和释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能,从而也会提高整个项目的性能1.2.1.3.2 使用方式 a. 配置tomcat下的conf下的context.xml文件,添加链接池配置,如 Res
19、ource name=”jdbc/oracle” Auth=”container” Type=”javax.sql.DataSource” driverVClassName=”oracle.jdbc.driver.OracleDriver” url=”jdbc:oracle:thin:host:port:database” username=”user” password=”password” .b.配置你的应用下的web.xml如 jdbc/oracle javax.sql.DataSource Container c.在需要获得数据库连接的地方使用 如: Context initConte
20、xt = new InitialContext();Context envContext = (Context) initContext.lookup(java:/comp/env);DataSource ds = (DataSource) envContext.lookup(jdbc/myoracle);Connection conn = ds.getConnection(); 1.2.2 运用的实现技术在这里显示我们在系统开发过程中会用到的技术的一部分作为标志,每一项技术也只是表达一下大概,没有具体的实现实例。 1.2.2.1 log4j:辅助系统开发过程中是开发人员知道系统的运行情况、出
21、错信息以及可能的问题,使用方式:a.导入org.apache.log4j.Logger以及相关包 b.根据配置文件初始化log4j c.在需要使用的地方获取Log实例,如 Logger logger = Logger.getLogger(MessageLog); d.使用Logger对象的debug/info等方法,如 logger.warn(“Are you sure!”); 1.2.2.2 JSTL:系统中可采用JSTL标签库进行页面数据的显示,使用方式: a.导入标签库,如 b.在页面中使用JSTL表达式,如 $u 1.2.2.3 EL:系统中可采用EL表达式进行页面数据的显示,使用方式
22、: 如:$username1.2.2.4 AJAX:基于它是异步的javascript与XML结合的特性,可使用它来发送请求,不用刷新页面,使用方式如:ajaxRequest.open(get,projectmanagesystem.xml,true); ajaxRequest.open(get,getProjectServlet,true); ajaxRequest.send(null);1.2.2.5 JQuery:系统中可采用EL表达式进行页面数据的显示,使用方式: a.导入jquery-1.4.js包 b.使用如:$(#div).css(width,600px);1.2.2.6 Jav
23、aScript:在本项目中采用它来进行表单的验证,大致使用如 function pubMsg()msgTitle=document.msgForm.msgTitle.value; msgContent=document.msgForm.msgContent.value; if(msgTitle.length5|msgContent.length5) alert(标题和内容不能少于5个字符); return; . 1.2.2.7 文件上传:很多的情况下都需要上传文件,比如创建项目的时候上传一个关于项目介绍的文件,它的实现大概用到了DiskFileItemFactory、ServletFileUp
24、load、Iterator、还有I/O的对象。 1.2.2.8 发送邮件:基本上的项目成员间的联系都是通过发送邮件的方式,使用方式 a.导入commons-email-1.2.jar、mail.jar包b.实现如:SimpleEmail email = new SimpleEmail();再根据具体实现设置其具体的内容。 1.2.2.9 绘制扇形图:用于在结束项目的时候完成对参与人员评价的清晰展示,使用方式: a.导入swtgraphics2d.jar、iText-2.1.5.jar、gnujaxp.jar等多个包 b.根据传过来的数据进行绘制的填充数据(由于代码量的原因就不在这里显示过多代码
25、了),如dataset.setValue(苹果,500);应用服务器上的面向业务逻辑的设计2.1逻辑结构接口实现设计:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。在这里我们应用面向接口编程的思想也基本是跟着这一实现思想和理念进行的,看一下我们的具体小流程:把关于这个实现类赋给对应的接口,那么在具体的运行中,它会动态的进行绑定,提高程序的灵活性
26、,同时运用配置文件,写一个专门的辅助类进行这个配置文件的解析,得到要得到实现那个接口的具体的全类名称(即具体路径),通过运行工厂模式来获得,这样做,如果后期需要修改的时候,要做的就仅仅是去修改配置文件就好,而其他的地方都不需要进行任何的修改了,这样我们就做到了面向接口的编程这是我们在本项目中运用接口设计的思想模式,下面为了了解深刻一些,还是再回顾一下接口的内容吧:关于接口的理解。 接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。 我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应是所有的定义与实现分离,尽管这可能对系
27、统中的某些情况有点繁烦。 接口的本身反映了系统设计人员对系统的抽象理解。 接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);在具体实现中,是可以把UML的interface实现为语言的interface,分布式对象环境的interface或其它什么interface,但就理解UML的interface而言,指的是系统每部分的实现和实现之间,通过interface所确定的协议来共同工作等等浏览器上的面向对象的设计3.1.时序图表示 在上面已经把项目中的大体概念都表示出来,所有的应该准
28、备的东西都ok了,怎样运用这些对项目讨论之后的产物,让项目的一个个分支连为一体形成我们项目的整体抽象。我们选择用时序图将它们表示出来,相信每个人都会在脑海里留下这个项目的实现轮廓。同样的还是先来看一下什么是时序图,我们先学习一下,知道它是什么,怎样的构成才能读懂我们的时序图。3.1.1 时序图解释:时序图描述对象是如何交互的,并且将重点放在消息序列上。也就是说,描述消息是如何在对象间发送和接收的。时序图有两个坐标轴:纵坐标轴显示时间,横坐标轴显示对象。每一个对象的表示方法是:矩形框中写有对象和 / 或类名,且名字下面有下划线;同时有一条纵向的虚线表示对象在序列中的执行情况 ( 即发送和接收的消
29、息对象的活动 ) , 这条虚线称为对象的生命线。对象间的通信用对象的生命线之间的水平的消息线来表示,消息线的箭头说明消息的类型,如同步,异步或简单 。 浏览时序图的方法是,从上到下查看对象间交换的消息,分析那些随着时间的流逝而发生的消息交换。时序图中的消息可以是信号、操作调用或类似于 C+ 中的 RPC ( Remote Procedure Call, 远程过程调用)或 Java 中的 RMI ( Remote Method Invocation , 远程方法调用)。当对象接收到一个消息时,该对象中的一项活动就会启动,我们把这一过程称做激活 ( Activation )。 激活会显示控制焦点,
30、表明对象在某一个时间点开始执行。一个被激活的对象或者是执行它自身的代码,或者是等待另一个对象的返回(该被激活的对象已经向另一个对象发送了消息)。在图形上,激活被绘制为对象生命线上的一个瘦高矩形。消息可以用消息名及参数来标识。消息还可带有条件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。消息也可以有顺序号,但是在时序图中,消息的顺序号很少使用,因为时序图已经将消息的顺序显式地表示出来了。一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对象用 X标识。3.1.2 项目时序图表示3.2 表示层前后连接及本
31、身信息 使我们更加清楚地知道每个页面在做什么,清楚具体流程转向。页面名称前一层传入功能转向至传出(以action为标志)login.jsp提供登录的页面LoginServletuname,upwdaddproject.jspmain.jsp提供添加项目的页面1.addprojectBean.jsp2.ProjectServletaddprojectlookupproject.jsplistproject.jspprojectid1. 查看项目详细信息2. 提供修改项目信息的页面ProjectServletprojectlistproject.jspmain.jsp列出所有的项目addemplo
32、yee.jsplistemployee.jsp提供添加员工信息的页面1. addemployeeBean.jsp2. EmployeeServletaddemployeelookupemployee.jsplistemployee.jspemployeeid1.查看员工详细信息2提供修改员工信息的页面EmployeeServletemployeelistemployee.jspmain.jsp列出所有的员工EmployeeServletemployeelookuprole.jspmain.jsproleid列出角色的详细信息RoleServletroleaddmodule.jsplistmod
33、ule.jsp添加模块页面1. addmodule.jsp2. ModuleServletaddmodulelookupmodule.jsplistmodule.jspmoduleid1. 查看模块详细信息2. 提供修改模块信息的页面ModuleServletmodulelistmodule.jspmain.jsp列出所有的模块ModuleServletmoduleaddtask.jsplisttask.jsp添加任务的页面1. addtaskBean.jsp2. TaskServletaddtasklookuptask.jsplisttask.jsptaskid1. 查看任务的详细信息2.
34、提供修改任务的页面TaskServlettasklisttask.jspmain.jsp列出所有的任务TaskServlettasklookupmilestone.jsplistmilestone.jspmilestoneid1. 查看里程碑的详细信息2. 提供修改里程碑的页面MilestoneServletmilestonelistmilestone.jspmain.jsp列出所有的里程碑MilestoneServletmilestonelisttasktime.jspmain.jsp列出所有的工时信息lookuptasktime.jsplisttasktime.jsptasktimeid1
35、. 查看工时详细信息2. 提供修改工时的页面addrole.jsp提供添加角色的页面1. addroleBean.jsp2. RoleServletaddrole数据库服务器上的面向数据的设计4.1 数据库全局概念设计(E-R): 经过具体的分析,完成我们要实现的功能,需要创建10个表,有这10张表构成的数据库全局的表示设计用E-R图表示如下:由于图片的长度,在这里用了两张图拼合e-r-1:4.2数据库中表的具体设计如下 4.2.1项目表4.2.2模块表4.2.3任务表4.2.4角色表4.2.5工时表4.2.6员工表4.2.7消息表4.2.8文件表4.2.9邮件表4.2.10项目员工关系表4.
36、2.11 员工模块表4.2.12 员工任务表项目总结首先感谢汪老师给我这次做项目的机会,在这次项目中我学到了很多很多,下面就是我的体会。由于这次是模拟的一个真实的企业里面做项目的流程,所以,一开始 我们就要确定需求,在大学我们也学习过软件工程,并且明白软件工程的开发,也知道确定需求这步的重要性,所有我们花了一个下午的时间,全体小组都在讨论关于我们要做的“在线项目管理”这个项目,如果我们作为用户,希望有那些功能,我们就把我们小组的每个成员当成用户,大家相互的提,之后经过大家头脑的风暴之后,确定了我们这次做的“在线项目管理”的需求,这个需求是我们小组把自己当成用户进行决定的,所有确定的时间很短,一
37、会儿就确定好了,但是我也明白如果是真正的一个软件项目,这个过程是复杂的,并且用户的需求可能会随时的进行改变,由于我们这次项目需求是固定的,根据这个特点,我们就用软件工程中的“瀑布开发模式”,就是按照软件工程中的瀑布模式进行一步一步的后继开发,当需求确定之后,小组开始讨论关于有这些需求之后,应该有那些功能,之后经过大家的积极讨论确定下来,一共有八个大模块(现在项目已经结束,回想下,这个还真是蛮复杂的,2天前统计了一下代码量一共有二万七千行代码),当这些功能都确定好了之后,我们最终得到了一个“在线项目功能说明书”,在这些都确定好了之后,下面要做的就是详细设计了,在这个过程中,是续需求之后的又一个非
38、常非常重要的阶段,因为这个阶段搞好之后,后面的很多就会变的那么的容易,所以这个阶段大伙都花了不少的精力在这个上面,首先我已经得到了需求说明书和功能说明书了,之后就是要根据这两个进行详细的设计了,首先经过大家的讨论,决定先重数据库的设计开始讨论,首先我们根据需求和功能说明书确定有那些表,之后表中应该有那些字段,之后就是确定表与表之间的关系,在确定多对多的关系的之后,我们是在中间插入一张表,之后这样就转换为两个一对多的关系了这样多对多的问题就解决了,之后在确定了数据库的这些情况下面,我们可以明确的知道,已经有多少个实体类了,因为有12个表,每个表对于一个实体类,所有就得到了12个实体类了,之后就是
39、确定采用什么模式来开发这次的web项目,之前刚刚好老师给了一个说了一个手写的框架,经过分析感觉那个框架并不是特别的好,并且在web中MVC是很重要的,所有我们就采用MVC来进行这次项目的开发,其中设计到的技术就是我从合肥到苏州来的所有学习的知识点了,数据库的学习在上面的数据库的设计中用到了,之后就是关于java编码的学习,在整个项目的开发中都有设计到,而关于web基础就是html css js jquery json ajax等在项目中都有用到,之后就是关于web的中基础 就是关于jsp servlet的知识点了,之后就是关于过滤器,之后就是确定加入一些新的东西,之后加入了关于发mail的知识
40、点,加入了log4j的知识点,之后加入了关于画扇形图,饼状图的知识点在其中,在这个项目中我们不用传统的JDBC了,由于效率的问题和性能的问题,我们采用数据库连接池来做这次的项目。在确定了技术之后,就要确定一共应该有那些类,类与类直接的关系了,还依稀记得雷老师说过java为什么好,因为其有统一的标准,还记得黄老师说过,写java代码,要把代码写的像水一样,水有什么呢?就是很柔的,就是要我们把代码写的灵活性非常的好,可以收缩性很好,改某个的时候,其他的尽量做到不用进行什么改动,做到搞内聚低耦和的这种,接口的好处我在此就不详细说明了,这个是oo里面的基础,我像说的是接口中关于团队开发项目的时候,由于
41、是很多人,进行同时的开发,并且大家的风格不同,写的代码不一样,那么到最后的整合的时候,会出现很多问题,所有这个时候,接口的又一个好处就体现出来了,所有我们开始定义接口了,在定义接口中,只要确定接口的名称和里面的方法的返回值已经入参和方法的名称就好了,因为有12个表,由于程序要操作这些表,而在servlet中不应该直接性的操作数据库的代码,所有我们就定义了12个DAO接口,因为有了接口就一定有实现类,所有也就随之而来的12个实现类了,之后就是当一个业务操作的时候,要同时操作多个表的时候,这个时候就设计到事物了,如果成功都成功,失败都失败,所以在这种情况下面,我们必须定义几个bo的接口,根据我们这
42、个项目的业务,我们最终确定了8个bo接口,之后随之而来的就是8个bo的实现类了,之后就是要确定关系了,之后小组讨论,通过画uml,把这些很多很多类的关系给理清楚了,之后,由于还想提高程序的那种代码的扩展性,我们就加入了工厂,之后通过读取配置文件,之后通过反射,生成具体的实例,之后通过多态进行调用,那么这样的话,程序的可扩展性就好了,代码就或了,之后就是确定servlet的名称,之后就是确定页面的名称,之后页面里面有什么,这个时候就可以确定了,由于我们用到了jspuseBean,所有表单中的名称和实体类中的名称一样,由于实体类也确定了,所有这个时候,el表达式也可以写了,也就是这次讨论之后,我们小组可以同时进行工作了,写页面的写页面,写dao,bo的写dao,bo,servlet我们是采取一个人一个或者几个的这样来做的,因为大伙都很给力,所有写起来的速度很快,dao的对单一的表进行CURD的,所有并不难,就是在bo中如何让其可以进行回滚或者提交呢?所有我们要让DAO基础一个类该类中就一个Connection属