摘 要
部门项目管理系统,就是项目的管理者运用专门管理项目的系统软件,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效管理。它从项目的需求分析开始到项目结束的全过程来进行策划以实现项目,包括项目人员的管理和分配等内容。
本文简要介绍了整个部门项目管理系统的开发过程,包括系统的需求分析阶段、详细设计、概要设计阶段和测试阶段,并通过文字、代码、表格、图片等多种形式详细介绍本系统的整体构架和设计特点。整个部门项目管理系统采用SSI框架设计完成,在设计方面,本系统也采用了B/S结构,同时使用JSP技术进行动态页面的设计,考虑到代码的可重用性和系统的安全性,本系统运用Java Bean对程序的关键代码进行封装,后台数据库使用Oracle,结合对项目管理知识的了解,本系统实现了对于项目的基本增加、修改、删除功能、条件查询功能和对于不同用户权限的管理。在Windows XP的操作系统下,网站页面框架采用Dreamweaver8,结合了java script技术开发出这个伸缩性好、扩展性强、容易维护、界面美观、功能实用的部门项目管理系统。
关键词:SSI框架,JSP,Oracle,需求分析
The Design and Implementation of Department’s Project Management
System
Author: Tutor:
Abstract
The department of project management system is the project manager of the project management system utilizing specialized software, in limited resource constraints, using system viewpoint and method and theory, all the work involved in the project management effectively. It from the beginning to the end of the project the whole process of project requirement analysis to planning to achieve the project, including project management and distribution, etc.
This paper briefly introduces the whole department project management system
development process, including system requirements analysis, detailed design, general design and testing phase, and through the text, code, forms, images, and other forms in detail the system's overall structure and design characteristics. The department project management system adopts the SSI framework design pleted, in terms of design, this system also adopts B/S structure, using JSP technology for the design of dynamic pages at the same time, considering the reusability of code and the security of the system, this system uses the Java Bean encapsulates the key code of the program, use Oracle backstage supporter's database, bined with the understanding of the project management body of knowledge, this system has realized to the project's basic increase, modify, delete, query conditions and for different user rights management. Under Windows XP operating system, web page frame adopts Dreamweaver8, bined with the Java script technology can develop the good scalability, strong expansibility, easy maintenance, beautiful interface, functional department project management system.
Key Words: SSI framework, JSP, Oracle, needs analysis
目 录
1 绪论 ..................................................................................................................................... 1 1.1 系统开发的背景及目的 ................................................................................................ 1 1.1.1 系统开发背景 .......................................................................................................... 1 1.1.2 系统研究的意义 ...................................................................................................... 1 1.2 系统的实用价值 ............................................................................................................ 2 1.3 部门项目管理的现状及发展趋势 ................................................................................ 3 1.4 本文的章节安排 ............................................................................................................ 3 2 系统开发环境 ..................................................................................................................... 4 2.1 系统平台体系结构选择 ................................................................................................ 4 2.2 系统开发环境 ................................................................................................................ 5 2.2.1 前台开发环境 .......................................................................................................... 5 2.2.2 系统后台数据库环境 .............................................................................................. 5 2.3 J2EE平台概述 .............................................................................................................. 6 2.3.1 J2EE规范 ................................................................................................................ 6 2.3.2 J2EE体系结构 ........................................................................................................ 6 2.4 SSI框架介绍 ................................................................................................................. 8 3 系统分析 ............................................................................................................................ 12 3.1 可行性分析 .................................................................................................................. 12
3.1.1 可行性研究 ............................................................................................................ 12 3.1.2 经济可行性分析 .................................................................................................... 12 3.1.3 技术可行性分析 .................................................................................................... 12 3.1.4 社会可行性分析 .................................................................................................... 12 3.1.5 操作可行性分析 .................................................................................................... 13 3.2 需求分析 ...................................................................................................................... 13 3.2.1 项目目标 ............................................................................................................... 13 3.2.2 用户需求和模块功能 ........................................................................................... 13 4 系统概要设计 .................................................................................................................... 15 4.1 系统总体设计 .............................................................................................................. 15
4.1.1 系统设计目标 ........................................................................................................ 15 4.1.2 系统功能模块图 .................................................................................................... 15 4.2 E-R图 .......................................................................................................................... 15 4.3 数据库概要设计 .......................................................................................................... 17 5 详细设计 ............................................................................................................................ 20 5.1 系统登录模块说明 ...................................................................................................... 20
5.1.1 功能简介及其页面的实现 .................................................................................... 20 5.2 员工管理模块说明 ...................................................................................................... 22 5.2.1 功能简介及其页面的实现 .................................................................................... 22 5.3 项目管理模块说明 ...................................................................................................... 24 5.3.1 功能简介及其页面的实现 .................................................................................... 24 5.4 部门管理模块说明 ...................................................................................................... 27 5.4.1 功能简介及其页面实现 ........................................................................................ 27 5.5 产品管理模块说明 ...................................................................................................... 29 5.5.1 功能简介及其页面的实现 .................................................................................... 29 5.5.2 添加产品: ............................................................................................................ 29 6 系统测试 ........................................................................................................................... 31 6.1 测试平台 ...................................................................................................................... 31 6.2 测试方法 ...................................................................................................................... 31 6.2.1 白盒测试法 ........................................................................................................... 31 6.2.2 黑盒测试法 ........................................................................................................... 32 结 论 ................................................................................................................................. 33 致 谢 ................................................................................................................................. 34
错误!未定义书签。
附 录 ................................................................................................................................. 36 附录A .................................................................................................................................. 36 附录B .................................................................................................................................. 40
1 绪论
1.1 系统开发的背景及目的 1.1.1 系统开发背景
在国外,传统的项目管理方法较于国内相对成熟。国外的研究者在其研究过程中付出了很多努力,也收获了很多成果。国外的系统主要是改进了传统的方法,在研究传统方法的过程中,对原有模型的改造和算法上下了大量的功夫。通过吸收了传统方法中的精华,对原有模型进行改造,对项目管理知识体系的实证研究,规范研究均获得了新进展。
项目管理知识体系最先由美国项目管理协会提出,由1976年发展至今,关于企业项目管理的理论体系也在日臻完善,并在全球范围内普及推广,企业项目管理软件的功能在不断地提高,使得企业项目管理从理论走向了实际实施,进而发挥了很高的效益。现如今,很多跨国公司在企业中都采用企业项目管理技术和企业项目解决方案。渐渐的形成了企业项目管理化的局面。
近些年来,国内对于企业级项目管理软件关注的人越来越多,从从前的个人到今天的企业,由此可见在未来的企业级项目管理工具需要在满足单项目管理的需求下,同时也要满足企业级项目管理的需求。企业级项目管理软件作为IT企业整个系统中的一个子系统。企业级项目管理工具要具有高度的可集成性,以便项目管理系统与其他的业务管理系统的整合,这样才能发挥较高的管理效率。 1.1.2 系统研究的意义
项目管理作为一种管理方式在国际上获得了广泛的应用,已经从80年代仅限于建筑,国防,航天等行业迅速发展到今天的计算机,电子通讯,金融业甚至政府机关等众多领域。随着计算机系统的高速发展,项目管理技术的不断进步,各种各样的项目管理软件层出不穷的出现,其功能,特点,应用对象也各不相同。随着各行各业的不断发展,企业内的项目拓展和投资比比皆是。为了提高项目管理水平,赢得市场竞争,特别是加入WTO后在国内,国际市场上拥有与国际接轨的项目管理人才,越来越多的业界人士正通过不同的方式参加项目管理培训并力争获得权威的项目经理资格认证。新世纪项目
管理的迅速兴起,给软件企业的发展带来了前所未有的发展机遇。
因此,研究如何建立一个精简的,有效的企业项目管理体系,企业项目管理系统内如何能够有效的支持企业项目管理,提高企业的项目管理能力,具有非常重大的实际应用意义。
1.2 系统的实用价值
项目管理系统能给企业带来很多的实用价值,主要作用如下: (1)精确性
应用项目管理软件的一个主要益处就是可以大项目大提高精确性,对于大型项目的计算资源使用情况是非常困难的,项目管理软件有精确的算法来计算项目信息并设有大量的内部例行程序检察用户的错误。
(2)经济型
项目管理软件的售价对大多数企业业务而言确实物有所值。 (3)使用简便
近几年来,项目管理软件的操作使用变得极其简单,稍加训练就可以完全掌握。诸多优点,使得项目管理软件的用户迅速增加。
(4)处理复杂问题的能力
项目管理软件在处理大型项目的某些方面确实比人工简便的多。对于只有少数活动的短期项目,人工方法可以使用,但是如果项目有数以千计的活动,上千种资源,项目管理软件处理复杂工作的协助作用就显得格外重要。
(5)可维护性和可更改性
对人工系统进行项目信息的维护和修改,通常比较麻烦。例如,对某个项目的管理没有应用计算机,那么每次发生变化时,项目人员就不得不人工重新设计,这就显得非常麻烦。利用项目管理软件资源的任何更改都会自动反应到网络图表,成本表以及资源颁布表等这些项目文件中。
(6)保持纪录
项目管理软件的一个主要优点就是它能很好的保持纪录。例如,可以保护有关每个团队成员的进度计划,以及各项任务所用资源的数据资料。
(7)速度
收集好相关数据资料并且输入后,软件就能非常迅速地进行几乎每一种想出来的计
算。系统在分秒之内便可完成修改工作。
(8)假设分析
进行假设分析是项目管理软件的一个超前进步的功能,也是它的一个显著优点。假设分析是用户可以了解项目中发生的各种情形的效果。用户在软件上运行不同的情景,然后做出评估。这样,项目经理对某些偶发事件就可以做好计划准备,并估计相应的结果。
1.3 部门项目管理的现状及发展趋势
部门项目管理早起的概念是基于项目型公司而提出的,即“管理整个企业范围内的项目”,它着眼于企业层次总体战略目标的实现对企业中的诸多项目实施管理。随着外部环境的发展变化,项目管理方法在长期组织中广泛应用已经不局限与传统形式的“项目型公司”,生产运行型企业或者政府部门等非企业型组织也广泛的实施项目管理。
现代项目管理的日趋发展,让我们看到了部门项目管理在我们生活中广阔的应用空间。现如今,各种各样的项目管理软件如雨后春笋般出现。总体来看,在新的商业环境下,项目管理已成为企业发展的有力保障,企业部门项目管理成为未来长期性组织管理的一种趋势。尽管我国众多企业还未真正意义上的实现企业项目管理,但在许多企业中推行企业项目管理具备了优秀的基础条件,项目管理的国际化正形成趋势潮流。 1.4 本文的章节安排
本文共分六章,具体安排如下:
第一章为绪论。介绍了部门项目管理系统的开发背景和研究意义、实用价值、发展现状及其趋势。此外,还对本文的章节安排做了简要的介绍。
第二章为系统开发环境。介绍了实现本系统的平台体系、前后台的开发环境、J2EE概述及SSI的简介
第三章为系统分析。分析了系统的可行性和用户需求。
第四章为系统概要设计。介绍了系统的总体设计、系统的E-R图及数据库的概要设计。
第五章为系统的详细设计。介绍了系统的各个模块:登录模块、员工管理模块、项目管理模块、部门管理模块及产品管理模块。
第六章为系统测试。介绍了系统测试平台和测试方法。
2 系统开发环境
目前在系统的应用开发领域中,主要分成了两种主流的编程体系,一种是基于浏览器的B/S(Brower/Server)的结构,另一种则是C/S(Client/Server)结构,如今相关系统的开发设计中都选择B/S结构,在本次的企业项目管理系统开发设计中,选择的就是开发环境为B/S结构的体系,采用基于SSI的框架,使用JSP技术,后台数据库选择了Oracle。
2.1 系统平台体系结构选择
在本系统中的应用开发领域主要采用了B/S结构。B/S结构即浏览器和服务器结构,是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发,维护和使用。客户机上只要安装一个浏览器,服务器安装了Oracle,Sybase,Informix或SQL Server等数据库,本设计采用的是Oracle数据库,浏览器通过Web Server同数据库进行数据交互。在这种结构下,用户界面主要通过浏览器实现,节约了开发成本。
应用服务器 数据库服务器 Web服务器 客户端浏览器 …… 图2.1 B/S结构
客户端浏览器
B/S最大的优点是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装,零维护。对于系统的扩展非常容易。现如今,B/S结构的使用越来越多,特别是由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担;并增加了交互性,能进行局部实时刷新。
2.2 系统开发环境 2.2.1 前台开发环境
前台开发环境即JSP的开发环境。JSP(Java Server Pages,Java服务器主页)技术为创建显示动态生成内容的Web页面提供了简捷而快速的方法。JSP技术的设计目的使得构造基于Web的应用程序更加容易快捷,这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。
JSP是在普通Html中嵌入了Java代码的一个脚本。由于JSP使用JAVA作为程序设计脚本语言,因此需要建立Java的运行环境,编译和调试运行Java应用程序,因此需要安装JDK(Java Develop Kit,Java开发工具包)。同时,JSP是基于Web的java应用程序,因而它需要有特定的运行环境,即解释器。所以我们同时也要安装由Apache开发的Tomcat,因此建立JSP运行环境需要安装两个软件:j2sdk和Tomcat。
配置java运行环境即安装JDK,安装了JDK就是建立好了J2SE运行环境 。安装结束后,需要配置JSP运行环境。首先需要安装Web服务器的tomcat。安装完毕后 ,打开Tomcat后,打开浏览器,在地址栏中输入“http://localhost:8080”,可以看到Tomcat的欢迎界面。
只要我们看到了这个界面,就说明安装成功,并且JSP的运行环境已经配置完毕。在此需要注意的是:如果系统中已经有其他的程序占用了8080端口,在启动时会失败。可以通过修改端口来解决问题。 2.2.2 系统后台数据库环境
本系统设计后台所需的开发工具是Oracle10g。Oracle数据库系统是美国Oracle公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器体系结构的数据库之一。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,它具有完整的数据管理功能,具备完备关系,实现了分布式处理的所有功能。
Oracle是当前最流行的大型数据库之一,它支持包括32位Windows,64位Windows,OS,HP-UX,ALX5L, Solaris和Linux等多种操作系统。
Oracle具有完整的数据管理功能,可解决数据的大量性,数据的持久保存,数据的共享,数据的可靠等诸多问题。同时,它是关系完备的产品,关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显示的表示;保证访问,保证视图更新,只要形成视图的表中的数据变化了,相应的视图中的数据同时变化。Oracle数据库自第5版
就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能。用Oracle能轻松的实现数据库仓库的操作。 2.3 J2EE平台概述
J2EE是java2 platform,Enterprise Edition的缩写,它是由美国的Sun Microsystems公司提出的一种用于开发分布式企业级应用程序的技术架构。J2EE提供了一个多层次的分布式应用模型和一系列开发技术规范。J2EE简化了开发大型企业及应用系统的难度。如今,J2EE平台已经成为了开发分布式企业级应用的标准平台之一。 2.3.1 J2EE规范
J2EE平台由一整套服务,应用程序接口和协议构成,它对于开发基于Web的多层应用提供了在功能上的支持,以下对J2EE中的4种技术规范进行描述:
(1)JDBC(Java Database Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径。JDBC对数据库的访问也具有平台无关性。
(2)JSP(Java Server Pages):JSP页面由HTML代码和嵌入其中的java代码组成。服务器在页面被客户端请求以后对这些代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
(3)Java Servlet: Servlet是一种小型的Java程序,它扩展了Web服务器的功能。 (4)XML (Extensible Markup Language):XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。 2.3.2 J2EE体系结构
J2EE提供了基于组件的方式来设计,开发,组装和部署企业应用。J2EE使用了多层分布式的应用模型,主要通过以下几层来实现:
(1)客户层,运行在客户计算机上的组件。 (2)Web层,运行在J2EE服务器上的组件。 (3)业务层,运行在J2EE服务器上的组件。
J2EE应用程序是由组件构成的。应用程序客户端和Applet是指运行在客户计算机 上的组件。基于Java Servlet和JSP技术的组件叫做Web组件,主要运行在服务器上。企业Java Bean组件叫业务组件,也运行在服务器上。下面对J2EE的三个应用模型进行简要说明。
(1)客户端
J2EE客户端可以是一个Web组件或者是一个应用程序客户端。主要是Web客户端包括web页面和web浏览器;小应用程序,主要运行在安装了Java虚拟机的web浏览器的客户端;应用程序客户端,主要运行在客户机,可以提供用户界面;Java Bean组件结构,在服务器和客户端两层中包括了基于Java Bean的组件结构,通过Java Bean可以实现数据的流动,可以在应用程序客户或Applet与运行在J2EE服务器上的组件之间,或者是在J2EE服务器和后台数据库之间;J2EE服务的通讯,客户层可以直接与J2EE服务器上运行的业务层之间通讯,也可通过运行在Web层中的Servlet和JSP来实现。
(2)Web组件
J2EE的web组件可以是Servlet或JSP页面。 (3)业务组件
业务组件是指由位于业务层的企业Bean执行的逻辑,这些业务代码能够解决商业 领域上的一些重要的需求。现在主要有三种不同类型的企业Bean:会话Bean,实体Bean和消息驱动Bean。会话Bean代表客户的一次短暂的会话过程。在客户执行完成后,会话Bean以及它所包含的数据也随之流失。实体Bean代表的是持久的数据,既存储在数据库的一行纪录,即使客户终止或者服务器关闭,在J2EE底层确保实体bean的数据被保存下来。
(4)企业信息系统层
企业信息系统层处理企业信息系统的软件,包括企业组织结构系统。
对以上关于J2EE体系结构的概述,可以归纳到以下几个概念,首先EJB即Enterprise Java Bean,是一种组件架构,用于开发和部署面向对象的,分布式的,企业级的应用程序。
EJB包括会话Bean(session bean)分为无状态会话Bean(stateless session bean)和有状态会话Bean(stately session bean),实体Bean(entity bean)分为Bean管理实体Bean和容器管理实体Bean,由于这种Bean对应于数据库中的记录,所以数据库记录的任何改变也被同步到组件池中的相关bean中,这个过程叫做持久性。消息驱动Bean(message-driven bean)。
其次,容器即container,一个实体,它管理组件的生命周期,安全,部署,和运行时服务。每个类型的容器都只提供与相应类型的组件相关的服务。如EJB,WEB,JSP,
Applet和应用程序客户端。其中,EJB容器和Web容器都运行在J2EE服务器中。 2.4 SSI框架介绍
1、Struts2框架技术
Struts2框架是从Web Work基础上发展而来的。因为Struts2是Web Work的升级,并不是全新的框架,因此稳定性,性能都很好。并且拥有了Struts1和Web Work的优势。下面将会详细介绍Struts2的常用的知识点。
MVC思想,MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。MVC思想将一个应用分成三个基本部分,Model(模型),View(视图)和Controller(控制器),其中Model实现系统中的业务逻辑,通常可以用Java Bean或EJB来实现;View用于与用户的交互,通常用JSP来实现;Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示。这三个部分协同工作,从而可以提高应用的可扩展性及可维护性。在Struts2中,Struts2是一个pull类型的MVC。其中,Action充当MVC的模型的model部分,JSP作为MVC的模型的view部分,过滤器和拦截器作为MVC的模型的controller部分。
Struts2的特点:无需与Servlet API整合,更容易测试;优雅的请求参数封装;灵活的试图技术;丰富的表达式语言;机动、灵活、简单的配置;线程安全的控制器(Action);霸气的插件。
2、Spring框架技术
Spring是一个开源框架,它由Rod Johnson创建。主要是为了解决企业应用开发的复杂性而创建的。Spring使用基本Java Bean来完成由EJB完成的事情。Spring的用途不仅限于服务器端的开发。由于Spring的简单性,可测试性和松耦合性。任何的Java应用可以使用Spring。
Spring是一个轻量级的控制反转(IOC)和面向对象(AOP)的容器框架。
轻量:主要从大小和开销两方面而言。此外,Spring是非侵入式框架,主要体现在,Spring应用中的对象不依赖于Spring特定类。
控制反转:Spring通过一种控制反转(IOC)的技术促进了松耦合。控制反转应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用转移到了外部容器,控制权的转移即所谓的反转。在运行期,由外部容器
动态的将依赖对象注入到组件中即称为依赖注入。依赖注入主要有三种方式:接口注入,属性注入,构造函数注入。
面向切面:Spring还提供了面向切面编程的丰富支持,面向切面编程主要是针对业务处理过程的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
容器:Spring包含并管理应用对象的配置和生命周期,它是一种容器,使得用户可以配置自己的每个Bean如何被创建,以及Bean创建单独的实例或生成一个新的实例,及它们之间如何相互关联。
框架:Spring可以将简单组件配置,组合成为复杂的应用。在Spring框架的应用中,应用对象被声明在一个XML文件中。Spring当然也提供了很多方便的基础功能如事务管理,持久化框架集成等等。
基于这些Spring的特征,我们在应用开发中可以编写出更加方便管理,方便测试的优秀代码。同时也为Spring中的各种模块提供了大力的支持。
Spring框架由7个定义明确的模块组成。下面将简要介绍这7个模块。
(1)核心容器:核心容器是Spring框架中最基础的部分,通过依赖注入(Dependency Injection)特征来实现容器对Bean的管理,即是由核心容器提供的。在这其中最基本的概念是Bean Factory,它是任何Spring应用的核心。这里最基本的概念是Bean Factory,Bean Factory是工厂模式的一个实现,它使用IOC将应用配置和依赖说明从实际的应用代码中分离出来。
(2)应用上下文(Context)模块:上下文模块使它成为一个框架。这个模块拓展了Bean Factory的概念。主要增加了对国际化消息,事件传播,以及验证的支持。另外,这个模块还提供了许多企业服务。
(3)Spring的AOP模块:AOP模块是在Spring应用中实现切面编程的基础。AOP主要是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的莫个步骤或阶段,以获得逻辑过程中各个部分之间低耦合的隔离效果。AOP的实现步骤是首先确定连接点(切点),确定处理逻辑调用模式,编写处理逻辑,配置ProxyFactoryBean实例。
(4)JDBC抽象和DAO模式:使用JDBC经常导致大量的重复代码,取得连接,创建语句,处理结果集,然后关闭连接。使用了Spring的JDBC和DAO模块就可以抽取这些没必要的重复代码,保证数据库访问代码干净简介,防止因关闭数据库资源失败而
引起的其它问题。另外,这个模块还是用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务。
(5)对象/关系映射集成模块:Spring还提供了ORM模块个使用对象/关系映射工具的用户。Spring并不是实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括如Hibernate,JDO和IBATIS SOL映射。Spring的事务管理则支持这些经典的ORM框架。
(6)Spring的Web模块:Web上下文模块建立与应用上下文模块之上。这个模块提供了面向服务的支持。
(7)Spring的MVC框架:Spring为构建Web应用提供了一个功能全面的MVC框架。Spring的MVC框架使用IOC实现了控制逻辑和业务对象的弯曲分离。
通过以上内容我们对Spring框架的详细介绍,我们了解到由于spring框架的自身特点使得J2EE更加容易使用,面向接口而不是针对类编程,减轻了开发的复杂度,Spring框架还会帮助我们,使代码的测试更加简单,同时Java Bean提供了应用程序配置的最好方法。Spring框架技术的出现让我们这些Web开发的用户获益匪浅。
3、Ibatis框架技术
Ibatis一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,后来成为一个基于Java的持久层框架,包括SQL Maps和Data Access Objects(DAO)。
相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Ibatis是一种“半自动化”的ORM实现。Ibatis框架让你能够更好的在JAVA应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。另外还包括一些可能有用的工具。SQL Maps:Sql Maps 是整个Ibatis Database Layer的核心,通过使用它可以节约数据库操作的代码量。Sql Maps使用一个简单的XML文件来实现Java Bean到SQL statement的映射。与其他框架相比,其最大的优势在于简单。Data Access Objects允许通过一个简单接口来操作数据,从而隐藏实现的细节。使用DAO,可以动态的配置应用程序来访问不同的实体存储机制。Ibaits的工作流程:SQL Maps提供一个简单框架,通过XML描述JavaBeans,MAP implementations甚至原始类型的包装到JDBC。
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开
发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系。因此,对象-关系映射系统一般以中间见的形式存在,主要实现程序对象到关系数据库库数据的映射。
POJO(Plain Ordinary Java Objects)一般来讲,POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。
4、SSI在本文中的工作原理
本节将通过所开发的项目的MVC模式,对SSI框架在项目开发中的应用进行简要的介绍。
首先是在控制层,利用Struts2的标签功能,在Action中直接与JSP页面上的数据进行交互。同时,在调用业务逻辑层的应用时 ,Struts2提供了对Spring的支持。开发人员需要完成对struts.xml的配置工作和编写各个Action类。
在业务逻辑层,可以利用Spring框架的依赖注入来实现对业务逻辑类和DAO类的实例编写;在事务处理的方面,我们可以利用Spring提供的面向切面的事务处理功能,这样就可以使得数据的事务控制与数据访问接口的实现想脱离。在对象关系映射方面,利用Spring对数据库连接池的托管和对Ibatis框架的支持。开发人员需要完成对数据源的配置,对不同模块所对应的application*.xml文件的配置,以及对业务逻辑的接口定义和具体业务逻辑实现的代码编写。
在持久层,利用Ibatis提供的半自动化的对象关系映射的实现,开发人员需要编写具体的SQL语句,为系统设计提供了更大的自由空间。另外,开发人员需要完成对SqlMapConfig.xml 的配置,以及对DAO接口的定义和DAO接口的实现。
在各层之间进行交换的过程中,利用数据传输类进行数据的传递和交互。其中,数据传输类与数据库表一一对应。
SSI框架能够降低我们代码的耦合度,增强了代码的健壮性和可重用性,加快了开发速度,但是也有许多不足之处,也会给我们带来不便。
3 系统分析
3.1 可行性分析 3.1.1 可行性研究
可行性研究是在系统调查的基础,主要对于要开发的系统是否具有必要性,可能性,从技术上,经济上,社会各个方面对所开发系统进行分析和研究,以避免可能发生的投资失误的情况,保证系统开发的顺利成功。可行性的研究目的就是用最小的成本,在尽可能短的时间内解决尽量多的问题。 3.1.2 经济可行性分析
在经济可行性方面,主要考虑开发成本,使用成本,回报三方面。
首先,开发成本主要使用Windows操作系统,Eclipse,在数据库方面主要使用Oracle10g进行数据操作。这些软件是开发系统所需成本。开发成员主要一人负责,开发时间大约半个月。回报主要系统开发成功,可以实现项目管理系统的所有功能。 3.1.3 技术可行性分析
在技术上的可行性分析主要是分析当前所用软件以及开发人员所使用的技术能否顺利完成开发项目工作,硬件,软件等等能否满足开发人员的需要。本系统主要采用了当前最流行的Browser/Server模式。数据库服务器选择的是Oracle10数据库,它能够处理大量的数据。因此,本系统的软件开发平台可行。硬件方面,科技飞速发展的今天,硬件更新速度也越来越快,容量也越来越大,价格越来越低,硬件平台也满足项目开发需要。
3.1.4 社会可行性分析
首先,本系统从功能模块的提出到各个界面的设计再到每个功能模块的开发与实现到后期的测试过程,全部由本人独立完成,开发过程参考,借鉴过网上资料和所学课程,因此不存在侵权的法律问题。其次,在开发过程中,各部门配合将已有人员,项目等有关信息导入系统。完成这些工作后,项目管理会变得更加简便。最后,系统的大部分功能模块都是根据需求分析提出的要求完成的,并且在开发过程中对需求分析的介绍进行了深入的研究,因此,已经熟悉业务流程。
3.1.5 操作可行性分析
操作可行性主要分析系统的运行方式,操作规程在用户组织内是否可以有效,顺利实施等问题。在网络迅猛发展的今天,人们对于操作是否简洁而方便越来越重视,本系统的设计就能够做到这一点,它很好地解决了人工操作的不便,在实践上具备了可行性。本系统的设计清晰,用户界面良好,操作上简介,有完善的异常处理机制和验证提示信息,因此操作方面可行。 3.2 需求分析 3.2.1 项目目标
本系统的目标是要完成一个基于B/S架构的项目管理系统功能的设计和开发。这些模块主要包括项目管理,账号管理,部门管理,产品管理等功能。实现对企业所开发的各个项目信息进行管理,以及部门员工信息的管理,实现管理自动化,系统化,规范化。本系统开发过程主要采用基于SSI框架技术(Strut2,Spring,Ibatis),使用JSP页面技术,后台数据库采用Oracle开发而成,保证查询,添加,删除,修改等功能。本系统的模块主要是实现账号管理,项目管理,部门管理,权限管理等模块的功能。 3.2.2 用户需求和模块功能
需求分析是从客户的需求中提取出软件系统以帮助用户解决业务问题。通过需求分析中对用户业务问题的分析,规划出系统的功能模块,即定义用例。这个步骤是是开发者理解需求的升华,关系到系统的质量。对于企业来说,每个新项目的创建,项目和人员的管理是一项非常繁琐的工作。为了实现项目人员管理的规范化,科学统计和快速查询的需要,提高的工作效率,降低日常管理的工作量,运用先进的计算机信息技术,开发部门项目基本信息平台显示尤其重要。下面将具体讲解每个模块部分的具体需求。
账号管理模块:基本的功能有人员登录,每个用户都有自己的账号和密码,和登录权限,每个用户根据自己的用户名和密码和用户权限来登录进入系统。登录系统后根据用户的不同权限,对系统执行不同的功能。本系统登录用户主要分为三种:高级管理员和人力资源管理员,可以对员工账号管理模块,部门管理模块,项目管理模块三个模块的添加,修改,删除,查询等操作。SQA可以对项目管理模块进行添加,删除,修改,查询等操作。普通用户不可以对这些模块进行操作,只可以查看,操作按钮对普通用户不可见。该功能只是面对未登录的用户,登陆成功后返回主页。在网站中显示用户信息。若登录失败,则重新返回到登录页面,并提示用户登录失败信息。如果用户名或密码有
错,系统拒绝用户登录,需要提示错误信息;查看员工列表:用户使用“查看员工信息”功能,来查看所有在系统中的注册用户的信息,姓名,E-mail,角色,用户类型,是否允许登录等信息。同时可以根据姓名,E-mail,角色条件来查询符合条件的成员记录;成员信息录入:登录到系统的管理用户可以添加一个用户的信息,用户名,密码,姓名,电话,邮件,员工类型,员工部门,是否允许登录,角色,将成员信息保存到系统的成员表中,同时在后台数据库中删除掉员工信息。修改成员信息,管理用户可以对用户信息及时的更新,同时后台数据库也要更新修改后的员工信息。删除成员信息,管理用户也可以对变动的用户从用户表中进行删除。删除的员工信息要在后台数据库中移除。
项目管理模块:在项目管理模块中我们要完成对项目的多种处理功能包括:添加一个项目信息,包括:项目编号,项目名称,项目类型,PM,项目状态,项目的开始时间,计划结束时间,以及项目的简介,将新建的项目信息保存到项目信息列表中,将添加的内容同步到数据库中保存。修改项目详细信息,将更新的项目信息同步到后台数据库中。对当前的项目选择成员,将选择的项目成员添加项目成员表中,同时将添加的内容添加到后台数据库项目成员表中。查询项目全部详细信息,能根据项目名称,项目编号,项目开始时间条件查询所开发的项目信息,能查询每个项目的详细信息。
部门管理模块:在部门管理模块我们要完成的功能主要包括,添加一个部门信息,包括:部门编号,部门名称。修改部门信息,删除部门信息,查询所有部门信息。
产品管理模块:在产品管理模块我们要完成的功能主要包括,添加一个产品信息,包括:产品编号,产品名称,消费群体。修改产品信息,删除产品信息,查询所有产品信息。
4 系统概要设计
概要设计的主要任务是把需求分析得到DFD转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分,建立模块的层次结构及调用关系,确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述,确定数据的结构特性,以及数据库的设计,显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。 4.1 系统总体设计 4.1.1 系统设计目标
企业项目管理系统主要是研究在项目的开发过程中,企业对多个项目如何进行同时进行管理,项目开发人员可以随时监督每。同时,能够使内部工作效率大大提高,部门间的协同工作水平也会大大提高,全程监控项目实现的整个流程,对企业项目管理的规范业务上的薄弱环节也会大大改善。 4.1.2 系统功能模块图
经过对系统的需求分析的了解,我们对系统的功能模块进行了划分,我们主要根据系统的几大模块包括项目管理模块,账号管理模块,部门管理模块逐步了解项目。图4.1是本系统所涉及的功能模块图。 部门项目管理系统 账号管理模块 项目管理模块 部门管理模块 产品管理模块 图4.1 功能模块图 4.2 E-R图
(1)用户实体,如图4.2所示:
编号 用户编号 密码 用户类型 电子邮箱 用户 系统限制 用户名称 用户部门 部门角色 电话
图4.2 用户E-R图
(2)项目实体,如图4.3所示:
编号 项目编号 项目类型 项目 项目名称 项目描述 项目状态 项目开始时间 项目结束时间
图4.3 项目E-R图
(3)项目成员实体,如图4.4所示:
项目编号 角色编号 人员编号 项目成员
图4.4 项目成员E-R图
(4)用户角色实体,如图4.5所示:
角色名称 角色编号 角色定义 角色类型 角色描述 用户角色 图4.5 用户角色E-R图
(5)产品实体,如图4.6所示:
产品编号 产品名称 编号 消费者 产品 图4.6 产品E-R图
(6)部门实体,如图4.7所示:
编号 部门名称 部门 图4.7 部门E-R图
4.3 数据库概要设计
本系统将使用员工表,项目信息表,部门信息表,项目成员表来记录系统的数据信息,详细表定义结构如下所示:
(1)员工信息表:用于存放系统用户的信息,系统规定只有系统用户才用资格登录系
统,并对系统有相关的操作。具体设计如表4.1所示: 表4.1 bs_user表 字段名 ID USER_ID USER_NAME PASSWORD DEPRATMENT_ROLE TELEPHONE EMAIL USER_TYPE USER_DEPARTMENT 说明 编号 员工编号 员工名称 密码 部门角色 电话 电子邮箱 员工类型 员工部门 类型 VARCHAR VARCHAR VARCHAR VARCHAR NUMBER VARCHAR VARCHAR NUMBER VARCHAR 长度 255 20 30 16 19 20 30 1 255 备注 不为空 主键 唯一键 -- -- -- -- -- 外键 (2)项目信息表:用于记录与项目有关的数据信息,具体设计如表4.2所示: 表4.2 bs_project表 字段名 ID PROJECTNO PROJECT_NAME PROJECT_TYPE PROJECT_DESCRIPTION PROJECT_STATE PROJECT_START_TIME PROJECT_END_TIME 说明 编号 项目编号 项目名称 项目类型 部门编号 项目状态 项目开始时间 项目结束时间 类型 VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR DATE DATE 长度 255 20 100 255 100 255 -- -- 备注 不为空 主键 唯一键 -- -- -- -- -- (3)项目成员表:用于记录与项目成员有关的数据信息,具体设计如表4.3所示: 表4.3 bs_projectmember表 字段名 ROLE_ID PROJECTNO USER_ID 说明 角色编号 项目名称 员工名称 类型 NUMBER VARCHAR VARCHAR 长度 19 20 100 备注 主键 外键 外键 (4)部门表:用于记录与部门有关的数据信息,具体设计如表4.4所示:
表4.4 bs_department表 字段名 ID DEPARTMENT_NAME 说明 部门编号 部门名称 类型 NUMBER VARCHAR 长度 19 20 备注 主键 唯一键 (5)角色表:用于记录与角色有关的数据信息,具体设计如表4.5所示: 表4.5 bs_roles表 字段名 ROLE_ID ROLE_NAME ROLE_TYPE USER_DEFINED ROLE_DESCRIPTION 说明 角色编号 角色名称 角色类型 用户定义 角色描述 类型 NUMBER VARCHAR NUMBER NUMBER VARCHAR 长度 19 60 10 10 180 备注 主键 唯一键 -- -- -- (6)产品表:用于记录与产品有关的数据信息,具体设计如表4.6所示: 表4.6 bs_product表 字段名 ID PRODUCTID PRODUCTNAME CUSTOMER 说明 编号 产品编号 产品名称 客户 类型 VARCHAR VARCHAR VARCHAR VARCHAR 长度 255 255 50 50 备注 不为空 -- -- --
5 详细设计
详细设计是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。详细设计的主要任务是设计每个模块的实现算法,所需的局部数据结构。
本章将使用图形,代码,语言等工具将系统的每个模块处理过程的详细算法描述出来。
5.1 系统登录模块说明 5.1.1 功能简介及其页面的实现
由于此系统的使用者主要是公司的管理人员,同时也涉及到本公司的所有员工,每个部门员工负责不同的业务,拥有不同的权限,这就要求系统设计的权限需要明确,保证数据的安全性。系统对不同的操作者设置了不同的访问和操作权限,这样就保证了系统信息的安全型 。
根据系统的要求,本系统的登录用户分为可操作全部信息的管理员和只能查看信息的普通部门用户。
本系统的权限管理主要是通过在不同用户登录系统后,登录成功后的页面,根据登录用户的登录权限决定是否将操作按钮隐藏而实现的。
登录时本系统对用户输入信息做了相关验证,如:提示用户名不能为空,密码不能为空,类型不能为空。在输入了自己的用户名,密码,及选择了权限后,系统将从员工表查找相关信息,如果用户名和密码,以及权限都匹配,就根据用户级别跳转到相应的页面。并用session记录该用户的登录名和用户级别信息。便于登录到相关的用户界面进行一些相关的处理。
员工打开系统就会进入登录页面,再登陆页面输入正确的用户名,密码,登录权限后,有系统判断登录者进入不同的页面,当用户名输入的登录名不存在或密码输入错误的时候系统跳转到错误页面提示用户不存在,只有当用户输入了正确的用户名,密码和类型的时候才能进入项目管理系统。
如图5.1登录页面:
图5.1 登录页面
用户名类型为管理员的员工登录后的页面如图5.2所示:
图5.2 管理员登录后的页面
用户类型为普通用户的员工登录后的页面如图5.3所示:
图5.3 普通用户登录后的页面
5.2 员工管理模块说明 5.2.1 功能简介及其页面的实现
(1)新增员工:
系统对新员工进行信息的添加,这个模块实现了对员工的信息录入功能,并将所填写的相关信息提交到数据库进而保存。员工信息主要包括:员工编号,员工名称,密码,部门角色,电话,电子邮箱,删除标志,员工类型,系统限制,员工部门等。点击提交按钮时,系统会自动检查输入的数据类型是否与定义的数据类型向匹配,如果类型匹配则将数据成功保存。在添加过程中,需要对添加的数据进行验证。添加成功后返回账户管理模块的首页面。操作页面如图5.4所示,其中带“*”的为必填项,员工部门为部门管理模块中的所有部门,用户名的位数也有限定,密码和确认密码必须一致,电话限制为由1开头的11位数字,邮件的格式必须正确,员工部门是部门管理中所包含的部门,并且会随着部门管理中对部门的操作而做相应的变化,如图5.5所示为输入不正确时页面的提示效果。
图5.4 新增员工页面
(2)员工信息查询:
员工查询主要完成员工账号的查询工作,可以查询全部员工的账号信息,也可以根据条件查询符合条件的员工信息。本模块查询条件可以为员工的姓名,电子邮箱,
图5.5 验证错误的页面
角色。因为员工信息的条数众多,所以本部分还针对分页做了相关的处理,例如:对角色是管理员的员工进行筛选,如图5.6所示:
图5.6 员工查询页面
(3)删除和修改员工信息:
对于显示员工信息的资料展示,企业的管理人员需要定期对企业人员的状态进行跟踪和记录,随时更新员工状态的变化。在此模块中,拥有管理权限的管理人员需要对显示员工的信息进行和删除操作,其操作权限仅限于高级管理员和人力资源管理员,普通
用户和SQA在登录时修改与删除按钮是不可见的,管理员选中要删除或修改的员工信息,定位到员工编号,进而进行操作,操作界面如图5.7所示:
图5.7 删除员工页面
选中需修改员工的信息,再点击编辑人员,此时员工信息会跟踪到修改页面上,大大方便了人员的操作,如图5.8所示:
图5.8 修改员工页面
5.3 项目管理模块说明 5.3.1 功能简介及其页面的实现
(1)新增项目:
公司对新建的项目进行信息的添加,这个模块主要是实现对项目的信息录入功能,并将所填写的内容信息提交到数据库中的项目表信息中进行保存。项目信息主要包括:项目编号,项目名称,项目状态,项目类型,PM,SQA,开始日期,结束日期,产品ID,产品名称,主题,项目描述。点击保存按钮,系统自动检查输入的数据类型是否与
定义的数据类型匹配,如果匹配则保存数据,点击重置按钮则将输入的信息清空。操作页面,如图5.9所示:
图5.9 新增项目页面
(2)项目信息查询
项目的查询模块主要完成项目的查询操作,对项目编号,项目名称,项目开始时间三项进行的查询。
查询项目的详细信息可分为两种查询方式:模糊查询和精确查询。如模糊查询可以按项目编号和项目名称查询,点击查询就可以显示在这个开始时间进行的项目。精确查询可以按照项目开始时间进行查询,点击查询按钮就可以显示该项目的详细信息,同时可以对查询到的项目进行修改。如图5.10所示:
图5.10 查询项目页面
(3)项目信息的删除和修改:
本模块主要对项目的信息的维护操作,拥有权限的用户必须对项目的状态进行跟踪与记录,随时更新状态发生变化的项目。主要是对显示的项目进行修改和删除操作,以及对项目的选定项目成员等操作,此操作仅限于有权限的用户。
用户在5.10所示的页面上选中所要删除项目前面的单选按钮再点击删除项目即可删除所选中的项目,操作页面如图5.11所示:
图5.11 删除项目信息
用户在5.10所示的页面上选中所要编辑项目前面的单选按钮再点击编辑项目即可跳转到修改项目的操作页面,同时项目信息也自动跟踪到该页面上,大大方便了人员的操作,如图5.12所示:
图5.12 修改项目信息
(4)选定成员:
每个项目都有员工为其工作,在项目管理的首页面点击添加人员可以为该行对应的项目添加人员,点击添加人员显示的页面中的员工是账号管理中所有成员,图5.13是为
项目编号为1242选定成员的示例,为项目添加了三位成员:阿徐、张韶涵、张涵。点击提交跳转到如图5.14所示页面,同时在项目管理首页面点击分配角色也是跳转到该页面。
图5.13 选定项目成员页面
图5.14 查看项目的成员
5.4 部门管理模块说明 5.4.1 功能简介及其页面实现
部门管理实现的功能有添加部门、修改部门、删除部门、列表显示所有部门的信息,部门管理的首页面如图5.15所示:
图5.15 部门管理页面
(1)新增及修改部门:
企业对新建的部门进行信息的添加,本模块实现对部门信息的录入功能,将所填写的内容提交到数据库中的部门表信息中进行保存。添加部门和修改部门在部门管理页面上,点击添加部门按钮显示的页面如图5.16所示,点击添加按钮系统会自动检查如果匹配则保存数据。点击修改按钮,页面如图5.17所示,数据会自动显示在文本框里,直接对其修改再点击修改即可。若不点击添加部门和修改部门按钮,则添加和修改功能是隐藏的。
图5.16 新增部门页面
图5.17 修改部门页面
5.5 产品管理模块说明 5.5.1 功能简介及其页面的实现
产品管理实现的功能有:添加产品、修改产品信息、删除产品、列表显示所有部门的信息,产品管理的首页面如图5.18所示:
图5.18 产品管理页面
5.5.2 添加产品: (1)新增及修改产品:
企业对产品进行信息的添加,本模块实现对产品信息的录入、修改及删除功能,将所做的内容提交到数据库中的产品表进行保存。添加产品和修改产品在产品管理页面
上,点击添加产品按钮显示的页面如图5.19所示,点击添加按钮系统会自动检查,如果匹配则保存数据。
图5.19 添加产品
点击修改按钮,页面如图5.20所示,数据会自动显示在文本框里,直接对其修改再点击修改即可,若不点击添加产品和修改按钮,则添加和修改功能是隐藏的。
图5.20 修改产品信息
6 系统测试
系统测试,英文是System Testing。是将已经确认的软件,计算机硬件,外设,网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符或与之矛盾的地方,从而完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包括软件所依赖的硬件,外设甚至包括某些数据,某些支持组件及其接口。 6.1 测试平台
测试环境,如下表所示:
表6.1 测试表
软件环境
操作系统 数据库 测试平台 浏览器
6.2 测试方法
中文版Windows 7
Oracle10g VS20XX IE6.0/7.0
CPU 内存 网卡 带宽
硬件环境
2.80GHz 1M 100Mbps 1M
本系统而言,要查找出开发过程中的错误,就要保证对系统的测试尽可能的全面,一方面通过软件测试来检查本系统的每个功能的执行情况;另一方面,详细测试软件执行的内部过程是否完全按照规格说明书上的规定正常运行。这两方面的测试分别称为黑盒测试法和白盒测试法。 6.2.1 白盒测试法
白盒测试也称作结构测试或者逻辑结构测试。白盒测试主要是按照程序内部的结构测试程序,通过测试来检测系统内部动作是否按照设计规格说明书的规定正常运行,检验程序中的每条通路是否都能够按照预定的要求正确执行。白盒测试主要是针对系统程
序的细节来进行测试,主要是通过设计测试数据,检验程序的每个模块的执行路径的具体情况。这些执行路径包括程序的逻辑判定,循环的边界条件,和界限内的条件等等。白盒测试适用于程序的逻辑相对简单时,才能够保证验证所有的路径。当遇到多重选择或者多层的循环嵌套时,路径的数目就会非常庞大,实现所有路径的验证就变得非常困难。因此,对于我们来说,对于测试数据的方法的选择就起到了非常关键的作用。 6.2.2 黑盒测试法
黑盒测试也称功能测试,主要是通过测试来检测每个功能能否都正常使用。黑盒测试法是把程序看作一个黑盒子,测试过程中不需要考虑程序的内部结构和具体测试处理过程的测试方法。它只需要检查程序的每个功能能否按照规格说明书的内容正常使用,程序能否接收数据并产生争取的输出信息,能否保证外部信息的完整性,安全性。
黑盒测试主要测试的是功能,黑盒测试法设计程序测试用例的方法主要有等价划分法,边界值分析法,错误推测法,主要的目的是设计以最少的测试数据子集来尽可能多地测试出软件系统中的错误。本系统主要采用的即是黑盒测试法。
结 论
本文主要介绍了基于Struts2+Spring+Ibatis 框架下项目管理系统的设计与实现,该系统实现了对大量的项目进行管理,从而大大提高了企业管理效率。在控制层,利用Struts2的标签功能,在Action中直接与JSP页面上的数据进行交互。在业务逻辑层,可以利用Spring框架的依赖注入来实现对业务逻辑类和DAO类的实例编写。在持久层,利用Ibatis提供的半自动化的对象关系映射的实现,开发人员需要编写具体的SQL语句,为系统设计提供了更大的自由空间。
本文通过需求分析和系统,实现了部门项目管理系统。该系统实现了以下四个功能: (1)账户管理:实现对员工的增、删、改以及对所有员工的模糊查询。 (2)项目管理:实现对项目的增、删、改、查以及为某个特定项目分配人员。 (3)部门管理:实现对部门的增、删、改、查功能。 (4)产品管理:实现对产品的增、删、改、查功能。
除此之外,在四个模块中都可以退出当前用户的登录状态而跳转到登录页面上,此外,还对人员的登录做了验证,不同角色登录的结果不一样,管理员登录之后能对账号管理中的增、删、改功能进行操作,而普通用户登录后看不见增、删、改的按钮,因而不能对其进行操作。增、改功能还有对应前台的验证。
当然,本系统仍存在一定不足,如:在项目管理模块中,为项目成员分配具体角色。还应该增加一个模块给员工提出问题反馈意见。
致 谢
首先感谢我的导师李雅珍老师在设计过程中,从课题的选择、技术上的指导到具体的设计中,指导我阅读相关的资料和书籍,引领我快速入门,在开发的过程中对我的系统给出了一些及时的建议,在这段期间,我始终感受着老师的精心指导,受益匪浅,在此向老师表示深深的感谢。值得一提的是,李老师对学生认真负责,在她身上,我可以感受到一个学者的严谨和务实,这些都让我受益匪浅,并将终身受用。毕竟“经师易得,人师难求”,希望借此机会向陈老师表示最衷心的感谢!
不积跬步,何以至千里,本课题能顺利完成,也归功于大学期间各位任课老师的认真负责,使我能够很好的掌握和运用专业知识。同时还有这四年来一起学习的同学,感谢所有帮助过我的人。
最后,我还要感谢我的父母在物质及精神上给予的支持,他们不仅培养了我对科学文化的浓厚兴趣,让我在漫长的人生旅途中使心里有了明确的目标,而且也为我能够顺利的完成论文提供了巨大的支持和帮助,在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!我一定会好好的孝敬和报答他们!
[1] 马斗,邱哲,王俊标.JSP开发答疑200问[M].人民邮电出版社,20XX:6-12. [2] 李振华,季小虎.Dreamweaver基础教程[M].清华大学出版社,20XX:5-20. [3] 柳纯路,刘明亮.信息系统项目管理师教程[M].清华大学出版社,20XX:2-15. [4] 任港.Ibatis框架源码剖析[M].电子工业出版社,20XX:30-70.
[5] 苏林忠.基于JSP技术的动态WEB开发[M].河南师范大学学报,20XX:3-10. [6] 李振捷.JSP网站开发典型模块与实例精讲[M].电子工业出版社,20XX:23-38. [7] 李江,张威.实例解析XML/XSL/Java网络教程[M].北京希望电子出版社,20XX:510-531.
[8] 庞永庆.JavaScript网页编程从入门到精通[M].科学出版社,20XX:5-16. [9] 徐明华.Struts基础与案例开发详解[M].清华大学出版社,20XX:34-44. [10] 孟晓峰.数据库系统导论[M].机械工业出版社,20XX:7-15.
[11] 叶键毅.精通JavaEE-Eclipse Struts2 Hibernate Spring 整合应用案例[M].人民邮电出版社,20XX:33-48.
[12] Gary Mark.Spring攻略[M].人民邮电出版社,20XX:3-14. [13] 计文柯.Spring技术内幕[M].机械工业出版社,20XX:146-165.
[14] 刘中兵Java研究室.Java高手真经Java Web核心框架[M].电子工业出版社,20XX:552-688.
[15] Billington.Oracle PL/SQL实战[M].人民邮电出版社,20XX:45-63.
附 录
附录A
Introduction to database information management system
The database is stored together a collection of the relevant data, the data is structured, non-harmful or unnecessary redundancy, and for a variety of application services, data storage independent of the use of its procedures, insert new data on the database, revised, and the original data can be retrieved by a mon and can be controlled manner. When a system in the structure of a number of entirely separate from the database, the system includes a \"database collection\".
Database management system is a manipulation and large-scale database management software is being used to set up, use and maintenance of the database. Its unified database management and control so as to ensure database security and integrity. Database management system users access data in the database, the database administrator through Database management system database maintenance work. It provides a variety of functions, allows multiple applications and users use different methods at the same time or different time to build, modify, and asked whether the database. It allows users to easily manipulate data definition and maintenance of data security and integrity, as well as the multi-user concurrency control and the restoration of the database.
Using the database can bring many benefits: such as reducing data redundancy, thus saving the data storage space; to achieve full sharing of data resources, and so on. In addition, the database technology also provides users with a very simple means to enable users to easily use the preparation of the database applications. Especially in recent years introduced micro-puter relational database management system , intuitive operation, the use of flexible, convenient programming environment to extensive (generally 16 machine, such as IBM / PC / XT, China Great Wall 0520, and other species can run software), data-processing capacity strong. Database in our country are being more and more widely used, will be a powerful tool of economic management.
The database is through the database management system (DBMS-DATA BASE MANAGEMENT SYSTEM) software for data storage, management and use of micro-puter
relational database management system is a database management system software. Information management system is the use of data acquisition and transmission technology, puter network technology, database construction, multimedia technology, business needs, such as the establishment of a management platform, the platform constructed on the basis of pure software business management system (to meet the business needs for the purpose), achieving operational systems of data and information sharing, and based on this structure enquiries, scheduling or decision-making system.
Information system can be manual or puter-based, independent or integrated, batch or on-line. The information system is usually the various types of bination. That is, of course, it can not be independent and is integrated.
1、Independent system to meet a specific application area (for example, personnel management) design. Independent system with its own documents, which are inevitable with a certain degree of redundancy.
2、Integrated information systems through their use of the data were bined. Resource sharing system using a database to achieve integrated objectives. For example, the normal wage system requirements from the human resources and accounting systems found in the data.
3、Artificial system has been developed based on a variety of puter information systems. So far, in a puterized artificial, and still lacks design experience (or) lack of information between users and service personnel exchanges. That is to say, puter-based workflow system directly from the manual system workflow. Often, these systems are independent, and the puter just as a data processor. In the design of these systems, with little regard to their integrated to the end of intent.
4、Information systems according to a batch, on-line processing or both bination classification. In a batch system and data will be handled in batches or reports. For example, banks will be a large number of cheque code, and then the end of the day, in batches of cheques, sorting and processing. Also, in order to prevent an airline ticket agent in Atlanta and another at the same time point of sale outlets from Los Angeles to San Francisco, the last one a flight tickets, airlines must be on-line booking system, in order to reflect the current status of the database. Most on-line information system is successful batch requirements. even if the information resources management (IRM) system, and the potential of the puter information system has been widely recognized, most of the systems is still independent batch system.
Now most of these systems have lost value, but was re-designed as an integrated, online system. By definition, we can see the prehensive requirements of business managers and pany leaders closer cooperation. Information services professionals as consultants, and the integrated information system and business areas of conflict and differences should be resolved by the user groups. Resolve these differences in order to achieve a prehensive environmental information services staff to the challenges posed by the user manager.
中文译文
数据库信息管理系统简介
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。
使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间;实现数据资源的充分共享等等。此外,数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序。特别是近年来推出的微型计算机关系数据库管理系统,操作直观,使用灵活,编程方便,环境适应广泛(一般的十六位机,如IBM/PC/XT,国产长城0520等均可运行种软件),数据处理能力极强。数据库在我国正得到愈来愈广泛的应用,必将成为经济管理的有力工具。
数据库是通过数据库管理系统(DBMS-DATA BASE MANAGEMENT SYSTEM)软件来实现数据的存储、管理与使用的微型计算机关系数据库管理系统就是一种数据库管理系统软件。
信息管理系统是利用数据采集与传输技术、计算机网络技术、数据库建设、多媒体技术、业务需求等建立一个管理平台,在平台的基础上构建的纯软件业务管理系统(以
满足业务需求为目的),实现各业务系统之间的数据和信息共享,并在此基础上搭建查询、调度或者辅助决策系统。
信息系统可以是人工的或基于计算机的,独立的或综合的,成批处理的或联机的。通常的信息系统是上述各种类型的组合。当然它不能即是独立的又是综合的。
1、独立的系统是为了满足某个特定的应用领域(如,人事管理)而设计的。独立系统有它自己的文件,这些文件必然带有一定的冗余性。
2、综合的信息系统通过它们使用的数据而被综合在一起。系统利用一个资源共享的数据库来达到综合的目的。例如,工资系统要求正常地从人力资源系统和会计系统中找到数据。
3、以人工系统为基础已经开发出各种各样的计算机信息系统。到目前为止,在进行人工计算机化时,仍然缺乏设计经验和(或)缺少信息服务人员与用户之间的交流。也就是说,基于计算机的系统的工作流程直接借鉴了人工系统的工作流程。通常这些系统是独立的,而且把计算机仅仅用作为数据处理机。在设计这些系统时,很少考虑到最终要将它们综合的意图。
4、信息系统也能按成批处理、联机处理或二者组合来分类。在成批处理系统中,将事务和数据分批地处理或产生报表。例如,银行将大量的支票编码,然后在一天结束时,将所在支票分批、排序并进行处理。又如,为了防止航空公司在塔拉斯一个售票点与在亚特兰大的另一个售票点同时出售从洛杉矶到旧金山的某一航班的最后一张机票,航空公司系统订票必须是联机的,以反映数据库当前的状态。多数联机信息系统也有成批处理的要求。即使出现了信息资源管理(IRM)系统,而且计算机信息系统的潜力得到了广泛的承认之后,大多数系统仍然是独立的成批处理系统。如今这些系统中多数已经失去了使用价值,而且被重新设计成综合的、联机的系统。通过定义可知,综合要求业务领域经理和公司领导密切地合作。信息服务专业人员可以作为顾问,而有关综合信息系统与业务领域的冲突和差异则应该由用户团体来解决。解决这些差异以真正实现综合的环境是信息服务人员向用户经理提出的挑战。
附录B 部分源代码
1、登录验证LoginServlet.java package .xu.li.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.catalina.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import .xu.li.bean.User;
import .xu.li.dao.impl.UserDaoImpl; /**
* Servlet implementation class for Servlet: LoginServlet * */
public class LoginServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L; /* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet() */
public LoginServlet() { super(); }
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter(\"username\"); String password=request.getParameter(\"password\"); String role=request.getParameter(\"role\");
System.out.println(\"123\"+username+password); ApplicationContext ctx=new
ClassPathXmlApplicationContext(\"conf/spring/beans-dao.xml\"); UserDaoImpl ubdi=(UserDaoImpl) ctx.getBean(\"userDao\"); User ub=new User(); ub.setUserId(username); ub.setPassword(password); ub.setDepartmentRole(role); HttpSession session=request.getSession(); User ub1=ubdi.login(ub);
session.setAttribute(\"login\", ub1); System.out.println(\"\"); if(ub1==null){ request.setAttribute(\"flag\", 0); request.getRequestDispatcher(\"login.jsp\").forward(request, response); } else if(!ub.getDepartmentRole().equals(ub1.getDepartmentRole())){//String比较的地址和值,int比较的是值 System.out.println(\"第0个if\"); request.setAttribute(\"flag\", 2); request.getRequestDispatcher(\"login.jsp\").forward(request, response); } else if(ub1!=null&&(ub.getDepartmentRole().equals(ub1.getDepartmentRole()))){ System.out.println(\"第一个if\"); request.getRequestDispatcher(\"/showUsers.action?pageid=1\").forward(request, response); }else if(ub1==null){ System.out.println(\"第二个if\"); request.setAttribute(\"flag\", 1); request.getRequestDispatcher(\"login.jsp\").forward(request, response); } }
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
2、人员权限问题 index.jsp
<%int a=Integer.parseInt(((User)session.getAttribute(\"login\")).getDepartmentRole()); if(a==1){ %>
3、账户管理的控制层UserAction.java
package .xu.li.action;
import java.util.HashMap; import java.util.List;
import java.util.Map;
import .opensymphony.xwork2.ActionSupport; import .xu.li.bean.Department; import .xu.li.bean.Project; import .xu.li.bean.User;
import .xu.li.dao.impl.DepartmentDaoImpl; import .xu.li.dao.impl.ProjectDaoImpl;
import .xu.li.dao.impl.ProjectMemberDaoImpl; import .xu.li.dao.impl.UserDaoImpl;
public class UserAction extends ActionSupport {
public User user,iuser;//user是查询时用的,iuser是插入时用的 private UserDaoImpl userDao;
private ProjectDaoImpl projectDao; private Project pro; List public String proNo; public List public ProjectMemberDaoImpl projectMemberDao; public String message; public DepartmentDaoImpl departmentDao; public List * 添加一个用户 * @return */ public String insertUser(){ User u=(User)userDao.getUserByUserId(iuser.getUserId()); // listDeps=departmentDao.showDep(); System.out.println(\"listDeps\"+listDeps); for(Department dep:listDeps){ System.out.println(\"dep.getDepName()\"+dep.getDepName()); } if(u==null){ if(userDao.insertUser(iuser)>0){ return SUCCESS; } return ERROR; }else{ message=\"该用户名已经存在\"; System.out.println(message); return \"insertError\"; } } public String showAllUsers(){ pro=projectDao.queryProById(id); System.out.println(\"UserActionpro.getProNo()\"+pro.getProNo()); System.out.println(\"showAllUsers:pro\"+pro); listUsers=userDao.showUsers(); if(listUsers!=null){ return SUCCESS; } return ERROR; } public String findUsersByRole(){ System.out.println(\"projectMemberDao:\"+projectMemberDao); System.out.println(\"UserAction11111\"+pro); System.out.println(\"UserAction11111\"+proNo); listUserR=projectMemberDao.findUserforPro(proNo); System.out.println(\"listUserR\"+listUserR); //pro=projectMemberDao.queryProById(id); //System.out.println(\"showAllUsers:pro\"+pro); if(listUserR!=null){ return SUCCESS; } return ERROR; } /** * 显示所用用户 * @return */ public String showUsers(){ if(user==null){ user=new User(); user.setEmail(\"\"); user.setUserName(\"\"); user.setDepartmentRole(\"\"); } Map params=new HashMap listUsers=userDao.queryByCondition(params); } if(listUsers!=null){ return SUCCESS; } return ERROR; } /** * 通过用户id获取所有用户信息 * @return */ public String queryUserById(){ System.out.println(\"id+++++++++\"+id); listDeps=departmentDao.showDep(); user=userDao.queryUserById(id); if(user!=null){ return SUCCESS; } return ERROR; } /** * 修改用户信息 * @return */ public String updateUser(){ iuser.setDeleteFlag(\"1\"); int flag=userDao.updateUser(iuser); System.out.println(\"55555555\"+flag); if(flag>0){ return SUCCESS; } return ERROR; } /** * 删除用户信息 * @return */ public String deteleUser(){ int flag=userDao.deleteUser(id); System.out.println(\"55555555\"+flag); if(flag>0){ return SUCCESS; } return ERROR; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List public void setListUsers(List public int getPageid() { return pageid; } public void setPageid(int pageid) { this.pageid = pageid; } public int getPageTotal() { return pageTotal; } public void setPageTotal(int pageTotal) { this.pageTotal = pageTotal; } public User getIuser() { return iuser; } public void setIuser(User iuser) { this.iuser = iuser; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Project getPro() { return pro; } public void setPro(Project pro) { this.pro = pro; } public UserDaoImpl getUserDao() { return userDao; } public void setUserDao(UserDaoImpl userDao) { this.userDao = userDao; } public ProjectDaoImpl getProjectDao() { return projectDao; } public void setProjectDao(ProjectDaoImpl projectDao) { this.projectDao = projectDao; } public List public void setListUserR(List public ProjectMemberDaoImpl getProjectMemberDao() { return projectMemberDao; } public void setProjectMemberDao(ProjectMemberDaoImpl projectMemberDao) { this.projectMemberDao = projectMemberDao; } public String getProNo() { return proNo; } public void setProNo(String proNo) { this.proNo = proNo; } public DepartmentDaoImpl getDepartmentDao() { return departmentDao; } public void setDepartmentDao(DepartmentDaoImpl departmentDao) { this.departmentDao = departmentDao; } public List public void setListDeps(List 因篇幅问题不能全部显示,请点此查看更多更全内容