软件开发综合课程设计
--------------详细设计
项 目:资产管理系统
年级专业:软件 2011 级 1 班
小组成员:杨俊:11101020122
潘飞:11101020114
赖芮:11101020129
赵冰:11101020131
指导教师: 曾浩
完成时间:2014-6-23
1
摘要
现代企业管理越来越强调利用有形资产来提供优质服务的能力,即通过资产管理来确保
有形资产物尽其用、安全运行,在希望的时间和地点提供需要的设备,同时尽可能地降低运
行和维护成本。资产管理系统为企业提供全面、迅速的资产信息,方便管理者了解和操作企
业内部的资产管理。
本 系 统 是 基 于 B/S 的 多 层 Web 应 用 , 在 windows 7 操 作 系 统 下 , 本 系 统 选 择 了
Myeclipse2014 集成开发环境、Mysql 数据库和 JSP、Struts、Spring、Hibernate、AJAX 技术,
利用 MVC 设计模式将业务逻辑和表示逻辑分离,在表示逻辑层利用 JSP 技术实现了页面制
作、利用 AJAX 实现无刷新技术,在业务逻辑层,利用 Struts、Spring 技术实现了系统设置、
资产管理以及分类统计三个主要模块的开发,后台使用 Mysql 进行数据库的开发,并利用
Hibernate 技术完成对数据库的封装映射,实现了数据查询、修改、增加、删除等功能。
【关键词】资产管理;JSP;SSH;MySQL;设计模式
2
目录
第一章 开发环境的说明与安装 .......................................................................................................4
1.1 开发语言的选择.............................................................................................................................4
1.2 数据库的选择.................................................................................................................................5
1.3 开发工具的选择.............................................................................................................................6
1.4 系统所涉及的关键技术.................................................................................................................6
第二章 数据库设计 ............................................................................................................................9
2.1 资产管理系统数据库表结构说明............................................................................................9
第三章 主要编码实现 ...................................................................................................................... 11
3.1 公共类设计 ..............................................................................................................................11
3.2 系统的实现 ..............................................................................................................................13
第四章 功能测试 ..............................................................................................................................22
4.1 系统设置 ...................................................................................................................................22
4.2 资产设置 ...................................................................................................................................25
第五章 总结....................................................................................................................................29
第六章 致谢......................................................................................................................................30
参考文献........................................................................................................................................... 31
3
第一章 开发环境的说明与安装
1.1 开发语言的选择
Java 是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,
可移植的,性能优异、多线程的动态语言。
1、Java 语言是简单的。Java 语言的语法与 C 语言和 C++语言很接近,使得大多数程序员
很容易学习和使用 Java。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷
惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指
针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2、Java 语言是一个面向对象的。Java 语言提供类、接口和继承等原语,为了简单起见,
只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键
字为 implements)。Java 语言全面支持动态绑定,而 C++ 语言只对虚函数使用动态绑定。总
之,Java 语言是一个纯的面向对象程序设计语言。
3、Java 语言是分布式的。Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接
口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括 URL、
URLConnection、Socket、 ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式
应用的重要手段。
4、Java 语言是健壮的。Java 的强类型机制、异常处理、废料的自动收集等是 Java 程序健
壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健
壮性。
5、Java 语言是安全的。Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以
防恶意代码的攻击。除了 Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具
有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字
节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。 软
件开发网
6、Java 语言是体系结构中立的。Java 程序(后缀为 java 的文件)在 Java 平台上被编译为
体系结构中立的字节码格式(后缀为 class 的文件), 然后可以在实现这个 Java 平台的任何
系统中运行。这种途径适合于异构的网络环境和软件的分发。
7、Java 语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java 还严格规定
了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java
实现的,Java 的运行环境是用 ANSI C 实现的。
8、Java 语言是解释型的。如前所述,Java 程序在 Java 平台上被编译为字节码格式, 然
后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这
些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
9、Java 是高性能的。与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,
Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
10、Java 语言是多线程的。在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类
或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable)
的构造子将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子
类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了
Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行
4
的代码。线程的活动由一组方法来控制。 Java 语言支持多个线程的同时执行,并提供多线
程之间的同步机制(关键字为 synchronized)。
11、Java 语言是动态的。Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需
要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件
的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
本系采用 Java 语言,结合当今比较主流的 SSH(struts2、hibernate3、spring.5)框架、
Ajax、jQuery、JavaScript、CSS、spring2.5 注解、dwr 等技术。开发语言采用 JSP 语言。
1.2 数据库的选择
本系统采用 MySQL 小型数据库,如果以后系统数据量大以及需要大量维护,可以转移
到 Oracle 大型数据库上。
MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。SQL(结构化查询语言)是世
界上最流行的和标准化的数据库语言。MySQL 是以一个客户机/服务器结构的实现,它由一
个服务器守护程序 mysqld 和很多不同的客户程序和库组成。
SQL 是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用 SQL 语
言为一个网站检索产品信息及存储顾客信息,同时 MySQL 也足够快和灵活以允许你存储记
录文件和图像。
MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个 SQL 服务器,它
能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度
更快,MySQL 就开发出来。自 1996 年以来,我们一直都在使用 MySQL,其环境有超过 40 个
数据库,包含 10,000 个表,其中 500 多个表超过 7 百万行,这大约有 100 个吉字节(GB)的
关键应用数据。
MySQL 建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管 MySQL 仍
在开发中,但它已经提供一个丰富和极其有用的功能集。
接下来我将对两个数据库作简单的比较:
1、安全性:不管是 MySQL,还是 MySQL,在外部网络中,都受到相当大的威胁。相比而
言,MySQL 受到的威胁甚至要更大些,最近 2 年来,MySQL 暴露出了多个远程溢出漏洞。
如果配置的比较好的话,我认为,Oracle 要比 MySQL 安全一些,因为随时会爆发的新溢出
漏洞是防不胜防的,而且能够执行系统命令的 sql 注入攻击也非常可怕。
2、易用性:毫无疑问,Oracle 和 MySQL 的易用性比较差,入门的门槛高了点,特别是
Oracle;MySQL 相对比较容易,微软的东西不管性能怎么样,易用性都做得不错。
3、开发环境:Eclipse 和 Tomcat 本身对数据库都没有什么要求,只要你有 JDBC 驱动,连
接都差不多,稳定性和性能也没多大区别。从开发的角度来讲,中小型项目 Oracle 和 MySQL
都是不错的选择。
5
1.3 开发工具的选择
IDE 工具:MyEclipse2014
MyEclipse 是在 IBM 开发的 IDE 工具 Eclipse 基础上集合了一系列插件的代码编写工具,
利用它我们可以在数据库和 J2EE 的开发、发布,以及应用程序服务器的整合方面极大的提
高工作效率。它是功能丰富的 J2EE 集成开发环境,包括了完备的编码、调试、测试和发布
功能,完整支持 HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。
数据库可视化操作工具:Navicat for MySQL
Navicat for MySQL 是业界著名的一款简洁高效、功能强大的图形化 MySQL 数据库管理
工具。使用 Navicat for MySQL 可以快速直观地让您从世界的任何角落通过网络来维护远端的
MySQL 数据库。它具有易用的数据库、数据表备份与还原功能,支持导入与导出 XML、HTML、
CSV 等多种格式的数据,直接运行批量 SQL 脚本文件,速度极快等优点。
WEB 容器:Tomcat6.0
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,也是一个小型的轻量级
应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试
JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服
务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩
展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进
程单独运行的。
1.4 系统所涉及的关键技术
MVC(Model-View-Controller,“模式-视图-控制器”)模式的结构由以下三种部分组
成:模型(Model)、视图(View)和控制器(Controller)。如图 3.4.1 所示:
通知变化
状态变化
模型
通知变化
视图
用户请求
查看变化
控制器
图 3.4.1:MVC 模式的功能示意图
6
模型层中的模型就是指业务逻辑模型和数据模型。模型接收视图请求的数据,并返
回最终的处理结果。这里之所以把模型层单独抽取出来,是为了应对业务规则的变化,
也是判断开发人员是否优秀的设计依据。MVC 并没有提供模型的设计方法,而只告
诉开发人员应该组织管理这些模型,以便于模型的重构和提高重用性。
视图层主要是用来展现用户所需要的数据,它是用户和系统进行交互的界面,
可以采用 HTML、XML、Servlet 等技术。一般来说,视图只接收来自模型的数据并显
示给用户,以及将用户界面的输入数据和请求传递给控制和模型。MVC 设计模式对
于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上业
务流程的处理,业务流程的处理和状态的改变则交给模型层处理。视图部分的大致处理
流程是:页面模板定义页面布局,页面配置文件定义视图标签的具体内容,由页面布局
策略类初始化并加载页面,每个用户部件根据自己的配置进行初始化,加载校验器并设
置参数,以及事件的委托等,用户提交后,通过了表示层的校验,用户部件把数据自动
提交给业务实体即模型。
控制层就像一个中转站,它从用户那里接收请求,并根据用户的请求,将模型与视
图匹配在一起,共同完成用户的请求。在实现上,为了能够控制和协调每个用户跨越多个请
求的处理,控制机制应该以集中的方式进行管理[8]。用户提交一个表单或者单击一个链接,
控制层接收请求后,它本身并不处理业务信息,而是根据用户的请求类型,把用户的信息传
递给相对应的模型,告诉模型做什么,等模型处理完毕后,再把模型处理后的数据选择符合
要求的视图返回给用户。
通过将模型、视图和控制器分离,使得一个模型可以对应多个视图,一个视图可能
对应多个模型。如果用户通过某个视图的控制改变了模型的数据,所有其他依赖于这些
数据的视图都反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变
化通知多有的视图,导致显示的更新。
Struts 是一个 MVC 框架(Framework),能够实现 JavaWeb 应用的快速开发。Struts 实现
的重点在 C(Controller),包括 ActionServlet/RequestProcessor 和我们定制的 Action,也为 V(View)
提供了一系列定制标签 (CustomTag)。但 Struts 几乎没有涉及 M(Model),所以 Struts 可以采
用 JAVA 实现的任何形式的商业逻辑。Spring 是一个轻型容器(light-weightcontainer),其核心
是 Bean 工厂(BeanFactory),用以构造我们所需要 的 M(Model)。在此基础之上,Spring 提供
了 AOP(Aspect-OrientedProgramming,面向层面的编程)的实现,用它来提供非管理环境下
申明方式的事务、安全等服务;对 Bean 工厂的扩展 ApplicationContext 更加方便我们实现 J2EE
的应用;WebMVC 和 SpringWeb 提供了 JavaWeb 应用的框架或与其他流行的 Web 框架进行
集成。就是说可将两者一起使用,达到将两者自身的特点进行互补。
Hibernate 是一个和 JDBC 密切关联的框架,是 JDBC 的轻量级的对象封装,所以 Hibernate
的兼容性和 JDBC 驱动,和数据库都有一定的关系,但是和使用它的 Java 程序,和 App Server
没有任何关系,也不存在兼容性问题。Hibernate 是一个独立的对象持久层框架,和 App
Server,和 EJB 没有什么必然的联系。Hibernate 可以用在任何 JDBC 可以使用的场合,例如
Java 应用程序的数据库访问代码,DAO 接口的实现类,甚至可以是 BMP 里面的访问数据库
7
的代码。从这个意义上来说,Hibernate 和 EB 不是一个范畴的东西,也不存在非此即彼的关
系。
本系统的设计方案采用 MVC 设计模式下的 Struts+Spring+Hibernate 的架构。SSH 架构是
典型的 J2EE 三层结构,分为表现层、业务逻辑层和数据持久层。三层体系将业务规则、数
据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与
中间层建立连接,再由中间层与数据库交互。具体架构如图 3.4.2 所示:
表示层
Struts-MVC
ActionServlet
Struts Action
Service locator
业务逻辑层
Spring IoC
Business
Service Class
Hibernate
图 3.4.2:具体架构
数据持久层
Hibernate
连接池
DAO
查询语言支持和
其他 Hibernate 服
8