基于Jsp的OA系统的设计与实现

邱丑丑

发布日期: 2019-10-08 17:11:18 浏览量: 215
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

学习和研究办公自动化中涉及到的知识和技术是实现办公自动化系统的前提条件。通过学习研究,掌握了其中的关键技术之后,结合自身的理解,对其做出了相应的表述。同时也成功的实现了系统中涉及到的一些模块。这些实现了的功能模块,在日常办公中都能被用到。具有一定的实用价值。

办公自动化(Office Automation,OA)的诞生离不开科技不断发展的趋势推动,虽然今天它已趋于完善。但在信息蓬勃发展的今天依旧是一项非常活跃和具备顽强生命力的技术。办公自动化在企业当中的应用具有无法取缔的重要意义。对办公自动化的学习和研究是有必要的。

办公自动化有很多的优点:避免对资源不必要的浪费,节约成本,高效管理等,它能让管理变得规范和科学。在查阅了很多与OA系统相关的资料后,对其进行了深入的学习。在了解到办公自动化现在的发展状况后,对学习和研究它的现实意义进行了深入的分析。

为了开发出更加完善的系统,本文以J2EE为技术基础,企业级的MVC设计模式为前提,科学的对系统进行了分析,阐述了OA系统的核心技术及其他工具的使用。在掌握Spring、SpringMVC、Mybatis等框架技术之后,运用Maven工具进行项目的管理,为办公自动化系统的开发做了充足的准备。

关键词:办公自动化,J2EE,Maven,SSM

Abstract

Learning and studying the knowledge and technology involved in oa is the precondition to realize oa system. Through study and research, master the key technology, combined with their own understanding, make the corresponding expression. At the same time, some modules involved in the system have been successfully implemented. These realized the function module, can be used in the daily office. It has certain practical value.

The birth of Office Automation (OA) is driven by the continuous development of science and technology, although it has been improved today. However, it is still a very active and tenacious technology in today’s information boom. The application of office automation in enterprises is of great significance. The study and research of office automation is necessary.

Office automation has many advantages: avoid unnecessary waste of resources, save costs, efficient management, etc., it can make management become standardized and scientific. After consulting a lot of materials related to OA system, I made an in-depth study of it. After understanding the current development of office automation, the practical significance of learning and studying it is analyzed in depth.

In order to develop a more perfect system, this paper takes J2EE as the technical basis and the enterprise-level MVC design pattern as the premise, scientifically analyzes the system, and expounds the use of OA system’s core technology and other tools. After mastering Spring, SpringMVC, Mybatis and other framework technologies, I used Maven tool to manage the project and made sufficient preparation for the development of office automation system.

Key words: Office Automation, J2EE, Maven,SSM

第一章 前言

在技术发展和社会需求变更的推动下,办公自动化也在不断的成熟起来。随着信息爆炸时代的来临,为了挖掘、分析、传输和存储人们日常生活中所产生的各种数据以分析其潜在价值。各种技术的发展日新月异,其中通讯技术的发展尤为迅猛(5G已不在停留在概念上)。分布式数据库也得到了广泛的运用。这些技术的发展使得办公自动化有了更大的提升空间。

公文在传统的办公模式下,多是手工传递处理,这种方式存在安全性不足、信息难以进行统计和分析等弊端,最主要的还是协同办公难以实现。跟传统的办公模式相比,办公自动化有着效率高、资源共享及时、以及节约成本等优势。

现在的办公自动化系统,不止能为管理者的决策提供科学和正确的指导,还能提高领导的管理水平,同时推动了各个单位的信息化建设的进程。办公自动化在各个单位中都起着举足轻重的作用。

随着技术的发展和社会的进步,办公自动化的内涵和外延也在不断的发生变化。也就是说它是一个动态的定义。为了应对现代化办公模式及其需求的不断发展,这就对办公自动化的整体系统结构和处理能力以及运作平台提出了越来越高的要求。办公自动化是信息时代发展下的必然产物。在协同办公理念深入人心的当今社会,办公自动化的使用程度将成为一个国家现代化进程的重要指标和衡量标准。

1.1 项目背景

目前国内外还存在着很多日常办公运用手工操作的企业和单位。这样将导致大量的信息不能得到及时的共享和充分的利用。而且随着时间的推移,不断累积的信息将成为企业和单位的一种负担,光是对信息的管理、分类、索引、利用就极其困难,对于企业和单位来说不仅是一种时间成本的投入,还是对人力和财力的损耗,最重要的是工作效率低下,决策者还难以从中挖取出有用的数据来用作决策的依据。长此以往,信息的不断累积对企业和单位来说将是有百害而无一利的。办公自动化的意义自然不言而喻。

过去的办公自动化系统,在当时的技术条件限制下存在很多的缺陷,早已不能胜任现代办公的需求。集成化程度低,不能实现充分的资源共享,系统韧性差等因素成为了其致命的缺点。特别是过去的这些办公软件,大都是静态的。由于不能适应信息时代的需求,导致了它们的应用范围有很大的局限性,应用效果也很差。因此在信息化时代下的办公自动化系统需要具备更强劲的功能。在降低企业成本,充分利用企业内部资源,加快业务流程,显著提高工作效率和应对环境变化等方面都要有良好的表现。

1.2 OA简介

办公自动化简称为OA(Office Automation)是集计算机科学、通讯技术、系统科学、行为科学为一体的综合性技术。现代的办公自动化系统采用的是Internet/Intranet技术,基于工作流的概念,使得企业内部的员工能够方便快捷地共享信息,高效地协同工作;改变传统复杂、低效的手工办公方式,以实现迅速、全方位的信息采集和信息处理,为企业的管理和决策提供科学的依据。企业实现办公自动化的程度也是衡量其实现现代化管理的标准。办公自动化不仅兼顾个人办公效率的提高,更重要的是能够实现群体系统工作。凭借网络,这种交流和协调几乎可以在瞬间完成。

1.2.1 办公自动化的国内外研究情况

不管在过去还是在现在,办公自动化的核心都是公文处理。由于公文处理本身的特性限制,这对办公自动化系统在公文处理的流程控制方面提出了更高的要求。

目前的办公自动化系统在企业中得到了广泛的运用,它的工作流管理自然也就延伸到日常办公,和事务处理流程中去了,比如会议的管理、财务报销审批、休假审批等等。

办公自动化系统通过对工作流的管理,使得公文在流转、审批、发布等方面极大的提高了其效率。实现了办公管理的规范化和信息管理的规范化,极大的降低了企业的运行成本。

现在国内主流的OA系统有泛微、蓝凌等,其主要功能模块见图1.1和图1.2:

国外OA系统的代表有EGroupware,其主要功能模块如图2.3所示:

对比分析上图可以看出,这些OA系统中都有流程管理这个模块。要实现对这个模块的管理,还需要有相应的软件系统作为支撑。即工作流管理系统(WFMS),工作流管理系统的主要作用是:调用和管理业务过程中的各种活动的先后顺序和资源,以此达到自动化办公的目的。

1.2.2 本文的主要内容及章节安排

本文对办公自动化进行了分析和研究、并且还将JBPM(Java Business Process Management)和SSM框架技等技术应用在了办公自动化领域中,通过Maven这样的项目管理利器来对项目进行管理,从一定程度上保证了系统整体架构的稳定性和具体实现代码的鲁棒性,致力于实现系统各个模块之间的“高内聚、低耦合”度,使得系统各个模块的复用程度、系统功能的扩展性和可维护性都得以提高;通过使用管理工具Maven还可以轻松的实现对系统中各个模块的管理。

本文的章节安排和主要的研究内容所下所述:

  • 第一章节:前言主要概述了本文的研究背景和这个课题在国内外的研究情况,并且还通过对项目背景的简述,说明了对办公自动化进行研究的意义。

  • 第二章节:主要是相应架构技术和开发环境的概述,首先介绍了所要用到的相关技术的理论知识,然后对Spring、SpringMVC、Mybatis等框架的运行机制进行分析,它们是构建OA系统的关键技术。

  • 第三章节:这一章节对系统开发进行了必要的分析,为系统设计环节提供了相应的理论基础。

  • 第四章节:系统设计是实现系统开发的主要环节和前提条件,对办公自动化系统的主要模块进行了详细的分析和设计,为后续的具体实现奠定基础。

  • 第五章节:对系统的具体实现也作了简要描述叙述的同时,还对开发环境的搭建,框架的整合进行了简要的说明,在系统实现章节附录了相应模块的核心代码。

  • 第六章节:总结全文,同时对系统的进一步提升和完善提出改进意见。

第二章 系统架构技术的研究及简单的环境搭建概述

2.1 Web应用体系结构

技术总是在不断发展和进步的,企业级应用程序的架构也不例外,在多年的发展演进过程中,它的设计思想也产生了巨大的变化。分析它的发展历史,可以发现:在大型机和个人计算机盛行的时期,很多的应用程序都是运用的两级体系结构,在这种结构中,服务端的主要职责是数据的存储和检索,而绝大多数的业务逻辑还交由客户端来进行处理。随着应用程序中需求的增多,其中包含的业务逻辑变得越来越复杂的时候,客户端就显得不堪重负啦,为了减轻客户端的压力而将系统中的业务逻辑剥离出来,形成单独的一部分,就这样衍生出了三层体系结构。

三层体系结构的划分如图2.1所示。

  • 表现层:可以理解为jsp、html等页面。

  • 业务逻辑层:主要任务是对程序中与业务流程进行处理,为前端页面提供相应的业务服务。

  • 数据持久层:主要是对数据进行存储。

运用这样的三层结构,可以实现让每一层在功能实现上有一个清晰的界限,这样三层之间是相互分离的,但它们之间存在彼此进行通信和交互的接口。

软件开发采用这种三层体系结构,可以让软件系统在可扩展性、可复用性、和安全性上得到很到的提升,还也有助于系统易管理性的提高。

2.2 B/S架构介绍

B/S架构是一种对C/S架构进行改进后的架构,它不需要安装任何专门的软件,对操作系统也没有任何限制,由于只需要客户端上具备浏览器就行,这种架构实现了客户端的统一和平台无关性。在这种模式下,系统功能的核心实现集中在了服务器上,这样可以简化系统的开发、维护和使用。

使用架构,可以使得软件维护和升级方式变得简单,由于浏览器就是它的客户端,所以根本不需要做任何的维护,只需要对服务器进行管理即可。用户量的增多也不会对它的升级维持产生影响。甚至还可以实现远程维护、升级和共享。管理人员只需要管理服务器就行了,软件的维护成本较低。

也正是因为B/S架构的特性,所以客户机越来越“廋”,但服务器却因此变得越来越“胖”,在这种架构之下,服务器运行数据的负荷较重,为避免发生服务器“崩溃”,造成无法弥补的损失。使用这种架构往往需要配备数据库存储服务器来以防万一。

2.3 j2EE简介和JDK的安装配置

Java编程主要有三个方向:Java SE(Java Platform , Standard Edition),它是Java中的基础部分,也称J2SE,主要用于桌面开发,同时它也是Java EE(Java Platform , Enterprise Edition)的基础。Java EE也称为J2EE主要应用于Web开发。最后一个是Java ME(Java Platform , Micro Edition)也称J2ME,主要应用于移动端的开发。

J2EE这种技术架构,它有很多组件,主要用来简化和规范系统的开发和部署,从而可以提高代码的移植性、安全性和复用性。因为它是Java技术中的一部分,所以Java语言所具备的特点它也都具备,面向对象、高性能、跨平台(操作系统)的。而且“一次编译,到处运行”。

俗话说:“工欲善其事,必先利其器”,如果想要通过使用J2EE架构进行系统开发,首先需要进行JDK(Java Development Kit)的安装及其配置。具体的安装配置如下:

下载JDK的安装包:虽然JDK是sun公司开发的产品,但由于sun公司已经被Oracle公司收购,在下载安装包的时候需要到Oracle官网上去根据自己的操作系统进行下载。具体的下载过程就不再赘述,接下来说一下JDK的环境变量的配置方式。

我的电脑->系统属性->高级系统设置->环境变量->新建

变量名 变量值
JAVA_HOME D:\DEV\jdk1.8(具体配置视安装目录而定)
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (固定写法)

最后在path路径中添加变量值:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin即可。

测试:运用组合键“win+r”输入CMD命令进入控制台,然后在控制台输入java–version、java、javac等命令进行测试。

得到图2.2、图2.3和图2.4所示则表示JDK安装配置成功。

2.4 Jsp简介

Jsp(Java Server Page)是一种动态网页的综合性技术。它的产生是由于程序员在开发的过程中发现,Servlet用来做界面非常的不方便。于是就想到了用一种新的技术来做界面,就这样Jsp技术就出现了。Jsp技术可以用下面这个公式来进行表示:公式:Jsp=html+java片段+Jstl+Javascript+css。其实Jsp的本质还是Servlet,Jsp和html最大的区别仅是多了一些Java片段而已,所以写Jsp就和写html差不多。

相比html来说:html只能为用户提供静态数据,而jsp技术允许在页面中嵌套Java代码,能够为用户提供动态数据。

相比Servlet来说:Servlet要对数据进行排版难度较大, Jsp不止是可以通过Java产生动态数据,它还综合了JavaScript和css技术,所以能够很轻易的对数据进行排版。

Jsp的运行原理如图2.5所示:

说明:Jsp页面报错实际上是报的Servlet即xxx_jsp.java中的错误,在查找错误的时候应当找到与该Jsp对应的Servlet中去查找相应的错误。

2.5 MVC简介

MVC是一种设计模式,所谓设计模式就是开发人员在长期的开发过程中提炼和总结出来的一套优秀的应对一般问题的解决方案。

MVC当中的M代表model,可以理解为JavaBean,V即视图,是系统与用户进行交互的窗口,可以理解为Jsp页面或其他的前端页面。其中C是Controller控制器,主要用于处理业务逻辑。采用MVC这样的三层模式,可以有效的将视图、业务逻辑和数据持久层分离开来,它们之间相互分离,仅通过业务逻辑来进行调用。

例如这样一个简单的需求,前端Jsp页面的用户通过输入用户名和密码发起一个登陆请求,请求将传达到控制器,控制器通过对数据库的调用来进行数据比对,如果在数据库中不存在那么一个用户,那么控制器将返回一个失败信息给前端页面。

这种设计模式极大程度上的增加了程序的健壮性,可维护性和易于扩展。

J2EE中几种重要的开发模式:

Model1模式: Jsp文件是Model1模式的基础,它是由一些独立的Jsp文件,和一些Java Class组成的(不是必须的),这些Jsp文件通过从Http 请求中获得所需要的数据,并进行业务逻辑的处理,处理的结果通过服务器响应返回前端界面。

Modell模式有开发简单、开发速度快,适合开发小项目等优点。缺点是,表现层和业务逻辑层混在一起,首先这样显得很乱,代码的可读性差,后期维护工作难以进行,同时也不利于多个人进行协同开发。Model1模式原理如图2.6所示:

分层模式即Model1.x模式(MV模式,分层),是在Model1模式的基础上演变而来,将业务逻辑和表现层分离开来,但是业务逻辑和数据模型模型依旧放在一起也不利于系统的维护和扩展,其原理如图2.7所示:

MVC模式要求在开发的过程当中,把数据的输入、输出和显示分进行分离。

MVC模式的原理,如图2.8所示:

2.6 Spring简介

首先说一下Spring是什么?

Spring是一个为了解决软件开发复杂性而被开发出来的,优秀而且开源的容器框架,来看一下如图2.9所示的Spring层次原理图。

从图中可以看出Spring是一个横跨三层(Web层、业务层、数据持久层)的框架,之所以把它称之为容器框架,是因为它的核心主要是用于配置bean,并且维护bean与bean之间的关系。这里说到的bean是Spring框架中一个非常重要的概念,它可以是Java中的任何一种对象,Spring的核心配置文件包含并管理了应用中对象的配置和生命周期,从这个层面上来说,可以将其看成是一种容器。

Spring中提出了控制反转技术(IoC),和面向切面编程(AOP)的思想等促进了应用软件模块之间的松耦合度。能够有效的提升软件的稳定性和可测试性。

Spring命名的由来,起初在Rod Johnson的Expert One-on-One Java EE Design and Development(专家一对一J2EE设计与开发)一书中Spring被称为“Interface21”(当时它使用com.interface21这个包名)。对于使用过EJB来开发过J2EE的人,一定知道这门技术在开始学习和应用的时候非常的艰苦。Spring出现后采用简单的JavaBean代替了EJB,并且还提供了更多的企业应用功能。Spring代表了传统J2EE“冬天”之后的一个新的开始,而且为了激励开发者社区,然后就有人提出了用“春天”这样一个简洁优雅的词来命名。

Spring框架由七个明确定义的模块组成,详见图2.10。

Spring框架的组成模块之间是相互独立的,在实际开发的过程中,可以根据自己的需求选用其一部分子框架即可,然后应用其他的框架方案加以代替。例如:它所提供的ORM(对象关系模型)框架,就可以采用Mybatis框架来进行代替。如果采用了其他的框架来进行替代的话,就涉及到框架的整合。在它的核心配置文件中,应当合理的进行配置,如图2.11所示:

框架多是通过Java的反射机制来实现的,至于其内部的实现细节在此不做叙述,在此只对其运行原理进行说明,Spring的运行原理如下图2.12所示:

Spring开发提倡接口编程,配合di(Dependency Injection)技术可以更好的达到程序间的解耦,使用框架的时候需要到其官网去下载jar包,然后导入到工程目录中去才能进行使用,对于项目工程来说,可以理解为第三方库。

2.7 SpringMVC简介

SpringMVC是Spring框架的子模块,它是类似于Struts2的一个MVC框架,在实际的开发中,接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示。上手难度较Struts2简单得多,而且由于Struts2所暴露出来的安全问题,SpringMVC已经成为了大多数企业优先选择的框架。

运用SpringMVC框架进行开发,程序员只需要把精力放在处理器Handler的编写及视图比如JSP页面的编写上即可。

学习框架实际上学习的就是其配置文件,使用框架有很多好处,但是相应的也会存在一定的限制,开发的过程中应当遵从其相应的规范。

在运用SpringMVC进行开发的时候,需要在它的核心配置文件中,进行相应的配置。其中主要的是对映射器、处理器、视图解析器、视图过滤器还有Handler进行配置如图2.13和图2.14所示:

SpringMVC的试图过滤器需要到Java Web工程的Web.xml文件中去进行配置。

编写SpringMVC中的映射器、处理器有两种方式,一种是注解的方式,还有一种是非注解的方式,在运用注解方式的时候应当注意:

  • 注解方式的映射器

spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。

  • 注解方式的处理器

spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter处理器适配器。spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter处理器适配器。

SpringMVC的映射器和处理器在使用的时候需要配对使用,版本需要一致,不然在项目运行的时候会报错。SpringMVC还提供了<mvc:annotation-driven/>标签来配置映射器和处理器,Handler的配置还可以通过包扫描的方式进行配置:

  1. <context:component-scan base-package="包含controller的包名 ">

2.8 Mybatis简介

Mybatis可以理解为一种不完全的ORM(对象关系模型)框架,它是Apache下的顶级项目,对于Mybatis来说对JDBC的封装程度没有Hibernate深,所以它对开发人员有着更高的要求,开发者需要自己编写SQL语句。

Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO为数据库中的记录。

Mybatis是数据持久层框架,Mybatis对于大型数据库的优化和适配性较强。适用于需求变化周期快,数据处理量较大的系统。Hibernate采用了更加自然的面向对象的视角来持久化Java应用中的数据,让开发者不再关注底层数据库的细节。Mybatis在这方面没有特定的文档说明,这样便于开发者发挥自身想法来对对象进行管理。

Mybatis运行原理如图2.15所示:

Mybatis的核心是mapper.xml文件,简单的说就是配置SQL语句。

2.9 Maven的简介

Maven是一种优秀的项目管理工具,它为构建项目提供了一套完整的生命周期框架。

由于Maven使用了标准的目录结构和生命周期。所以在多个开发团队进行开发的情况下,它可以按照设置标准在很短的时间内,完成相关的配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发者的工作更轻松。同时它可以自动的完成:创建报表、检查、构建和测试等工作。

系统在运用框架开发的过程中,需要到各个框架的官网上去下载jar包,运用Maven的话,只需要在其核心文件中添加依赖即可。可以方便的进行管理、节约时间、提高工作效率。

总的来说,Maven可以帮助开发人员简化和标准化项目的建设。它主要有负责处理编译,分配文档和管理团队协作等功能。Maven可以增加项目中模块的可重用性。

Maven项目的结构和内容在pom.xml文件中声明,pom.xml文件这个文件是整个Maven系统的基本单元。

管理工具Maven的安装步骤如下:

  • 进行下载安装:到Maven的官网去下载和系统对应的文件。由于是下载好的文件是压缩包格式,只需要将它进行解压就能完成安装了。

  • 配置环境变量:此电脑系统属性高级系统设置环境变量

  • 点击新增变量,变量名为:MAVEN_HOME,变量值就是maven解压位置的路径。

  • 接着点击编辑Path变量,在有变量值的那一栏中追加 %MAVEN_HOME%\bin即可。

  • 测试:win+R->cmd->调出控制台->输入命令(mvn –version)。得到图2.16所示的结果,那么环境变量就配置完成。

对Maven的settings.xml文件进行配置,可以实现其默认仓库的转移:

根据Maven的安装路径找到它的配置文件(settings.xml),用记事本打开之后找到“<localRepository>”这对标签,并在这对标签中间填写上指定的路径,如图2.17所示:

接着配置Maven,由于到它本身的中央仓库去下载jar包会非常慢,这里将其更改为阿里云的,在settings文件中找到“<mirros>”这对标。

然后在标签当中增加阿里云maven镜像,如图2.18所示:

至此,Maven的安装配置完成。

2.10 本章小结

本章节通过对办公自动化系统中所到使用到的相关技术进行了简要的叙述,对使用的框架的原理及配置文件进行了简要的说明,通过对理论知识学习和相关技术的研究,为办公自动化系统的开发提供了一定的理论基础,让办公自动化系统的实现成为可能,同时还做了一些必要的准备,安装JDK和Maven,并且对环境变量进行了配置。

第三章 系统分析

3.1 系统的可行性分析

在准备开发一个项目的时候,对其进行可行性分析是必不可少的一个重要环节,通过对其进行可行性分析,可以为我们的决策(是否对该软件进行开发)提供科学的依据。可行性分析可以帮助我们在开发项目的过程中以最小的代价,并且尽可能的在短时间内来确定相应的问题是否能够得到解决。通过确定系统的相关约束和限制,以此来分析准备开发的系统需求和规模等是否能够具体实现,实现后能否为企业带来经济效益的最大化。总而言之,只有通过认真的对系统进行可行性分析,才能有效的避免在开发过程中的阻抗问题。

3.1.1 技术可行性

字面上的意思就是通过现有掌握的技术是否能够实现这个项目?

本课题的技术基础是Java,结合掌握了现有的一些优秀的框架Spring(容器框架)、SpringMVC(MVC框架)、Mybatis(数据持久层框架)技术的基础上,结合项目管理工具(Maven)来对办公自动化系统进行开发。通过将这些框架进行整合来实现具体的开发,可以增加系统的稳定性、可维护性以及可扩展性以此来达到快速稳健的构建项目的目的。

数据的存储采用了开源的MySQL数据库,虽然它是开源的,但是在安全性做得较好,数据处理的能力极强,并且它是一个最轻量级的数据库,系统要求没那么高。

开发工具采用具有错误代码提示功能的Eclipse(一个免费的集成开发工具),它所提供的错误代码提示功能对于初学者来说是比较重要的(不怕出错,就怕不知道哪儿出错)。

在长期的学习过程中,对于相关技术的掌握让我对办公自动化系统的开发成为可能。

3.1.2 经济可行性

从企业的出发点来看,就是某个软件开发出来之后所带来的经济效益是否

会大于其开发成本。如果该软件所带来的经济效益能够远远大于其开发成本,那么决策者将决定对其进行资金注入。

就个人的毕业设计而言,所采用的相关技术以及开发工具等都是免费的。所以并不存在因为经济压力而开发不下去的情况。

3.1.3 操作可行性

该办公自动化系统应用Tomcat容器进行部署,前端页面运用了JSP技术。在项目进行发布的时候,只需要通过浏览器输入对应的URL就可以实现访问和操作。该系统具有交互界面简单,操作容易,方便管理等特点。

综上所述,本系统可以进行实际开发。

3.2需求分析

3.2.1 功能性需求分析

本系统从功能的实现上主要分为日常办公、综合信息、系统管理三个模块,初始情况下只为系统设置一个用户admin,这个用户是系统的超级管理员,拥有操作这个系统的最高权限(系统管理、个人信息管理、审批管理、公告管理等)。

3.2.2 日常办公

工作流是办公自动化系统的核心所在,在最初的办公模式下,工作流的流动是基于纸张表单、人工传递的方式进行逐级流动的,最后再又管理者进行审批签字。对资源来说是一种浪费,最主要的还是工作效率不高,企业中应用办公系统,员工只用通过电脑来填写好相关的表单即可,表单会按照系统定义好的流程,自行的流动向下指定的审批者,审批者在接收到表单后,可以根据需要对其进行相应的更改,大大的提高了员工的工作效率,同时也提升了公司的核心竞争力。在这一模块中审批管理是其核心。系统需要将消息分发给对应的审批人员,最后根据审批人员的抉择来确定最后的结果。公告的发布修改删除只能是管理员才具备的权限。每次公告的更新数据都会同步到数据库中去,在其他用户登录系统的时候可以及时的接收到公告通知。

3.2.3 综合信息

企业的管理离不开对数据的处理,例如:一个新员工在正式进入公司的时候,要对其信息进行录入、备份,在其职位、薪水等发生变化的时候要对相应的信息进行更改。在员工离职的时候需要将其相应的信息进行删除。企业中信息的交流处理(业务流程)是办公系统中重要的组成部分。采用传统人工的方式进行处理,工作效率低下。大量累积的信息需要进行筛选、分类、归档。如果仅靠人工进行操作,工作量大、不易管理、在对信息进行查找的时候工作难度大,对于企业来说是一笔不小的资金投入,因此需通过系统来实现其管理的便捷性,以此提高工作效率、降低运作成本。

3.2.4 系统管理

系统管理是针对具有系统管理权限的人员对系统进行维护而开发的基础模块。

系统管理的主要模块主要包含(用户管理、岗位管理、权限管理、部门管理)等模块。

  • 用户管理模块要具体实现的共能为:添加、删除、更新、用户列表等。

  • 系统的岗位管理模块的主要功能为:添加、删除、更新、岗位列表等。

  • 部门管理主要实现的主要功能为:添加、删除、更新、部门列表等。

3.2.5 非功能性需求分析

对系统的非功能性需求进行分析是必要的,虽然它与系统的实现无关。但也是要重点考虑到的一个环节,它具体包括了系统的安全性、可靠性、健壮性、可扩展性等。这些属性是衡量系统好坏的关键。

系统开发完成之后应该具有操作简单、良好的交互性(用于提升用户使用的满意度、和良好的使用体验)、界面具有友好性(针对用户的误操作给出相应的提示信息)等特性。系统应该充分的考虑用户的操作习惯,针对这些需求对系统各项功能进行严格的测试,并进行逐步完善,以此来增加系统本身的实用性。

3.3 本章小结

本章节通过对系统的可行性进行了简要的分析,为是否开发该系统提供了科学的理论依据。通过对系统功能性需求分析的阐述,说明了系统主要的几个模块以及它们应该包含和实现哪些具体的功能。最后通过系统非功能性的需求分析,对系统还需实现哪些与系统主体功能无关的细节进行了补充和说明。

第四章 系统设计

4.1 系统的架构设计

这个办公自动化系统,采用的是B/S架构、运用了MVC模式进行开发,主体包括了数据持久层,核心业务层以及应用层(即前端视图界面—-用户实现操作的交互界面),运用框架技术结合Maven管理实现对系统的构建,系统整体架构如图4.1所示:

在此系统架构下,项目工程的文件结构如图4.2所示:

4.2 系统模块设计

系统模块的合理划分是系统成功的关键,因为OA系统模块众多,如果事先不做好模块划分,开发过程中的时间成本的投入将会提高,还可能造成做无用功的现象。对系统的各个模块进行合理的划分,能够促进系统功能的具体实现。

系统模块大致分为系统管理、个人信息管理、审批管理、公告管理等(模块)。如图4.3所示:

系统管理模块又分员工管理、部分管理和岗位管理,如图4-4所示:

系统的个人信息管理模块,主要功能是对用户进行CRUD操作,如图4.5所示:

系统的审批模块,主要由请假申请、申请查询和待审批申请组成,如图4.6所示:

系统的公告管理模块,主要实现:管理员对公告的增、删、改操作,用户对公告可以进行的操作是查询,如图4.7所示:

4.3 数据库设计

数据库是系统的核心组成之一,主要用于对各种信息进行增删改查操作。数据库设计得是否合理,对整个系统有着深远的影响。

4.3.1概念结构设计

为了方便描述系统各模块间的联系,应设计与之对应的实体,实体中需要包含相关的实体属性。
这里通过“请假”这个具体的事务流程为主线来贯穿系统中所涉及的实体。企业内部某个部门的员工(仅仅具有普通权限的系统用户)在要请假的时候,应该向具有相应权限的管理人员(具有系统管理权限的用户)发起“请假”申请,然后由管理人员对“请假”进行审批,最终将审批的结果返回给申请人。

这个业务中所包含的实体有:用户、部门、请假、审批、权限和角色。

(1)用户实体用于存储用户的相应信息,用户实体如图4.8所示:

(2)部门实体包含了部门名称和描述等属性,部门实体,如图4.9所示:

(3)系统的请假实体主要包含的信息,如图4.10所示:

(4)审批实体主要包含了一下信息,详见图4.11:

(5)权限这个实体存储了与权限相关的信息,如图4.12所示:

(6)用户角色实体主要用于存储用户在企业中担任的角色,角色实体如图4.13所示:

4.3.2 系统E-R图

E-R图是描述实体之间的关系图,本系统的E-R图,如图4.14所示:

4.3.3 表结构的详细设计

表结构设计的好坏,对系统的运行性能起着决定性的因素。不合理的设计还可能导致在开发的过程中遇到很多难以解决的问题,甚至导致开发难以进行下去。所以在设计表的时候应该遵循一定的关系模式。设计的时候至少需要满足第一范式的要求(即保证表中的每个属性的值域都是不可再分的数据项),目的是为了保证数据的完整性和可靠性避免数据冗余。

(1)用户表用保存用户的相关信息,表结构如表4.1所示:

表4.1系统用户表(t_wl_user)

字段名 类型 长度 是否为空 是否主键 说明
user_id int 20 用户ID
depart_id int 20 部门ID
role_id int 20 角色ID
login_id varchar 40 登陆ID
userName varchar 25 用户名
userPassword varchar 30 用户密码
sex char 2 用户性别
phoneNumber varchar 20 手机号码
email varchar 30 电子邮件
description varchar 90 描述
createTime dateTime 注册时间

(2)部门表用于存储部门的相关信息,表结构如表4.2所示:

表4.2系统部门表(t_wl_department)

字段名 类型 长度 是否为空 是否主键 说明
depart_id int 20 部门ID
name varchar 25 部门名称
description varchar 90 描述
parent_id int 20 上级ID

(3)角色表用于存储角色的相关信息,表结构如表4.3所示:

表4.3系统角色表(t_wl_role)

字段名 类型 长度 是否为空 是否主键 说明
role_id int 20 角色ID
name varchar 25 角色名称
description varchar 90 描述

(4)权限表用于保存权限信息,表结构如表4.4所示:

表4.4系统权限表(t_wl_power)

字段名 类型 长度 是否为空 是否主键 说明
id int 20 ID
name varchar 25 名称
url varchar 130 url
parent_id int 20 上级权限ID

(5)公告表用于保存公告信息,表结构如表4.5所示:

表4.5系统公告表(t_wl_notice)

字段名 类型 长度 是否为空 是否主键 说明
notice_id int 20 公告ID
user_id int 20 创建人
content longtext 公告内容
createTime dateTime 创建时间

(6)请假表用于保存请假信息,表结构如表4.6所示:

表4.6系统请假表(t_wl_leave)

字段名 类型 长度 是否为空 是否主键 说明
leave_id int 20 请假ID
user_id int 20 请假人
approver_id int 20 审批人
startTime dateTime 开始时间
endTime dateTime 结束时间
days int 2 请假天数
reason varchar 90 请假原因
result varchar 10 请假结果
createTime dateTime 创建时间
status varchar 10 请假状态
type varchar 10 请假类型

(7)审批表用于保存请假的审批信息,表结构如表4.7所示:

表4.7系统审批表(t_wl_leaveApprover)

字段名 类型 长度 是否为空 是否主键 说明
approver_id int 20 ID
leave_id int 20 请假ID
user_id int 20 审批人
username varchar 25 请假人
status varchar 10 审批状态
advice varchar 10 审批意见
createTime dateTime 创建时间

(8)消息表用于保存待审批消息,表结构如表4.8所示:

表4.8系统消息表(t_wl_message)

字段名 类型 长度 是否为空 是否主键 说明
message_id int 20 消息ID
user_id int 20 消息归属
leave_id int 20 消息来源
title varchar 45 消息标题
watch char 2 是否查看

至此,系统中各个表的表结构设计完成。

4.4 核心业务流程设计

工作流的设计是办公自动化系统的核心。针对本系统,通过“请假”这一业务来进行工作流设计,具体流程为见图4.15所示:

4.5 本章小结

通过“请假”这一业务来贯穿整个章节,对系统的架构设计、模块设计、数据库设计和核心业务流程设计进行了详细的说明,并且给出了进行过合理设计实体图、E-R图和表结构。

第五章 系统实现

完成以上过程后,现在进行办公自动化系统的开发。选择合适的开发工具和框架实现开发。严格按照框架约束和MVC模式的要求,遵循Java的命名规范,对代码进行优化、抽取和封装,最终完成一个高性能的办公自动化系统。

5.1 开发环境搭建

在安装配置了JDK和Maven的基础上,现在进行Eclipse(集成开发工具)的安装。注意事项:Eclipse的安装需要选用与之版本对应的JDK版本才能成功运行。

  • 在官方网站下载安装好Eclipse2018-12后运行(因为下载好的文件是压缩包格式,安装过程只需要将其解压到指定目录即可)。

  • Eclipse在第一次运行的时候需要先选择它的工作空间(工作空间自行指定),如图5.1所示:

  • 新建一个Maven工程,如图5.2所示:

到选择工作空间的时候把“Use default Workspace location”勾选好即可,在选择类型的时候需要选择webapp,如图5.3所示:

选择完毕后点击下一步,最后为工程命名(myDesign),如图5.4所示:

在命明完成后点击完成即可。

  • Maven工程新建完毕之后对其配置文件(pom.xml)文件进行配置部署,添加开发所需的依赖。如图5.5和5.6所示:

  • 进行框架整合,先按照SSM框架的整合规范建立相应的文件结构,然后对系统中所用到框架的配置文件进行相应的配置,目的是完成框架的整合。
    Mybatis的配置如图5.7所示:

Spring配置文件的部分配置如图5.8所示:

5.2 通用功能实现

由于CRUD操作是各模块数据通用的,故而将其抽取为公共代码部分,采用面向接口编程的方式,具体模块的实例需要运用到的时候对其进行实现即可。主要代码如下:

  1. public interface UserService {
  2. public User findUser(String username, String userpwd) ;
  3. public List<User> selectAll();
  4. public void add(User u);
  5. public void del(int id);
  6. public User getById(int id);
  7. public void update(User u);
  8. public List<User> getByLike(String keywords);
  9. }

5.3 登陆模块实现

登陆界面采用html+js+css来具体实现,效果如图5.9所示:

下面附录的是实现登陆主要代码:

  1. // 申明这是一个控制器
  2. @Controller
  3. public class Usercontroller {
  4. // 注入Service
  5. @Autowired
  6. UserService service;
  7. //url映射
  8. @RequestMapping("/login")
  9. public String login(){
  10. return "login";
  11. }
  12. //登陆验证
  13. @RequestMapping("/main")
  14. public String checkLogin(@RequestParam(value = "username") String username, @RequestParam(value = "userpwd") String userpwd){
  15. User user = service.findUser(username, userpwd);
  16. if(user!=null) {
  17. return "main";
  18. }else {
  19. return "err";
  20. }
  21. }

5.4 系统模块的实现

系统的主要模块有:角色管理、部门管理、用户管理三大模块,基础部分均为数据的CRUD操作,其中还包含用户列表的分页功能。页面效果如图5.10所示:

部分核心代码如下:

  1. //后台核心代码
  2. @RequestMapping(value = "/user")
  3. public ModelAndView selectAll() {
  4. ModelAndView mav = new ModelAndView();
  5. mav.addObject("userList", service.selectAll());
  6. return mav;
  7. }
  1. //前端界面的关键代码:
  2. <tr>
  3. <th class="table-check"><input type="checkbox" id="chkAll"></th>
  4. <th class="table-id">ID</th>
  5. <th class="table-title">姓名</th>
  6. <th class="table-type">电话</th>
  7. <th class="table-author am-hide-sm-only">性别</th>
  8. <th class="table-set">操作</th>
  9. </tr>
  10. </thead>
  11. <tbody>
  12. <c:forEach items="${userList}" var="user">
  13. <tr>
  14. <td><input type="checkbox" name="chk"></td>
  15. <td>${user.id}</td>
  16. <td>${user.name}</td>
  17. <td>${user.phonenumber}</td>
  18. <td class="am-hide-sm-only"><span class="am-badge am-badge-primary">${user.sex}</span>
  19. </td>
  20. <td>

5.5 本章小结

本章节主要叙述了开发环境的搭建,说明了搭建开发环境时的注意事项。在环境搭环节就系统框架的整合进行了简要的说明,最后对系统的具体实现也作了简要的描述并附录了相应模块的核心代码。

上传的附件 cloud_download 基于Java的OA系统的设计与实现.zip ( 33.62mb, 3次下载 )
error_outline 下载需要20点积分

发送私信

精品资源尽在此

63
文章数
0
评论数
eject