毕业论文基于Java的物流管理系统的设计与实现Word下载.docx
《毕业论文基于Java的物流管理系统的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《毕业论文基于Java的物流管理系统的设计与实现Word下载.docx(29页珍藏版)》请在冰点文库上搜索。
计算机科学技术的全球化发展使社会进入了信息和数字化时代,通过计算机来获取物流信息已成为物流行业发展的主流趋势。
因此,拥有一个高效的物流管理系统平台对企业来说是十分必要的。
通过物流管理系统能够监控整个物流运作流程,实时了解货物去向,查看订单状态,提高作业效率,可以高效的实现用户管理、车辆管理、配送运输管理、线路管理、订单管理、报表管理、配送点管理、货物种类管理等功能[3]。
为企业提供更高效、更准确的管理模式,推进物流行业发展。
通过大学期间的专业课程,我们已经学习了软件开发相关的专业理论知识,掌握了软件开发的大概流程及方法,通过物流管理系统的毕业设计,可以很好地锻炼我的实践能力,增加对Java语言的熟练程度,了解Tomcat的特性,学会使用Oracle数据库,熟悉SQL语言的增删改查等语句,为进入公司工作奠定良好的技术基础[4-5]。
2系统开发工具及技术简介
2.1开发环境的选择
操作系统:
Windows7
应用程序开发软件:
Myeclipse10。
它在eclipse基础上添加了自己开发的插件,支持广泛,可以用来开发Java、JavaEE和移动应用等项目[6-8]。
服务器:
AapcheTomcat。
目前Tomcat是广泛被使用的服务器,而且是一款开源免费的跨平台软件,它非常适合中小型应用项目和学习者。
2.2系统开发模式及相关技术
本系统采用Brower/Server模式,此模式使客户端更加方便,只需要在客户端装上一个浏览器,就可以访问网页并同数据库进行交互,保护了数据库和数据安全,使系统的开发维护和使用得到了简化,降低了成本,另外,采用了MVC框架和S.S.M(Struts2,Spring,Mybatis)框架[9-10]。
2.2.1MVC框架
MVC是ModelViewController的缩写,将应用程序划分成了模型(Model)、视图(View)和控制器(Controller)三个部分[11-13]。
模型(Model)表示应用程序核心,包含了应用程序的业务逻辑和业务数据,负责在数据库中存取数据。
视图(View)封装了应用程序的输出形式,在应用程序中负责数据显示部分。
控制器(Controller)负责协调模型和视图,处理用户的交互。
根据用户的请求调用对应的模型来处理业务,控制用户输入,并向模型发送数据。
MVC组件关系图:
图2-1MVC组件关系图
2.2.2Struts2框架
Struts2是一个开源的MVC开发框架,它是由Struts1和WebWork合并而来,支持多视图表示。
以WebWork为核心,以控制层为重点。
Struts2的主要工作流程如下:
1、客户端浏览器发出HTTP请求,根据web.xml配置,该请求被FilterDispatcher接收。
2、
FilterDispatcher加载每个实现类,根据struts.xml配置,读取需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
3、Action调用业务逻辑组件,执行相应的方法,根据struts.xml中的配置来查找对应的返回结果,并跳转到相应页面,将HTTP响应返回到客户端浏览器[14-15]。
2.2.3Spring框架
Spring是在Java的基础上发展起来的一个轻量级开源技术框架。
Spring框架是一个基于IOC(控制反转)和AOP(面向方面编程)的架构。
它通过IOC与Bean装配,实现了Dao和Service的依赖注入,具有强大的框架整合能力,能够通过配置文件将控制层框架和数据持久层框架整合到一起[16]。
IOC即控制反转,通过反射机制动态地创建对象和调用对象的方法,主要形式有依赖查找和依赖注入。
采用IOC可以很容易的实现Dao和Service的依赖注入。
AOP即面向方面编程,利用代理的设计模式在不修改源代码的情况下给程序添加功能。
采用AOP可以实现事务管理和日志管理。
2.2.4MyBatis框架
MyBatis的前身是ibatis,支持普通SQL查询、存储过程和高级映射,是以数据映射为核心的持久层框架,能够将数据库列表映射到领域模型层。
MyBatis框架的主要工作流程分为:
加载配置、SQL解析、SQL执行、结果映射。
该框架通过XML配置文件和注解来加载数据源,把SQL的配置信息加载成Mappedstatement对象。
当有调用的请求时,API接口层会接收到传入SQL的ID和传入参数对象,MyBatis根据该ID和对象来获取并解析Mappedstatement,从而获得SQL语句和参数[17-18]。
数据库执行该SQL语句和参数,然后将执行的结果转换成HashMap、javabean或基本数据类型并返回。
2.2.5SSM整合
SSM框架是由Struts2,Spring,Mybatis三层框架组合而成。
Struts2实现MVC的分离,并控制所有页面的跳转,配置Web.xml文件、Struts.xml文件和Spring的配置文件。
Spring负责业务逻辑,控制Action对象和Service类,充当了管理容器的角色。
Mybatis负责数据持久层,实现了半自动化对象的关系映射。
SSM框架分层结构清晰,可以直接调用封装好的接口,提高了系统开发效率,降低了项目的开发成本,缩短了项目开发周期,使模块的测试和维护变得简单[19-20]。
2.3数据库工具的选择
数据库软件:
OracleDatabase。
Oracle是甲骨文公司开发的一款关系数据库,具有很强的稳定性,被世界广泛使用。
它的核心是分布式数据库,对各种大中小微机环境都很实用,具有完备性、可移植性和分布式处理功能,功能强大,效率高,可靠性好,使用方便,可扩展性和数据库安全性强,对于高吞吐量的数据库解决方案也很适用。
3系统需求分析
3.1系统概述
项目业务流程:
配送点收到客户待寄货物,由配送点管理员在管理系统中输入初始订单,并将初始订单订单设置为未生效,订单在未生效状态时,管理员可以将订单删除。
初始订单中包含订单编号、货物名称、寄件人和收件人的姓名、地址、电话、邮编以及备注信息。
初始订单生成后,经过配送点检查货物,由管理员在订单管理页面修改初始订单的信息,输入准确的货物数量、重量、体积,确定始发地点与目的站点,并由系统生成价格。
管理员综合考虑货物的重量体积以及路程远近,为此订单分配司机和乘运车辆,选择运货线路。
订单状态修改为正在派件。
将待运货物装车,并生成装车交接单,车辆出发后,订单状态修改为运输中。
收件人接收货物签收后,订单状态修改为已完成。
3.2系统功能需求分析
登陆功能:
登陆系统是通过身份验证登录。
分为总公司管理员和配送点管理员两种用户类型。
分别通过不同的用户名和密码进入物流管理系统界面。
配送点管理员权限:
可以查看所属配送点的配送点员工信息、订单进度信息、运费规定、货物种类;
可以修改添加订单信息;
可以修改自己的个人信息及密码。
总公司管理员权限:
总公司管理员可以增加、删除、修改、查询每个表的信息,即拥有所有权限。
3.3系统功能结构图
总公司管理员功能结构图:
图3-3-1管理员功能结构图
4数据库设计
4.1概念设计
本系统采用Oracle数据库设计,根据需求分析,数据库一共包含14个表,各个表功能说明如下表所示:
表4-1各个表功能说明
表名
功能说明
ROLES(角色表)
存放角色ID及角色权限
USERS(用户表)
存放所有用户的基本个人信息和所属配送点
DRIVER(司机表)
存放所有司机信息,包括姓名、电话和驾照编码
VEHICLE(车辆表)
存放所有车辆信息,包括牌照、载重、容量
VEHICLE_DRIVER(车辆司机关系表)
存放司机和车辆的关联关系
STATION(配送点)
存放配送点信息,包括名称、电话、地址、收费标准
ORDERS(订单表)
存放订单信息,包括订单编号、状态、收寄日期、货物名称、总费用、寄件人和收件人信息
ORDERSTATE(订单状态表)
存放订单编号、货物所在配送点、处理时间、订单状态
STATION_ORDER(配送点_订单表)
配送点和定单对应表
TRANSPORTFEE(运输费用表)
存放运输收费标准
WAY(线路表)
存放路线信息
WAY_DETAIL(线路明细表)
存放每条路线详细信息
GOODSTYPE(货物种类表)
存放货物种类信息
REPORT(业务报表)
存放每个配送点每个月的业务情况信息
4.2数据库表的详细介绍
(1)角色表
该表用来存放角色信息,表中有3个字段:
角色ID(ID)、角色名(rolename)、权限(permission)。
其详细设计如表4-2-1所示:
表4-2-1角色表结构
字段名
数据类型
允许为空
是否主键
是否外键
描述
ID
NUMBER(20)
No
Yes
角色编号
ROLENAME
VARCHAR2(50)
角色名称
PERMISSION
VARCHAR2(200)
角色权限
(2)用户表
该表用来存放用户信息,表中有8个字段:
用户ID(ID)、所属配送点ID(BELONGTO_ID)、角色ID(ROLE_ID)、姓名(NAME)、电话号码(MOBILEPHONE)、家庭住址(ADDRESS)、用户名(USERNAME)、密码(PASSWORD)。
其详细设计如表4-2-2所示:
表4-2-2用户表结构
用户编号
BELONGTO_ID
所属配送点ID
ROLE_ID
角色ID
NAME
用户姓名
MOBILEPHONE
VARCHAR2(20)
电话号码
ADDRESS
家庭住址
USERNAME
登录用户名
PASSWORD
登录密码
(3)司机表
该表用来存放司机信息,表中有4个字段:
司机ID(ID)、司机姓名(DRIVERNAME)、驾照编号(DRIVERLICENSE)、司机电话(DRIVERMOBILE)。
其详细设计如表4-2-3所示:
表4-2-3司机表结构
司机ID
DRIVERNAME
司机姓名
DRIVERLICENSE
驾照编号
DRIVERMOBILE
司机电话
(4)车辆表
该表用来存放车辆信息,表中有4个字段:
车辆ID(ID)、车牌号(VEHICLELICENSE)、车辆载重(VEHICLELOAD)、车辆容量(VEHICLECAPACITY)。
其详细设计如表4-2-4所示:
表4-2-4车辆表结构
车辆ID
VEHICLELICENSE
车牌号
VEHICLELOAD
车辆载重
VEHICLECAPACITY
车辆容量
(5)车辆司机关系表
该表用来存放司机信息,表中有3个字段:
车辆ID(VEHICLE_ID)、司机ID(DRIVER_ID)、编号(ID)。
其详细设计如表4-2-5所示:
表4-2-5车辆司机关系表结构
VEHICLE_ID
DRIVER_ID
编号
(6)配送点
该表用来存放配送点信息,表中有5个字段:
配送点ID(ID)、配送点名称(STATIONNAME)、配送点电话(STATIONPHONE)、配送点地址(STATIONADDRESS)、收费标准ID(TRANSFEE_ID)。
其详细设计如表4-2-6所示:
表4-2-6配送点表结构
配送点ID
STATIONNAME
配送点名称
STATIONPHONE
配送点电话
STATIONADDRESS
配送点地址
TRANSFEE_ID
收费标准ID
(7)订单表
该表用来存放订单信息,表中有22个字段:
订单ID(ID)、出发地名称(OUTSETSTATIONID)、目的地名称(DESTSTATIONID)、订单状态(ORDERSTATUS)、车辆ID(VEHICLEID)、收货日期(RECEIVEDATA)、货物名称(GOODSNAME)、货物数量(GOODSNUMBER)、货物类型ID(GOODSTYPEID)、货物总重量(GOODSTOTALWEIGHT)、货物总体积(GOODSTOTALVOLUME)、总运费(TOTALFARE)、寄件人姓名(SENDERNAME)、寄件人电话(SENDERMOBILEPHONE)、寄件人地址(SENDERADDRESS)、寄件人邮政编码(SENDERZIPCODE)、收件人姓名(ADDRESSEENAME)、收件人电话(ADDRESSEEMOBILEPHONE)、收件人地址(ADDRESSEEADDRESS)、收件人邮政编码(ADDRESSEEZIPCODE)、备注信息(REMARK)、运货线路(WAY_ID)。
其详细设计如表4-2-7所示:
表4-2-7订单表结构
订单ID
OUTSETSTATIONID
出发地名称
DESTSTATIONID
目的地名称
ORDERSTATUS
订单状态
VEHICLEID
车辆ID
RECEIVEDATA
DATE
收货日期
GOODSNAME
货物名称
GOODSNUMBER
货物数量
GOODSTYPEID
货物类型ID
GOODSTOTALWEIGHT
货物总重量
GOODSTOTALVOLUME
货物总体积
TOTALFARE
总运费
SENDERNAME
寄件人姓名
SENDERMOBILEPHONE
寄件人电话
SENDERADDRESS
寄件人地址
SENDERZIPCODE
寄件人邮政编码
ADDRESSEENAME
收件人姓名
ADDRESSEEMOBILEPHONE
收件人电话
ADDRESSEEADDRESS
收件人地址
ADDRESSEEZIPCODE
收件人邮政编码
REMARK
备注信息
WAY_ID
运货线路
(8)订单状态表
该表用来存放订单状态信息,表中有5个字段:
编号(ID)、配送点(POSITION)、处理时间(MANAGETIME)、状态(STATE)、订单ID(ORDER_ID)。
其详细设计如表4-2-8所示:
表4-2-8订单状态表结构
POSITION
配送点
MANAGETIME
TIMESTAMP(6)
处理时间
STATE
状态
ORDER_ID
(9)配送点_订单表
该表用来存放配送点信息,表中有3个字段:
编号ID(ID)、订单ID(ODER_ID)、配送点ID(STATION_ID)。
其详细设计如表4-2-9所示:
表4-2-9配送点-订单表结构