基于Java+Struts+Hibernate+Mysql实现的固定资产管理系统

基于Java+Struts+Hibernate+Mysql实现的固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产,设备的管理科学化,合理化的高要求

本文包含相关资料包-----> 点击直达获取<-------

基于Java+Struts+Hibernate+Mysql实现的固定资产管理系统

摘 要

随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。

固定资产管理系统是一个单位不可缺少的部分。但一直以来人们使用传统的人工方式管理固定资产的信息,这种管理方式存在着许多缺点,这对于查找、更新和维护都带来了不小的困难。因此,开发一个界面友好,易操作的资产管理软件进行自动化管理变得十分重要。这正是本系统开发的目的和意义。本文所阐述的固定资产管理系统,以浏览器/服务器模式高效地实现了固定资产管理的各项功能,可进行资产的添加,删除、修改、查询、打印报表等功能;还可以对每位职工的添加、删除、修改、查询基本操作;本系统还对权限进行限制,操作员只可对资产和用户进行基本操作,管理员可以为每位员工赋权限。

使用本系统,不仅提升了效率,而且满足现代高校资产管理的需要。

关键词 :资产管理 JSP Struts Hibernate Spring

Abstract

With the development of computer information technology and the high demand of scientific management and rationalization of assets and equipment, using computer to achieve the information management of equipment and assets has become very important.

Fixed assets management system is an indispensable part of a unit, However, we have been using the traditional manual to manage the information of fixed assets, and there are many shortcomings of this approach, which has brought a lot of difficulties to find and update and maintenance .Therefore, to develop a as set management software with friendly interface and easy operation to carry out automated management become very important. This is the purpose and significance of the development of the system. The fixed asset management system decried in this article achieves functions of efficient management of fixed assets using browser / server model. In this system, we can use the function of assets add, delete edits and inquiry, statements printing and so on; we can also use the basic operation of workers add, delete, modify and check. The system also limit the authority so that operators can only do some basic operations to users and assets and the administrator give permissions to every employee.

With the help of this system, the university not only enhances the efficiency but also meets the needs of modern management of asset.

Keywords : Fixed-assets JSP Struts Hibernate Spring

前 言

随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着企业的发展,企业的规模也逐渐发生变化,其管理难度也越来越大,如何优化企业设备、资产的日常管理也就成为了一个大众化的课题。如何更好的提高生产效率,相关的企业资产管理系统的研发在社会中越来越受到重视。

固定资产已成为公司管理中不可或缺的一部分,在许多国家得到了广泛的研究与应用。总的说来,固定资产管理系统就是通过集中固定资产信息,对公司的资产进行调控。实现固定资产管理系统现代化的根本途径是信息化、系统化。

作为计算机应用的一部分,使用计算机对固定资产进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高固定资产管理的效率,也是科学化、正规化管理的重要条件。固定资产管理系统通过采集固定资产日常工作中所产生的各种原始数据,根据资产管理的要求,对数据进行分类、统计、汇总、分析,建立程序化、制度化、规范化的固定资产计算机软件管理系统,包括了固定资产的一般特性、固定资产状态数据和固定资产能力数据,及时准确地报出各种报表,为固定资产管理提供了一个现代化的管理手段,这一手段可以强化和规范对固定资产的管理。便于计划、财务、审计等管理部门的介入,形成严格的监督、约束机制。

第1章 绪论

1.1 项目背景

随着我国高等教育事业的迅猛发展,高等学校使用的固定资产规模在急速增长,使其日趋复杂,管理难度越来越大。尤其是随着校际间的合并与调整、学校内部推行的后勤、财务、人事、分配等各项改革的深化,对高等学校的固定资产管理工作不断提出新要求。但是,多年来固定资产管理工作一直是高校管理的一个薄弱环节,管理基础工作不够规范,资产安全控制体系尚不完善,家底不清、帐实不符、资产流失的现象在不少的学校依然存在,与高等教育发展改革的新形势很不适应。近几年来,为加强固定资产管理工作,国内一些地区和学校进行了有益的探索,开发管理软件,开始使用计算机管理教学仪器、设备等,技术上有了一定的进步。但总的看来,这些软件实现的往往是对原来手工劳动的简单替代,完成的仅仅是单一业务和专门用途资产的管理,未能从根本上改变高校固定资产管理被动、滞后的局面。

因此,必须以有力支撑高等教育发展改革的高度出发,对固定资产管理工作进行系统的规划和建设,运用现代信息技术真正实现管理水平上的飞跃。本系统就是基于此种社会背景进行独立开发,解决了以往资产管理中存在的普遍问题,如资产的录入、删除等模糊不清,数据来去不透明,致使资产无据可查。本系统不仅实现了通过简单操作完成繁琐的资产管理功能,而且将每笔资产的动态信息进行数据记录,里面有资产、相关操作人员和时间的记录,使得所有资产都有据可查、透明可见,提高资产管理效率,解决以往资产管理弊端。

1.2 项目设计原则

1.2.1 实用性原则

固定资产管理是企业管理中的一个重要组成部分,其管理具有数量大、种类多、价值高、使用周期长、使用地点分散等特点,管理难度比较大。很多单位目前仍采用人工记账的管理方式,因为以上原因使得管理工作异常艰难,导致资产流失和重复购置等问题,所以迫切的需要一款实用的管理软件的出现。充分考虑到在固定资产管理中可能遇到的种种问题,系统主要应该包括资产管理中的日常管理,从而实现对资产的全方位监控管理。

从实用性来分析。系统已实际需求为基础,尽量全面的做好需求分析,解决固定资产中的种种普遍问题,以减少日后更新软件的次数。

1.2.2 经济性原则

系统开发需要进行多方面的考虑,不仅要从使用性和扩充性考虑,还需要从适当的经济角度分析。首先,进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发,这些即为经济可行性研究的内容。对于大多数系统,一般衡量经济上是否合算,应考虑一个底线。其次,经济可行性研究范围比较广,包括成本—效益分析、公司的长期经营策略、开发所需的成本和资源、潜在的市场前景。

本系统建立适合高校自身需求的网络平台,提供广泛的涵盖资产管理多种需求的功能,数据处理方式灵活,满足需求,节省网站建设成本,并确保其较好的拓展性和开放性;同时网站具有基于WEB界面的管理后台,能够自主的对网站中的内容作更新、修改操作,节省了高校网站的运营成本,提高了信息更新、传播效率。

1.2.3 扩充性原则

网站的整体规划及框架设计是具可扩充性的。首先前台页面的设计能保证网站在增加栏目后不会破坏网站的整体结构。以此方便后期维护升级,不仅减少经济开支,并且大大提高了解决实际问题的效率,所以本系统具有很高的实际应用价值。其次后台数据库的设计具有高度的扩充性,能够根据需要对资产、员工的增、减、改、查,从而完成对资产设备的大批量录入或者删除及修改等相关操作,对员工表亦可如此操作,达到了根据实际需求实现操作并完成提高升级性能和高度扩充的目的。

1.2.4 社会可行性原则

研究要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行的通,现有管理制度、人员素质和操作方式是否可行,这些即为社会可行性研究的内容。社会可行性所涉及的范围也比较广,它包括合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。本项目根据实际需求开发,能够完成资产的基本管理应用,具有一定的上线应用价值。

因为本平台是个人自主开发的,所以不存在侵权、管理制度、组织管理等问题,这个平台的社会可行性是可行的。

1.3 本章小结

本章主要介绍固定资产的管理在过去有很大的弊端,急需一个系统高效的管理系统。并且以实际角度出发,根据固定资产具有的相关特点对项目进行实用性、经济性、扩充性和社会可行性等多方面做到深层次的分析,达到管理容易、更新信息方便、操作简便、信息透明化等目的,从而解决以往存在的问题。

第2章 系统分析

2.1 需求分析

设备不仅是高校固定资产的重要组成部分,也是一个高校技术装备水平的重要标志,赖以正常经营和参与市场竞争的物质技术基础。根据高校的实际需求本系统具有以下的功能需求:

  • 统一、友好的操作界面,能保证系统的易用性

  • 完善的资产及设备档案管理,支持资产及设备信息的增加、删除、修改、查询等基本管理模块

  • 软件同时提供了资产及设备的借出、归还管理,资产及设备的维修管理

  • 软件提供了多功能查询,有多种查询条件可以任意选择,方便信息的汇总

  • 连续录入式的应用增添及维护管理,用户的权限、密码修改设置

2.2 技术可行性

2.2.1 动态网站技术介绍

Internet起源于20世纪60年代的美国,它在近几年迅速风靡全球,其根本原因不仅在于它拥有卓越的国际通信功能,更在于它拥有巨大的信息资源。所谓的Internet是指由分布在全世界成千上万的计算机网络遵循一定的通讯协议,并相互联系在一起而形成的国际互连网络,也就是说,Internet是建立和使用这些网络的人群、群体、公司以及各种网络资源的集合体。

随着网络技术的不断发展,单纯的静态页面已经不能满足发展的需要,因为静态页面是用单纯的HTML语言组成的,它没有交互性.因此,为了满足实际的需要,许多网页文件扩展名不再只是“htm”、“html”,出现了以“php”、“asp”、“jsp”、“shtml”等为后缀的网页文件,这些都是采用动态网页技术制作出来的。

2.2.2 程序语言的选择

CGI

CGI(Common Gateway Interface,通用网关接口)。首先,客户端(即Web浏览器)根据某资源的URL(Uniform Resource Locator,统一资源定位器)向Web服务器提出请求,Web服务器的HTTP Daemon(守护进程)将此请求的参数通过标准输入stdin和环境变量传递给指定的CGI程序,并启动此应用程序进行处理,如要存取数据库服务器上数据库的数据,则向数据库服务器发出处理请求,数据库服务器将执行结果返回给CGI程序,CGI程序处理结果通过标准输出stdout返回给HTTP Daemon进程,再由HTTP Daemon进程返回给客户端,由浏览器解释执行,将最终结果在用户面前显示。CGI允许Web服务器运行外部应用程序,以通过外部程序来访问数据库等一些外部资源,并产生HTML文档给浏览器。但每次请求CGI程序都要重新启动程序,影响了响应的速度,且CGI程序不能被多个客户请求共享,影响了各种资源的使用效率。为了克服CGI的这些缺点,一些Web服务器厂商开发出了专用的API(Applications Program Interface应用程序接口),这样就允许程序员编写程序来扩展服务器的功能。API相对于CGI与Web服务器的结合更加紧密,占用的资源较少,运行的效率大有提高,安全性与保护性更好。但是开发API应用程序比开发CGI应用程序复杂得多,要求程序员掌握更多的计算机软件知识,且各种API之间的兼容性不好,业界没有一个统一的标准,使得API程序只能工作在专用的Web服务器与操作系统之上。编写CGI的程序设计语言有许多种,常用的有C,PERL,Visual C++等,由于对程序员的要求较高,且编写与调试比其它队编程技术困难,故近年来基于B/S的信息系统工程时间中已很少被采用。

JSP

JSP(Java Server Pages)是由Sun公司倡导,许多别的公司参与一起创建的一种新动态网页技术标准,类似其他技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Script let)和JSP标签,构成了JSP网页(*.jsp)Servlet/JSP Container收到客户端发出的请求时,首先执行其中的程序片断,然后将执行结果以HTML格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP被称为Server-side Language,所以被许多人认为是未来最有发展前途的动态网站技术之一。

经过如上的程序语言的比较,PHP功能相对简单,不适合作大程序,而CGI效率相对较低,所以也不考虑,因为该系统并没有原有的基础平台需要扩展,也不需要与其他系统进行太多的交互,所以使用J2EE的模式并不能够体现出J2EE本身的优势,而JSP又是J2EE的核心技术之一,可以随时升级为J2EE程序,这里暂时不考虑采用J2EE,这样只需要在ASP和JSP中进行选择.在进行了诸多因素的比较之后,最终认为目前这个阶段比较合适的是JSP,而选择Struts架构作为开发的主体框架,选用Hibernate作为数据持续性处理层,则是考虑到了其高速的开发效率,及代码重用性高,易于维护等各种优势。其最终目的是希望提高系统底层业务逻辑的可重用性,增加系统的可扩展性,降低系统维护成本。

2.3 软件可行性分析

2.3.1 软件环境

开发一个固定资产管理系统需相应的前段开发工具和数据管理系统,还需要一个服务器等。本系统根据Struts+Spring+Hibernate组合结构设计而成,利用Hibernate进行持久层开发,Struts进行业务逻辑控制,利用Spring进行Bean的管理,依赖注入。MVC模式贯穿了整个设计流程,Model层的使用spring的核心技术IOC控制依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间的依赖关系管理,如此减少代码冗余,View层主要运用Ajax无刷新提交,充分增加了客户体验,JSTL的应用使各个层之间的联系更加容易,JavaScript进行多种页面的验证,判断是否符合逻辑要求,若不符合验证需要重新填写,为后台服务器节省资源,已达到提高效率减轻服务器压力,继承使得我们可以对持久层的对象进行抽象,方便理解易于管理,可以简化创建用户界面的过程。Controller层中的action主要负责接受HTTP请求信息,可以接管用户请求并对异常进行处理。根据配置文件struts-config.xml的配置信息,把请求转发给合适的Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。本文开发的固定资产管理系统所需要的环境如下:

  • 开发工具 :Myeclipse8.0,PowerDesigner12.5,Rational Rose

  • 数据库 :MySQL5.1

  • Web服务器 :Tomcat 6.0

  • 操作系统 :Windows 7

  • 外部包 :Struts.jar,Hibernate.jar,JavaReport-V3-Enterprise-Released.jar

服务器端

开发工具

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大地提高了工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、JSF、CSS。JavaScript、SQL、Hibernate。本系统利用现在JAVAEE开发的主流工具MyEclipse进行开发,它不仅是一个开源软件,而且是一个基于Java的可扩展开发平台。MyEclipse的功能十分强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。

数据库

MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。它是一个快速的、多线程、多用户和健壮的SQL数据库服务器,服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去,一个数据库是一个结构化的数据集合,如果要添加、访问和处理存储在一个计算机数据库中的数据,就需要一个像MySQL这样的数据库管理系统。从计算机可以 很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。MySQL服务器就是这样一个快的、可靠的和易于使用的数据库服务器,它的连接性、速度和安全性使MySQL非常适合访问在Internet上的数据库。

Web服务器

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可,和传统的桌面应用程式不同,Tomcat中的应用程式是个WAR(Web Archive)文件,WAR是Sun提出的一种Web应用程式格式,和JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录非常重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的设置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其他类(如JavaBean)。通常这些所依赖的类也能打包成JAR放到WEB-INF下的lib目录下进行统一管理。在Tomcat4以后的高级版本中可以利用Servlet2.3提供的事件监听器功能,来对系统的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。

开发语言

Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性:面向对象、多态性、分布式、可靠、安全、多线程等如下:

面向对象:面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。

所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。

多态性:就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operator overload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。

平台无关性:Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。Java的平台无关性具有深远意义。首先,它使得编程人员所梦寐以求的事情(开发一次软件在任意平台上运行)变成事实,这将大大加快和促进软件产品的开发。其次Java的平台无关性正好迎合了“网络计算机”思想。如果大量常用的应用软件(如字处理软件等)都用Java重新编写,并且放在某个Internet服务器上,那么具有NC的用户将不需要占用大量空间安装软件,他们只需要一个Java解释器,每当需要使用某种应用软件时,下载该软件的字节代码即可,运行结果也可以发回服务器。目前,已有数家公司开始使用这种新型的计算模式构筑自己的企业信息系统。

分布式:分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。Java支持WWW客户机/服务器计算模式,因此,它支持这两种分布性。对于前者,Java提供了一个叫做URL的对象,利用这个对象,你可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java的applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便得实现Java的分布式特性。

可靠性和安全性:Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后,Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。上述几种机制结合起来,使得Java成为安全的编程语言。

多线程:线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。C和C++采用单线程体系结构,而Java却提供了多线程支持。Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。必须注意地是,Java的多线程支持在一定程度上受运行时支持平台的限制。例如,如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。

客户端

客户端由于不涉及到系统的开发和维护等问题,因此可以不用安装过多的软件,只要能够实现对服务器端的访问就可以,一般来说普通PC机即可。

2.3.2 硬件环境

服务器端

服务器端的配置是有建立站点所需的硬件来决定的。在最低配置下,服务器虽然能正常工作,但其性能往往不尽如人意,如果我们想使服务器工作的更好的话,我们需要更好的配置,特别是服务器的内存应该大于2G,下面为服务器的最低配置:

  • 处理器 :双核2.1GHz

  • 内存 :2GB

  • 显卡 :SVGA显示适配器

  • 光驱 :安装系统及相关软件

  • 网卡 :PCI和ISA接口均可

客户端

客户端主要用于浏览系统界面、同web数据库进行数据交互等基本操作,因此客户端对硬件要求不高,主要由所安装的Windows的要求来决定。但若期望性能更好,需要的配置应该高于以下配置:

  • 处理器 :双核2.1GHz

  • 内存 :2GB

  • 硬盘 :320G

  • 显卡 :SVGA显示适配器

  • 网卡 :PCI和ISA接口均可

2.4 系统结构可行性分析

2.4.1 B/S模式简介

本系统采用B/S模式,B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN、WAN、Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

2.4.2 B/S模式的优点

维护和升级方式简单

目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点的单位来说,系统管理员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行就可以;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的惊人。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。

成本降低,选择更多

大家都知道windows操作系统在平常应用上几乎一统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用哪种操作系统都可以让大部分人使用windows作为桌面操作系统,电脑不受影响,这就使得最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。

比如说很多人每天上“网易”网,只要安装了浏览器就可以了,并不需要了解“网易”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。

2.5 本章小结

本章节首先对项目所要实现的功能进行分析,应主要包含对资产的录入、销毁、维修、借入借出和多功能查询,和对相关工作人员的管理和权限的分配。然后介绍一下本系统所涉及到的技术知识,及对系统所需要的软硬件环境进行说明。最后阐述为何会选择B/S结构和诸多好处。

第3章 关键技术

3.1 开发架构

3.1.1 软件开发架构的意义

对于已经习惯了使用传统的JSP设计方式实现动态网站的程序员,在刚开始接触Struts时经常会出现一种困惑:专业书籍和文章中总是使用Struts Framework这种说法,Struts通常也被称为是一种Web应用开发的架构(Framework),那么到底什么是架构,软件开发架构的意义又是什么呢?

如果将早期的软件开发方式比喻为传统手工业生产方式的话,那么基于软件开发架构的开发方式则是大型现代化工厂生产方式的体现。虽然二者都能够制作出产品,但是在生产效率及产品质量的保证上显然会有巨大的差异。

汽车生产厂家在制造一辆汽车时,总是先在各条生产线上制作出不同类型的零件,最终再由专业的技师在专业的组装生产线上将成百上千的零件组装成一台完整的汽车,显然,设计者的主要精力并不是用于重复地制造相同的车轮,相同的方向盘,而是利用现成的车轮组装出一辆辆不同的汽车。同样,开发人员也可以利用软件架构中提供的组建库(如同已经生产好的规范化的汽车核心零部件库),按照既定的组装方式将不同的组建应用在软件产品的各个环节,最终开发出一个完整的,高质量的软件产品。

实际上,如果需要,汽车设计者也可以将原有的车轮进行改造,例如涂上不同的颜色,贴上不同的装饰物等。同理,软件开发人员可以在现有组件的基础上进行扩展和改进,这实际上充分地实现了软件开发的可扩展性。

组件复用是面向对象编程思想的结晶,而在软件架构的基础上进行开发可以最大限度地实现组件的复用。在大型、多层结构的软件开发项目中,开发和使用具有可重用性,可扩展性,经过良好测试的软件组织,可以使开发者从大量繁琐的代码工作中解脱出来,专注于软件设计和业务逻辑的实现。通常将被验证为有效的,相同类型问题的解决方案进行抽象,即可提取形成一个应用程序框架,即Framework。每一种Framework都有自己的一套明确的实现机制,通常在Framework结构中都会包含一个“命令和控制”组件(“command and control”component),类似于工业生产中的“控制中心”,开发人员通过它可以很容易地控制、扩充和实现该Framework上的开发结构。

3.1.2 Struts架构简介

随着Web开发技术的日益成熟,在Web开发领域中出现了许多设计好的软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是当前Web开发中比较成熟的一种框架。

经典的MVC模式

MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。

  • 模型(Model) :业务逻辑层。实现具体的业务逻辑,状态管理的功能

  • 视图(View) :表示层。即与用户实现交互的界面,通常实现数据输入和输出功能

  • 控制器(Controller) :控制层。起到控制整个业务流程(Flow Control)的作用,实现View和Model部分的协同工作

MVC设计模式可以针对需要为同样的数据提供多个不同视图的应用程序,例如:公司产品数据库中同样的产品信息数据,但需要根据用户的不同需求在页面中显示其所需的不同产品信息。

MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈现在用户面前。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。

显然这样的运行机制可以起到分工明确,职责清晰,各尽所长的效果。而在软件开发的过程中,这样的开发方式无疑可以有效地区分不同的开发者,尽可能减少彼此之间的互相影响。充分发挥每个开发者的特长。这在开发大型复杂的Web项目时体现得尤为突出。如图3-1所示。

Struts 1.2开发框架

作为基于MVC设计模式的Web应用的一种典型体现,Struts架构实际上是建立在Model2基础上的,对Model,View和Controller都提供了现成的实现组建。

Controller控制器部分

Struts中的Controller控制器部分是通过专门的Servlet来实现的,该Servlet是一个Struts API中提供的Action Servlet类型的实例,Action Servlet类继承了javax.servlet.http.HttpServlet类,因此该类的实例可以和普通的Servlet一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业务逻辑,再把响应结果送回到客户端。

Action对象是开发者定义的类(该类必须是Struts API中提供的Action类的子类)的实例。在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑的处理以后会将应用程序流程转到合适的View组件,最终将响应送回浏览器客户端。Struts中提倡Action对象只用来决定“做什么”,相当于一个低层面的控制器,因此也可以将Action归纳为Controller的组成部分。

Model模型部分

MVC系统中的Model模型部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作。Struts中的Model部分一般由JavaBean以及EJB组成。在Struts架构中使用JavaBean来提供具体的业务逻辑,即“怎么做”,对于复杂的系统也可以使用EJB等组件来实现系统状态维护。这种业务逻辑的细分可以增强代码的可重用性。

View视图部分

Struts中的View视图部分依然可以采用JSP来实现.此外,Struts还提供了丰富的自定义标签库,View部分使用这些自定义标签同样可以实现与Model部分的有效交互并能够增强显示功能。

Struts开发环境安装

在Tomcat安装完成后,即可将Struts框架工具安装到对应的WEB Container中。可以通过Struts的二进制发布包安装Struts框架,具体操作步骤:

  • 下载二进制发布版

  • 将下载的Struts二进制发布包进行解包,将解包目录下的lib目录下的所有.jar文件全部复制到项目目录的WEB-INF/lib下,如果在多个项目中都用到了Struts,则将上述文件直接复制到Tomcat目录下的common/lib下

  • 将对应的lib目录下的struts.jar文件添加到环境变量CLASSPATH中即可。以上资源可以从 http://jakarta.apache.org/struts/userGuide/index.html 获得更多关于Struts安装和相关配置的说明信息

3.2 数据持久层

数据是软件系统中不可缺少的环节,数据持久化的解决之道也一直是企业计算标准中最有影响力的部分。如今关系型数据库已经稳定地占据着主要的数据库市场,XML技术和XML数据库技术也日渐成熟。

J2EE的三层结构是指表示层(Presentation),业务逻辑层(Business Logic)以及基础架构层(Infrastructure),这样的划分非常经典,但是在实际的项目开发法中,开发者通常对三层结构进行扩展来满足一些项目的具体要求,一个最常用的扩展就是将三层体系扩展为五层体系,即表示层(Presentation),控制/中介层(Controller/Mediator)、领域层(Domain),数据持久层(Data Persistence)和数据源层(Data Source)。它其实是在三层架构中增加了两个中间层。控制/中介层位于表示层和领域层之间,数据持久层位于领域层和基础架构层之间。由于对象范例和关系范例这两大领域之间存在“阻抗不匹配”,所以把数据持久层单独作为J2EE体系的一个层提出来的原因就是能够在对象-关系数据库之间提供一个成功的企业级映射解决方案尽最大可能弥补这两种范例之间的差异。

3.2.1 持久层主流方案

数据是我们软件开发人员必须考虑的对象。无论你使用哪种技术,借助哪种工具,以及购买哪种软件平台产品,当接受一个实际的问题时,你都需要面对实际的数据,考虑实际数据的各种问题。在这些问题中往往都包含数据持久化的问题,这不仅是因为我们的计算机内存有限,更主要的原是业务逻辑的需要,作为一个接触软件技术,尝试写程序的人,我们要接触各种类型的数据。下面列举了三种常见的数据类型:

随机数据

这种数据指的是不确定结构,不了解数量,目前也搞不清关系的数据。它听起来很奇怪,但在实际的程序设计中十分常见。例如:从一个震动源传递到计算机采集卡的数据,再比如一个自然物生长过程中的数据。可能有些数据实际上是很有规律的,但是在设计程序时由于对它的了解很少,使它对于我们来说也成了随机的数据了。我曾经在遇到这种搞不大清楚的数据时,使用很大的数组或者多个链表来表述,不管下一个数据的值是什么,先存储起来再说。有时候当遇到的数据总也摸不到规律,或者越来越多,内存也容纳不下时,就找个文件存放起来,后来发现其实存入文件的方式很不错,起码可以一直继续下去。也许这就是最佳的持久化策略了。

属性数据

在接触具体的项目开发任务时,更多的时候要接触到属性类型的数据,这些数据来源于对象的属性,当然这些属性之间还存在关系,对于此类数据,似乎最好的持久化方法就是利用关系型数据库表了,在存入数据表的过程中还可以借助Hibernate来提高开发的效率,或者直接使用JDBC来传递SQL语句。这两种方法有些相似但还有细微的差别。

XML数据

现在很多网络上的应用程序都使用XML类型的数据,或者说是一种树状的数据,如何将这两种数据持久化保存下来呢?一种方法是将XML数据拆分为属性数据,然后存储到关系型数据库中。另一种方式比较新,是将XML数据存储到XML数据库中,在XML数据库中存储这种数据时,数据的结构不变,XML数据在XML数据库中以文档对象形式保存,使用XPaht和XQuery查询语言来查询XML数据中的节点数据,或者多个XML文档中的多个节点数据。

3.2.2 持久层主流方案

JDBC

许多开发者用JDBC进行数据库程序的开发。此中方式很多情况下都使用DAO模式,采用SQL进行查询。虽然用此方式可以使应用程序代码与具体的数据库厂商和数据库位置无关,不过JDBC是低级别的数据库访问方式,JDBC并不支持面向对象的数据库表示。JDBC数据库表示完全围绕关系数据库模型。在大型应用程序的DAO中书写这样的代码,维护量是非常大的。

EJB

在J2EE的规范中,为EJB定义了两种持久化的解决方案:一种是BMP,另一种是CMP。其中CMP不需要将SQL语句加入到代码中。目前,在采用J2EE的应用中,EJB CMP方式得到了广泛应用。更加引人注意的是,随着EJB规范的发展,CMP也包含了一些高级关系的内容。但是,CMP的使用比较复杂,对很多开发人员来说比较难以掌握。而且,不是在所有的情况下都适合在系统中采用EJB,而且想要非常清楚的了解EJB规范也是非常费时的。在用EJB编码前,先要让专家理解API,然后需要了解每一个容器部署时所要关注的技术。此外,许多情况下商用容器的性能和支持也不是很好。

JDO

JDO是一个存储java对象的规范,JDO规范1.0的提出可以使你将精力集中在设计Java对象模型,然后在企业应用软件架构的不同层面中存储传统的Java对象(Plain Old Java Objects,简称POJOs),采用JDOQL语言进行SQL操作。一些公司(包括sun)企图根据JDO规范进行设计并实现JDO产品,然而他们都不能很好的进行实现,并且性能优化上比较差。

3.2.3 持久化技术

一直以来,在Java开发领域中基于数据库应用的设计实现一直是面向关系的,也就是说与数据库相关的处理过程并没有实现真正的面向对象。如何在数据存取的操作中实现真正的面向对象,一直是开发人员探索的问题。正在使用中的对象序列化技术,EJB中Entity Bean技术等,都是在这方面很好的探索。但是实体Bean设计实现过程中的繁琐和复杂,使得许多开发人员望而却步。

而Hibernate的出现,提供了一个符合Java面向对象编程思想,易于使用的数据库持久化解决方案。因此,在目前行业的Java数据库应用项目中,有越来越多的开发人员开始尝试使用Hibernate在数据库外面包裹上一层面向对象的外衣,从而将开发人员从繁琐、重复、技术含量不高的数据库编程中结果出来。

Hibernate概述

Hibernate在英文中的意思是“冬眠”,从这个角度也可以体会到Hibernate架构下提供的相关技术可以实现对十角状态的持久性保存。在传统的数据库编程中,开发人员要面对大量重复行代码的编写,以实现对不同数据表中的数据的获取,并将获取到的记录数据封装成对象,在处理完成之后,如果需要进行对象状态的存取,需要将对象中的数据拆卸成数据库记录中的对应字段的值,然后向数据库中进行存取。

这种工作方式显然没有实现真正意义上的数据存取阶段的面向对象。虽然数据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列表数据的不同,使得开发人员必须要不厌其烦地书写与相应的实体类对应的封装处理过程。

而在Hibernate中,类似这种重复性高,工作量大,但是又必须保证高质量完成的体力活,全部由Hibernate接管过去。这对广大的Java开发人员无疑是个非常好的消息。

Hibernate本质上是一个面向Java开发环境的对象/关系数据库映射工具。在Hibernate之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会费长麻烦。而借助Hibernate对象/关系数据库映射技术,可以非常轻松地将以面向对象思想封装的对像的各个状态数据映射到基于SQL的关系模型数据结构中去。如图3-2所示。

3.3 本章小结

本章节阐述了Struts框架有何优点,并将MVC模式以图形加文字的双重方式进行介绍,充分展现其好处,引出固定资产管理系统选取Struts1.2为开发框架,采用经典的MVC模式对项目进行整体的分层,让项目层次分明、代码规范。再由框架引出数据库同样是系统中不可分割的一部分,然后提出通过Hibernate的映射文件简化对数据库的操作,从而达到更好的面向对象进行开发。

第4章 总体设计

系统设计是在系统分析的基础上由抽象到具体的过程。主要目标是将系统分析阶段所提出的反映了信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案,为下一阶段系统实施提供必要的技术资料,应符合系统性、灵活性、可靠性、经济性的要求。根据系统分析阶段能确定新系统的逻辑模型、功能要求,在可实现的环境下设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。本阶段的任务是设计软件系统的模型层次结构,设计数据库的结构以及涉及模块的控制流程,其目的是明确系统具体怎么实现。这个阶段又分为两个步骤:概要设计和详细设计。概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。根据种种分析设计在逐步实现各个功能,完成一个完整的固定资产管理系统。

4.1 总体设计

本系统对固定资产进行标识,实现了固定资产生命周期和使用状态的全程跟踪。标识后的资产在进行清查和巡检时依靠设备编号从而达到:方便、快捷、准确的定位资产,保证了信息流和资产实物流的对应。利用计算机支持不同的团体机构完成固定资产管理的事物,由计算机来代替人工执行一系列的诸如增加新的资产信息、变更资产信息、删除资产信息、查询、修改等操作。这样使办公室人员可以轻松快捷地完成固定资产管理的任务,使企业的员工管理资产能够系统化、规范化、半自动化,从而有效地解决了企业固定资产的管理难题,使企业更轻松、更有效地管理固定资产。总体设计如图4-1所示。

本系统主要分为四大模块:

  • 资产管理模块 :根据不同资产的唯一编号对资产进行购入、销毁、修改属性和多种组合条件的查询操作等,里面包括相应的逻辑验证及提示。对资产维护的增加维修设备、删除已经维修好的信息、查询操作;支持对固定资产库存报表的多种格式打印

  • 用户管理模块 :可直接添加员工成为用户并为其分配不同的权限,管理员权限是本系统最大的权限,可以对所有的设备和人员进行维护、查询等操作。操作员不拥有分配权限的功能,可以完成除了此模块之外的所有功能,如:首先,可对资产进行录入、所有资产不同方式的查询、销毁某些设备、修改设备属性信息及对设备进行借出归还状态的跟踪和更改,及时更新设备的所处状态和库存设备的全部信息等。其次可对员工进行的增加、删除、修改信息和查询等相应的维护,可以将库存设备信息根据不同需求打印出来

  • 员工管理 :支持对学校的教工信息的维护,包括新增员工、删除员工、修改员工所处状态和对员工进行明细查询等

  • 系统管理 :修改登陆用户的登录密码及安全退出系统,保证系统的正常运行

4.2 数据库设计

4.2.1 数据库的需求分析

依据项目的处理需求,对应数据表的设计及功能如下:

  • 资产信息表 :主要用于保存入库的资产信息

  • 资产设备的借出归还表 :主要用于保存借出设备的信息

  • 资产设备维修信息表 :主要用于保存维修资产的信息

  • 管理资产信息的用户表 :主要用于保存系统管理员的信息

  • 公司员工其本信息表 :主要用于保存公司员工的基本信息

  • 部门表 :主要用于保存部门信息

4.2.2 数据库表的具体设计

首先从用户的业务数据出发,设计出一张大表,然后对其进行优化。业务分析一定要具体,对于出现的每一张单据和报表都要分析清楚,看哪些字段会用来作为查询字段,然后为这些字段建立数字型的代码,如果字段本身就是数字型的可不予考虑。仔细分析业务数据,从优化查询的角度把业务数据的大表分割开,确保数据正确分布到相应的数据库表中,每个字段都代表此表的特性。本系统首先就从固定资产的实际出发,以资产表为主表,扩充出资产修为表、借出归还表和员工表,员工表属于部门表,员工升级成为用户,产生用户表。然后根据实际需求并考虑系统的后期扩展和健全性填充各个表的字段,以便完成资产管理的操作。

各个数据表如下:

设备借出归还表是由资产表和员工表根据实际需求衍生出来的一张业务表,此表用于保存某位员工于某个时间借出了某个编号的资产借,并打算在什么时间归还及实际的归还时间的全部信息,使得用户对资产的管理更加方便简单。表结构如表4-1资产设备借出归还表。

字段名 数据类型 长度 是否主键 描述
inout_no int 10 借用流水号
ic_id varchar 30 资产编号
comployee_no varchar 30 员工编号
out_time varchar 20 借出时间
should_time varchar 20 应还时间
back_time varchar 20 归还时间

用户表是依附于员工表而存在的一张管理员表,此表中根据competence字段区分管理员及操作员两种权限,管理员具有最高权限,操作员可对资产进行全方位的管理和信息查询。表结构如表4-2用户表。

字段名 数据类型 长度 是否主键 描述
userName varchar 30 用户名
pwd varchar 20 密码
comployee_no varchar 30 员工编号
competence varchar 15 权限

员工信息表是跟资产基本表密切相关的一张相关操作表,员工编号为唯一主键,能够标识员工身份。每一次对资产的操作都应该落实到具体的员工头上,让所有的操作都可查,使业务更加清晰,方便应用。表结构如表4-3员工信息表。

字段名 数据类型 长度 是否主键 描述
comployee_no varchar 30 员工编号
comployee_name varchar 25 员工姓名
sex varchar 5 性别
age int 10 年龄
dept varchar 45 部门
profession varchar 20 现任职务
address varchar 60 家庭地址
phone varchar 20 联系方式
comployee_statu varchar 10 员工状态

设备借出归还表是由资产表和员工表根据实际需求衍生出来的一张业务表,此表用于保存某位员工于某个时间借出了某个编号的资产借,并打算在什么时间归还及实际的归还时间的全部信息,使得用户对资产的管理更加方便简单。表结构如表4-4资产设备借出归还表。

字段名 数据类型 长度 是否主键 描述
inout_no int 10 借用流水号
ic_id varchar 30 资产编号
comployee_no varchar 30 员工编号
out_time varchar 20 借出时间
should_time varchar 20 应还时间
back_time varchar 20 归还时间

部门表的存在是专门为了方便使用单而存在的表,其主要用于区分不同部门而方便操作,每个员工都有一个字段叫做dept,使得不同部门的人员,进行不同的归拢,方便管理。具体表结构如表4-5部门表。

字段名 数据类型 长度 是否主键 描述
dept varchar 45 部门名称

资产设备维修信息表也是由资产基本表衍生出来的一张业务表,它用于管理哪些设备因为何种原因而需要维修,其中有由谁送去维修并经过谁手而修,维修流水号应该为唯一主键,包含所有的维修相关信息。表结构如表4-6资产设备维修信息表。

字段名 数据类型 长度 是否主键 描述
repair_no int 10 维修流水号
zc_id varchar 30 资产编号
send_time varchar 30 送修时间
sender varchar 50 送修人
Login_user varchar 50 经手人
reason varchar 50 送修原因
wx_time varchar 30 维修时间
wx_result varchar 45 维修结果
cost float 30 花费金额
wx_comment varchar 45 维修备注

4.3 详细设计

4.3.1 功能设计

本系统主要用于高校中的“资产”进行管理。具体地讲,固定资产管理系统就是通过资产的增加、删除、查看、借出、归还、维修等一系列手段来提高效率,最终达到发展目标的一种管理行为。总体来说就是解决固定资产管理中经常出现的实物与财务账目不符的情况,以实物管理为特点,以简化为目的,实现信息流和实物流的统一,并且提高工作效率减轻工作负担。本系统中各种功能操作都非常简单方便,操作员无须专门的培训就可以使用,大大的减少了误操作的几率。具体实现目标如下:

  • 系统用户管理功能 :当前登陆的用户可根据个人需要对自己的登陆密码进行修改。系统用户即管理员可对系统中的资产进行管理,可以对资产进行录入、资产查询、资产销毁、资产信息修改、资产借用等相关操作。用户是本系统中最大权限所有者,可以给任意员工分配权限使其成为新的用户,用户可以根据实际需求增加新的员工、修改员工的状态、修改员工的相关信息,亦可根据员工唯一ID对员工进行查询和删除

  • 员工信息管理功能 :员工是本系统中的一个模块,主要和资产的归还、借出、维修等实物资产的流向状态进行绑定,使每一次对资产的操作都能落实到具体的人头上,让资产管理透明可查

  • 资产入库管理功能 :资产入库功能由用户进行管理,用户有权限进行增、减、改、查操作

  • 资产维护管理功能 :对于资产的管理必定涉及到资产的状态如:维修、报废、借出、正常,这些功能都是根据实际需要进行实现,保证了资产的不明流向和总体管理

  • 打印报表 :针对资产清单进行打印,可根据实际不同需求打印不同格式如:word、excel、pdf等

  • 系统最大限度地实现了易安装性、易维护性和易操作性 :本系统以tomcat为服务器,搭建服务器小而轻便,安装简单。用户可根据不同的需求自行对资产进行维护,并且不必经过专门的培训即可掌握本系统的使用,实现了简单易懂方便维护等特性

  • 系统运行稳定、安全可靠 :系统经过严格的测试并实际运行无误,可以安全稳定上线运行;根据权限拦截器防止越过登陆对本系统进行操作,所以安全可靠,能保证正常的工作运转

4.3.2 系统登陆

用户登录模块是用户进入主页面的入口,用户可根据自己的用户名和密码进行登录,若不符则给予相应提示,重置按钮可将当前所填的信息清空,登陆页面如图4-2所示。

系统登陆是固定资产管理系统中最先使用的功能,因为用户登陆在数据库中使用的是用户表,人员表中有一个competence字段,是来标识用户权限的。在登陆时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码和验证码后点击【确定】按钮,网页通过action="login"进Struts配置文件中, 这个 html:form 与 loginForm 相绑定,在 struts 配置文件中的代码如下:

html <form-beans> <form-bean name="loginForm" type="com.jdy.gdzc.web.struts.form.LoginForm" /> <form-beans> <action path="/login" scope="request" name="loginForm" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="success" path="/mainframe/framework.jsp" /> <forward name="fail" path="/index.jsp" /> </action>

在这个配置文件中,可以了解到如下信息:

根据type="org.springframework.web.struts.DelegatingActionProxy"可以找到Spring配置文件中对应的具体Action类是class="e58_dfc2_c2ba959 com.jdy.gdzc.web.struts.action.LoginAction"。

根据 可以了解, Action返回success时页面会被转到mainframe/framework.jsp文件,这就是登陆成功的页面。如果当Action返回fail时,页面会被转到index.jsp文件,这个文件是当用户登陆失败将要转到的页面。

Struts的Action的实现类是这个登陆页的核心内容,就来看看它是怎么实现的吧,如下所示:

java import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.jdy.gdzc.web.struts.form.LoginForm; public class LoginAction extends BaseAction { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String err = ""; HttpSession session=(HttpSession)request.getSession();//获得图片上的验证码 String randCode = (String) session.getAttribute("code"); LoginForm lf=(LoginForm)form; String username=lf.getUsername(); String password=lf.getPassword(); if (lf.getCheckcode().equals(randCode)) { if (assetManagerImpl.login(username, password)) { // 把登录成功的用户名,放在cookie中 Cookie c = new Cookie("username",username); c.setMaxAge(60 * 60 * 24); response.addCookie(c); // 登录成功,跳到显示所有课程的页面 String competence=userManaManagerImpl.competence(username); session.setAttribute("username", username); session.setAttribute("competence", competence); return mapping.findForward("success"); } else { err = "用户名或密码错误!"; } } else { err = "验证码错误!"; } request.setAttribute("gdzc.login.error", err); return mapping.findForward("fail"); } }

Struts的Action实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action=login” 的字样,它的目的就是在这里做逻辑判断。当action=login时进入Action中执行execute()方法。execute()方法从LoginForm中得到用户提交的数据,然后在调用控制层中的login()方法,并将从LoginForm中得到的username, password做为参数传给控制层,调用后会返回一个boolean型的值。控制层再继续调用DAO层,DAO层得到从上层传进来的username, password并进行处理,调用后会返回一个boolean型的值并传给上层。如果为真则将username用户名放到session范围中,并返回“mapping.findForward("success")”,进入系统主页;否则返回“mapping.findForward("fail")”,将错误信息存到request范围中,跳到登陆界面并提示登陆错误信息:用户名或者密码错误、验证码错误。需要用户重新正确输入才能完成登录。接下来看一下DAO层是如何实现登陆:

java import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.jdy.gdzc.dao.IUserDAO; public class UserDAOImpl implements IUserDAO { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } protected Session getSession() { return sessionFactory.getCurrentSession(); } public boolean login(String userName, String password) { boolean flag = false; Session session = this.getSession(); String hql = "select pwd from UserInfo where userName=:userName"; try { Query query = session.createQuery(hql); query.setString("userName", userName); String pwd = (String) query.setMaxResults(1).uniqueResult(); if (password.equals(pwd)) { flag = true; } } catch (Exception e) { e.printStackTrace(); } return flag; } }

4.3.3 系统用户管理

系统用户管理:主要包括对系统用户的增加、系统用户的权限修改、系统用户的删除、分配系统用户的权限功能及对本身的登录密码做修改和对资产的相关维护,其中权限的分配分为操作员和管理员,操作员只能对除了用户管理之外的其他功能进行操作,而管理员是本系统中权限最大的,可以进行所有操作。当点击【用户管理】时出现用户管理界面如图4-3所示。

当点击【用户管理】时,系统会通过Stuts框架,找到userManaAction.do 从后台取出数据库中所有的员工信息,并将信息返回到界面显示出来,具体的表现代码实现如下:

html <input name="addUser" type="button" id="addUser" value="添加用户" onclick="window.location='/gdzc/user_info/user_add.jsp'"> <input name="edit" type="button" id="edit" value="修改权限" onmouseover="this.style.color='red'" onMouseOut="this.style.color='#1e7977'" onclick="window.location='findUserbyname.do?username=${item.userName}'"> <input name="delete" type="button" id="delete" value="删除" onmouseover="this.style.color='red'" onMouseOut="this.style.color='#1e7977'" onclick="if(confirm('您确定要删除编号为${item.comployee.comployeeNo}的用户吗?')) window.location='deleteUserAction.do?userName=${item.userName}'">

在点击【添加用户】时,会出现添加用户界面如图4-4所示。

在这个功能里可以增加新的用户并且为他分配相应的权限,用户必须是本系统中的员工,由当前用户通过添加系统用户功能,使其具有登陆系统的权限成为用户,但是这个权限分为管理员或者是操作员。按照提示输入完毕后点击【保存】按钮系统首先进行表单验证,若验证不通过给予相应的提示,如验证通过后,则获取表单数据,再将表单数据保存到后台数据库中,【返回】按钮会将用户带回用户管理界面,添加用户的具体代码如下:

java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AddUserForm auf= (AddUserForm)form; UserInfo user=new UserInfo(); Comployee com=new Comployee(); user.setUserName(auf.getUserName()); user.setPwd(auf.getPassword()); user.setCompetence(auf.getCompetence()); String eno=auf.getComployeeNo(); com.setComployeeNo(eno); user.setComployee(com); if(!employeeManagerImpl.isEmployeebyno(eno)){ request.setAttribute("error", "*员工编号不存在"); return mapping.findForward("fail"); } if(userManaManagerImpl.insertUser(user)){ return mapping.findForward("success"); } else {return mapping.findForward("fail");}

4.3.4 员工信息管理

员工信息管理 :主要包括对学校教工的增加、修改、删除、查询功能

  • 添加员工功能 :不同部门根据各自需求,可添加任意数量的员工,添加员工时首先给其建立一个唯一的标识员工编号,以后对资产的相关操作都与员工编号进行绑定,另外员工还有一个状态分为:在职、休假、离职三类

  • 修改员工信息功能 :当进入员工信息管理主页面后,系统默认查处员工的信息,并且每个员工后面都有【修改】和【删除】两个按钮,当点击【修改】按钮时,系统首先将本条信息带到修改页面,除了员工的唯一标识符员工编号之外都可更改,用户可根据需求对员工信息进行修改,然后点击【保存】保存

  • 删除员工信息功能 :点击【删除】按钮会弹出提示框“您确定要删除员工编号为****的员工吗?”,点击【确定】即删除成功,点击【取消】则返回操作

员工信息管理主页面如图4-5所示。

查询员工信息的具体代码如下:

```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletRespons

参考文献

  • 基于SSH的行政事业单位资产管理系统的设计与实现(厦门大学·宫厚梅)
  • 基于JavaEE的工厂文档管理系统(武汉科技大学·朱永强)
  • 基于SSH框架的企业固定资产管理系统的设计与实现(吉林大学·荆伟)
  • 山东商务职业学院固定资产管理系统的设计与实现(山东大学·陈涌)
  • 基于SSH的行政事业单位资产管理系统的设计与实现(厦门大学·宫厚梅)
  • 基于B/S框架企业资产管理系统的设计与实现(复旦大学·王敏)
  • 高校固定资产管理系统设计与开发(东华理工大学·陈瀚)
  • 基于.NET的固定资产管理系统的研究与设计(电子科技大学·田小玲)
  • 某企业固定资产信息管理系统的设计与实现(电子科技大学·朱裕)
  • 基于.NET的固定资产管理系统的研究与设计(电子科技大学·田小玲)
  • 高校固定资产管理系统设计与开发(东华理工大学·陈瀚)
  • 基于JavaEE的工厂文档管理系统(武汉科技大学·朱永强)
  • 基于SSH的行政事业单位资产管理系统的设计与实现(厦门大学·宫厚梅)
  • 基于SSH的行政事业单位资产管理系统的设计与实现(厦门大学·宫厚梅)
  • 基于SSH的行政事业单位资产管理系统的设计与实现(厦门大学·宫厚梅)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设工厂 ,原文地址:https://m.bishedaima.com/yuanma/35213.html

相关推荐

发表回复

登录后才能评论