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