1.引言11
1.1开发背景及现状11
1.2本人主要工作11
1.3论文组织与结构22
2.系统分析22
2.1需求分析22
2.2相关设计22
2.3设计模式33
3.系统设计33
3.1系统总体设计33
3.2系统功能结构图33
3.3系统数据库设计44
4.系统实现55
4.1底层数据库的实现55
4.2业务逻辑层的实现55
4.3控制层的实现66
4.4表现层的实现66
4.5系统公共组件77
5.系统测试1010
5.1测试环境1010
5.2测试步骤1010
5.3测试结果1010
6.结束语1313
致谢1313
参考文献1414
恒鑫物资租赁系统的设计与实现
学生姓名: 指导教师:
摘要:随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。计算机信息处理系统的引进已彻底改变了许多系统的经营管理。恒鑫租赁站长期大量出租各型钢管、扣件、塔吊等建筑施工设备。
本系统为恒鑫租赁站提供了一个方便快捷的物资管理系统,方便出租物资的管理。系统功能主要包括:用户管理,包括管理员信息查看、管理员密码修改;正常订单管理:包括新增正常订单、修改有误订单、删除错误订单;资金结算管理:费用统计;材料租赁管理:包括订单出租查询、器材回收管理、日租金管理、仓库库存管理。
本系统开发工具采用Myeclipse,数据库设计采用MySQL数据库,开发模式采用JSP为视图层的MVC设计模式。系统界面友好、美观,系统程序冗余度度低,系统具有较强的可扩展性和可维护性。
关键词:物资 JSP MVC MySQL数据库 管理
1.引言
1.1开发背景及现状
恒鑫租赁站长期大量出租各型钢管、扣件、塔吊等建筑施工设备。针对租赁器材品种繁多,租赁搭配麻烦,费用计算复杂。这些问题难题导致公司运营盈利管理不清晰,以及人工负担重,租赁过程中容易出错等问题,急切需要一款满足自身需求的管理软件,以提高办公效率。怎样才能更好的对建筑租赁行业进行管理,最好的方法就是用软件进行科学的管理。怎样设计才能更符合这个行业的应用,调查发现,目前国内外有关的系统软件都在向三方面靠拢:精细化、智能化、傻瓜化。
结合自身专业所学,把理论运用到实际而选定这一课题。希望最终该系统能取代人工管理的工作方式,避免由于手工记录、工作人员的疏忽等造成的各种错误,通过集中式的信息数据库,将企业的还、租、存等经营业务有机的结合起来,达到数据共享,降低成本,提高效率,改进服务的目的,进而提高租赁站的生产效率和管理水平。
1.2本人主要工作
通过对系统的分析和研究,上网学习、借阅书籍和向老师请教针对性的学习相关技术知识,同时练习开发工具的使用和调试。根据所学知识和对课题的研究进行相应的调查和资料分析,针对前期的调查和将要用到的相关东西对系统做出相应的需求分析,并通过需求分析进行系统相关设计,最后针对所设计的各个模块进行编码、测试,分析系统的不足以备后期改进,并对整个学习和开发过程做出总结。
1.3论文组织与结构
第一部分:引言。简要描述了恒鑫租赁系统的开发背景及现状。
第二部分:系统分析。针对系统进行相应分析,做出需求分析和相关技术介绍。
第三部分:系统设计。主要介绍系统功能模块设计和数据库设计。
第四部分:系统实现。详细介绍系统底层数据库的实现、业务逻辑层实现、控制层实现、表现层的实现和公共组件的实现。
第五部分:系统测试。针对开发的系统进行了主要功能模块的测试并给出测试结果。
第六部分:结束语。本章对整个系统开发和论文书写工作进行总结,指出了还需改进的地方。
2.系统分析
2.1需求分析
2.1.1功能型需求
恒鑫租赁站长期大量出租各型钢管、扣件、塔吊等建筑施工设备。本系统为恒鑫租赁站提供了一个方便快捷的物资管理系统,方便出租物资的管理。系统功能主要包括:用户管理,包括管理员信息查看、管理员密码修改;正常订单管理:包括新增正常订单、修改有误订单、删除错误订单;资金结算管理:费用统计;材料租赁管理:包括订单出租查询、器材回收管理、日租金管理、仓库库存管理等。
2.1.2非功能性需求
此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和Mysql数据库进行简要介绍。
- 开发工具
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。 - 运行环境
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 - 数据库服务器
MySQL是当前一种较为流行的关系数据库,和其它的数据库管理系统(DBMS)相比,MySQL是一个开源免费的轻量级关系数据库。它适合在小、中型项目中使用。
2.2相关设计
开发方案选择:
B/S结构,即Browser/Server(浏览器/服务器)结构,在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S
结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。
开发技术选择:
本系统采用的开发语言是JSP。JSP是运行在服务器端的脚本语言,它由传统的HTML代码和嵌入其中的Java代码组成。应用JSP,我们可以高效率的开发出安全性较高而且跨平台的Web应用程序,它拥有Java语言跨平台的特性以及业务代码分离、组件重用、基础Java Servlet功能和预编译等特征。
超文本标记语言HTML,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。工具选择Dreamweaver 8,其具有可视化编辑界面、扩展能力强、支持多平台和跨浏览器的特性。
2.3设计模式
本系统采用JSP、Servlet、JavaBean的MVC三层设计模式。这种设计模式中,JavaBean组件用来实现相关的业务逻辑,充当着模型的角色;Servlet用来执行业务逻辑和负责程序的流程控制,充当着控制层的角色;JSP作为表现层的显示,充当着视图层的角色。
3.系统设计
3.1系统总体设计
恒鑫租赁站开发设计的一款物资管理系统,方便出租物资的管理。系统主要功能包括:功能主要包括:用户管理,包括管理员信息查看、管理员密码修改;正常订单管理:包括新增正常订单、修改有误订单、删除错误订单;资金结算管理:费用统计;材料租赁管理:包括订单出租查询、器材回收管理、日租金管理、仓库库存管理。
3.2系统功能结构图
系统功能结构图,如图1所示。
图1 系统功能结构图
3.3系统数据库设计
数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地保存数据,满足各种用户的应用需求(信息要求和处理要求)。
- 管理员表 (admin)
管理员表用来记录管理员登录时候所需的基本信息,如表3.1所示。
表3.1 管理员表
字段名 |
字段类型 |
长度 |
主/外键 |
字段值约束 |
对应中文名 |
Id |
Int |
10 |
主键 |
Not null |
管理员Id |
Username |
Varchar |
50 |
一 |
一 |
管理员账号 |
Password |
Varchar |
50 |
一 |
一 |
管理员密码 |
Kind |
Int |
11 |
一 |
一 |
管理员类别 |
- 客户表 (client)
客户表用来记录客户的基本信息,如表3.2所示。
表3.2 客户表
字段名 |
字段类型 |
长度 |
主/外键 |
字段值约束 |
对应中文名 |
Id |
Int |
10 |
主键 |
Not null |
客户Id |
Name |
Varchar |
50 |
一 |
一 |
客户姓名 |
Phone |
Int |
11 |
一 |
一 |
客户电话 |
Mail |
Varchar |
20 |
一 |
一 |
客户邮箱 |
Description |
Varchar |
1000 |
一 |
一 |
客户描述 |
- 物资表 (goods)
物资表用来记录物资的相关参数信息,如表3.3所示。
表3.3 物资表
字段名 |
字段类型 |
长度 |
主/外键 |
字段值约束 |
对应中文名 |
Id |
Int |
10 |
主键 |
Not null |
物资Id |
Name |
Varchar |
50 |
一 |
一 |
物资名称 |
Money |
Int |
11 |
一 |
一 |
物资价格 |
Num |
Int |
11 |
一 |
一 |
物资库存 |
Description |
Varchar |
1000 |
一 |
一 |
物资描述 |
- 租赁表 (rent)
租赁表用来记录租赁物资的行为记录,如表3.4所示。
表3.4 租赁表
字段名 |
字段类型 |
长度 |
主/外键 |
字段值约束 |
对应中文名 |
Id |
Int |
10 |
主键 |
Not null |
租赁Id |
Uid |
Int |
11 |
一 |
一 |
客户Id |
Pid |
Int |
11 |
一 |
一 |
物资Id |
Time |
Varchar |
30 |
一 |
一 |
租赁时间 |
- 租金表 (icome)
租金表用来记录租赁物资所付的租金的行为记录,如表3.5所示。
表3.5 租金表
字段名 |
字段类型 |
长度 |
主/外键 |
字段值约束 |
对应中文名 |
Id |
Int |
10 |
主键 |
Not null |
租金Id |
Money |
Int |
11 |
一 |
一 |
租金数额 |
Content |
Varchar |
1000 |
一 |
一 |
行为描述 |
Time |
Varchar |
30 |
一 |
一 |
发生时间 |
4.系统实现
系统实现是在系统设计的基础上,针对系统各层次和各功能模块进行代码的编写,最终将设计方案转化可运行功能模块。
4.1底层数据库的实现
先前我们已经确立了使用关系数据库MySQL作为本系统的数据库服务器,同时,我们对相应表进行了分析和设计,在此我们通过数据库设计工具建立数据库:wz和相应的数据库表,如表4.1所示。
表4.1 数据库表名及说明表
数据库表名 |
说明 |
admin |
后台管理员表 |
client |
客户基本信息表 |
goods |
材料信息表 |
rent |
租赁行为记录表 |
icome |
财务表 |
4.2业务逻辑层的实现
业务逻辑层采用JavaBean来实现数据库连接和系统业务逻辑处理。主要实现类,如表4.2所示。
表4.2 业务逻辑层类名及说明表
业务逻辑类 |
说明 |
AdminDAO.java |
管理员业务逻辑处理类 |
ClientDAO.java |
客户、租赁、财务业务逻辑类 |
GoodsDAO.java |
材料业务逻辑处理类 |
4.3控制层的实现
控制层采用Servlet来完成系统的逻辑控制。主要实现类,如表4.3所示。
表4.3 控制层类名及说明表
业务逻辑类 |
说明 |
DoAdminLoginServlet.java |
管理员登录控制类 |
ChangePasswordServlet |
管理员密码修改控制类 |
AddAdminServlet |
管理员添加控制类 |
ClientServlet.java |
客户、租赁、财务管理控制类 |
GoodsServlet.java |
材料信息管理控制类 |
4.4表现层的实现
表现层是用户所接触的图形界面,所有界面的友好性是很重要的。在表现层的实现过程中,使用Dreamweaver网页设计工具和Photoshop图像处理工具对用户界面进行了精心设计。以下为主要用户界面设计,如图2、图3、图4和图5所示。
图2 系统登录图
图3 系统登录成功欢迎页
图4 系统客户列表页
图5 系统添加客户页
4.5系统公共组件
4.5.1 采用JDBC的数据操作公共类
package com.dao;
import java.sql.*;
public class DB
{
protected Connection cnotallow=null;
Private PreparedStatement pstmt=null;
private Statement stmt= null;
private ResultSet rs =null;
//JDBC数据库连接配置信息
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/wz?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "root";
//数据库连接方法
public Connection getConn() throws Exception
{
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
//关闭数据库操作方法
public void closeAll( Connection conn, PreparedStatement pstmt, ResultSet rs ) {
//如果rs不空,关闭rs
if(rs != null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
//如果pstmt不空,关闭pstmt
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e){
e.printStackTrace();
}
}
//如果conn不空,关闭conn
if(conn != null){
try {
conn.close();
} catch (SQLException e){
e.printStackTrace();
}
}
}
}
4.5.2 乱码过滤器
过滤器类:
package com.untils;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharactorFilter implements Filter {
//继承Filter类
//字符编码
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
}
//传递给下一个过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//获取初始化参数
encoding=filterConfig.getInitParameter("encoding");
}
public void destroy() {
encoding=null;
}
}
过滤器配置(在web.xml文件中进行过滤器的配置):
<filter>
<!--过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!--过滤器的完整类名 -->
<filter-class>cn.com.Filter.CharactorFilter</filter-class>
<!--初始化参数 -->
<init-param>
<!--参数名称 -->
<param-name>encoding</param-name>
<!--参数值 -->
<param-value>utf-8</param-value>
</init-param>
</filter>
<!--过滤器映射 -->
<filter-mapping>
<!--过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!--URL映射,给所有页面处理乱码 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
4.5.3 404、500异常处理
拦截异常配置:
<!-- 配置404与500错误处理-->
<error-page>
<error-code>404</error-code>
<location>/404.htm</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.htm</location>
</error-page>
异常拦截跳转页面:
如果出现404错误,跳转至404.htm
如果出现500错误,跳转至500.htm
5.系统测试
5.1测试环境
测试环境:windows 7操作系统。
浏览器:Google Chrome。
服务器:tomcat6.0。
5.2测试步骤
- 在MyEclipse开发工具中,将系统打包成wz.war的文件。
- 将wz.war文件复制到tomcat中webapps下。
- 启动tomcat。
- 系统访问地址:http://localhost:8080/wz/admin/index.jsp。
用户名:admin,密码:1234。
5.3测试结果
- 用户登录测试
在后台登录界面,需输入用户名和密码,如图6所示。
图6 输入用户名、密码图
如果输入的用户名和密码不匹配,则提示输入错误,如图7所示。
图7 用户名或密码输入错误图
输入正确的则进入后台信息的管理界面,如图8所示。
图8 系统登录成功图
- 材料租赁测试
通过客户列表页进入材料租赁页面选择现有才有进行租赁,如图9所示。
图9 系统材料租赁图
将租赁材料录入后,点击提交按钮,出现租赁成功界面提示,如图10所示。
图10 材料租赁成功图
在租赁管理界面中,可查看正在租用材料的信息,如图11所示。
图11 材料租赁管理图
可对正在租用的材料进行归还,成功则出现提示,如图12所示。
图12 材料归还成功图
(4) 管理员退出
管理员点击安全退出按钮,提示“您确定要退出!”,如图13所示。
图13 系统提示是否退出图
退出则回到最初的登录界面,如图14所示。
图14 系统退出成功图
6.结束语
历时将近半年的时间,毕业设计基本完成。从论文选题到搜集资料,从写稿编程到反复修改,从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达,期间经历了喜悦、聒噪、痛苦和彷徨,在写作论文的过程中心情是如此复杂。在此期间不断的进行精心的修改,不断地去整理各方面的资料,不断的想出新的创意,认真总结。历经了这么久的努力,紧张而又充实的毕业设计终要落下帷幕。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。学习是一个长期积累的过程。 在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,注重理论与实践的相结合。
致谢
行文至此,我的这篇论文已接近尾声,经过半年的忙碌和工作,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方。如果没有导师的督促指导,以及一起学习的同学们的支持,想要完成这个设计是更加困难的。
生我者父母。感谢生我养我,含辛茹苦的父母。是你们,为我的学习创造了条件;是你们,一如既往的站在我的身后默默的支持着我。没有你们就不会有我的今天。谢谢你们,我的父亲母亲!
育我成才者老师。感谢我的指导老师张永奎教授、张婷和李红老师,这篇论文是在他们的悉心指导下完成的。老师们从选题、撰写论文、程序编写等方面为我提供了很多专业性的指导。张教授渊博的学识、严谨的治学态度、精益求精的工作作风和诲人不倦的高尚师德,都将深深地感染和激励着我。在四年的大学时光里,辅导员乔润莲老师不仅在学业上给我鼓励,同时还在思想、生活上给我以无微不至的关怀,在此向各位老师致以诚挚的感谢!
感谢为这篇论文的完成付出了辛勤劳动和心血的同学——侯兆瑞和付颖琦。她们在我遇到困难的时候,给了我极大的帮助。
本文参考了大量的文献资料,在此,向各学术界的前辈们致敬。
最后,我要特别感谢我院的老师在我多年的求学生涯中给予的无私的帮助! 再一次对上述各位老师和同学致以最诚挚的谢意!
参考文献
[1]飞思科技产品开发中心著.JSP数据库开发实例精粹[M].北京:电子工业出版社,2005.1.
[2][美]Hans Bergsten著,林琪等译.JSP设计[M].北京:中国电力出版社,2004.12.
[3]飞思科技产品开发中心著.JSP应用开发详解[M].北京:电子工业出版社,2002.1
[4]Bruce W.Perry.Java Servlet & JSP Cookbook[M].O'Reilly,2004.1
[5]林上杰,林康司著.JSP2.0技术手册[M].北京:电子工业出版社,2004.5.
[6]张新曼.精通JSP-WEB开发技术与典型应用[M].北京:人民邮电出版社, 2007. 98-101
[7]陈文兰.基于SSH 集成架构的进销存管理系统的设计[J].农业网络信息.
[8]邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.
[9]朱涛江.SqlServer权威指南[M].中国电力出版社.2003.
[10]郝玉龙.JavaEE编程技术[M].北京:北京交通大学出版社.
[11]孟伟,李茜,曾波.电子商务平台建设与管理实验教程[M].重庆大学出版社.2009.1
[12](美)Bruce Eckel著,陈昊鹏译.Java编程思想(第三版)[M].北京:机械工业出版社,2007.6
[13]李建中,王珊.《数据库系统原理(第2版)》电子工业出版社.2004.9
[14]张长富,黄中敏.JavaScript动态网页编程实例手册[M].北京:海洋出版社,2005:196-239
[15]艾灵仙.高校系级网站构建平台的设计与实现[J].科技信息-2008年16期
Design and implementation of material Hengxin lease system
Abstract: With the advancement of science and technology, the rapid development of the computer industry, greatly improve people's working efficiency. The introduction of computer information processing system has revolutionized the management of many systems. Hengxin rental station rent various types of long-term heavy steel, fasteners, crane and other construction equipment. This system is Hengxin rental station provides a convenient and efficient materials management system to facilitate the management of rental supplies. System features include: user management, including the administrator to view information and change the password; normal order management: including the new normal orders, modify wrong order, delete the wrong order; settlement funds management: cost statistics; material lease management include: orders rental inquiries, equipment recycling management, daily rental management, warehouse inventory management.
The system development tool uses Myeclipse, database design using MySQL database development model uses JSP as the view layer MVC design pattern. System is user-friendly, beautiful, low system redundancy degree program, the system has strong scalability and maintainability.
Key words: Materials; JSP; MVC; MySQLDatabase; Management