🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示(需要演示视频可以私信我)
摘 要
本物流管理系统设计目标是实现物流的信息化管理,提高管理效率,使得物流管理作规范化、科学化、高效化。
本文重点阐述了物流管理系统的开发过程,以实际运用为开发背景,基于SSM框架,运用了Java编程语言和MYSQL数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了物流相关信息管理的重要功能。
本物流管理系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的物流管理平台。
关键词:物流管理,Java编程语言,SSM框架,MYSQL数据库
1 绪论
1.1 研究背景
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
对于物流管理方面来说,虽然现在已经有利用信息技术运作物流管理的例子,但大都处于起步阶段,有的仅仅是一些静态的网页设计或单纯的搬一些必需的表格上电脑,缺乏互动性,用户不能参与,无法实现寄件申请,这些并没有很好的利用信息技术实现真正的物流管理自动化。因此为了提高物流管理效率,选择开发本物流管理系统。
本物流管理系统实现了物流管理自主化、智能化,达到提高管理效率和质量,满足物流管理要求,节省人力资源的目的。
1.2 设计原则
在开始开发项目之前,必须要先考虑项目的实用性、科学性,以及该项目是否能够真正让用户受益并尽可能的发挥项目的作用。因此,在开发前,通过以下几条原则对项目进行判断:
(1)可行性原则。项目需要保证经济可行性和技术可行性,这包括了项目在浏览端、服务端等方面上的经济和技术上是可以达成的。
(2)适应性原则。项目要保证可维护性和可扩展性,这是每个非短期项目都需要考虑的,并且不论是维护还是扩展,都必须要建立在适应用户的正常需求的基础上。
(3)安全性及保密性原则。要充分保证用户信息的安全性和保密性,不能因为开发上的疏忽,导致用户的信息泄露。
(4)系统工程原则。为了确保项目的整体性,在项目调查、项目分析、项目设计、项目开发的过程中,都需遵从项目工程的方法和步骤逐步进行。
(5)统一规划、分期实施、逐步完善原则。项目开发的过程中,要按照规划、分期实施,特别是要注意在项目开发过程中要有条理,从点到面,一步步完善,不要贪图进度,要循环渐进的对项目进行开发。
1.3 论文结构安排
第一部分绪论:文章主要从课题背景、设计原则综合阐述了开发此系统的必要性。
第二部分相关技术:系统开发用到的各种技术都大致做出了简介
第三部分系统分析:从可行性分析和功能需求分析等角度综合研究了此次开发的系统
第四部分系统设计:功能模块设计和数据库设计这两部分内容都有专门的表格和图片表示
第五部分系统实现:进行系统主要功能模块的界面展示
第六部分系统测试:检验程序是否达到预期目标
第七部分总结:进行最后的总结工作
2 关键技术简介
2.1 JAVA技术
Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。
在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。
(1)在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。
(2)企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。
(3)现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。
2.2 MYSQL数据库
所谓数据库,实际上就是一个容器,按照数据结构来组织、存储和管理。数据库的作用就是为大量的信息进行管理并提供高效的解决方案。
MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[5]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。
MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本,这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因[1]。
2.3 B/S结构
Browse/Sever(浏览器/服务器)架构,是一种基于互联网系统的所开发的一种架构,是在C/S架构上进行完善开发的一种架构,它主要用于Web和移动端的软件开发。它的方便在于用户只需要在浏览器上连接部署上用户所需的数据库便可在浏览器浏览用户所需的数据。
从逻辑上B/S架构可以分为三层结构体系,客户机层浏览器,Web层和DB服务器层。客户机层可以将用户所需要的数据信息通过后端数据库数据模块的读取,显示到用户的客户层浏览器中。Web层主要是实现浏览器上的功能,来分析处理数据进行端口的对接。可以访问COM,ADO等对象。DB服务器层是整个B/S框架的核心,为其他技术提供数据库的支持,并对各种数据库进行更新,删除,添加,查询等功能。
B/S架构这种只需要用户在浏览器上运行不需要再下载客户端的模式,使用浏览器就可以实现和下载客户端的一样复杂的功能。给管理系统的用户带来了很大的方便,节约了大量的成本。现在B/S架构已经在Web开发上被广泛运用,它的基础内容也在不断的完善更新。
2.4 SSM框架
本物流管理系统基于Spring、SpringMVC、Mybatis框架进行开发设计。
Spring 框架是在2004年首次发布,之后出现了多次的重大修订。Spring框架是由七个不同的模块组成,分别是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[16]。这些模块提供不同的平台来开发不同的企业应用程序 ,本课题使用Spring Web MVC模块开发基于MVC的应用程序。
Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring 框架中。“Spring Web MVC”是该框架的正式名称,但通常被简称为“Spring MVC” [17]。Spring MVC框架提供了模型模块-视图模块-控制器的架构和可用于直接开发的Web应用程序的现成组件。Spring MVC模式将应用程序的不同方面分开,使元素之间形成松散耦合。
MyBatis原名叫做iBatis属于持久层框架,消除了大部分JDBC代码和参数的设置以及结果集的检索。这个框架不仅支持普通SQL查询和存储过程,还支持高级的映射[18]。MyBatis使用.xml和注解来做原始映射和配置,将接口和Java对象映射成数据库记录。
3 系统分析
3.1 可行性分析
可行性分析是该平台系统进行投入开发的基础第一步,必须对其进行可行性分析才能够降低不必要的需要从而使资源合理利用,更具有性价比和降低成本,同时也是系统平台的成功的未雨绸缪的一步。
3.1.1 技术可行性
本系统可运用SSM框架,结构清晰明了,网页采用的是JSP进行开发,相比Html更适合。系统使用Java语言编写,JAVA语言有着庞大的用户以及学习群体。数据库采用MySQL。这些都是比较基础,使用较为广泛的技术,因此具有技术可行性。
3.1.2 经济可行性
每一套系统的开发,都得花费一定的时间去研究。需要使用的软件也是有很多需要花钱。本系统使用的MyEclipse、MySQL数据库及Google Chrome浏览器等软件都是网上均可以下载使用的,供程序员免费使用,无需收费。从开发角度来说,成本低,因此具有经济可行性。
3.1.3 操作可行性
本系统操作不复杂且比较容易上手,对于初次接触本系统的来说,不许要接受什么培训就可以操作本系统。用户不需要什么特定的软件,只需要安装大众所使用的浏览器即可进行系统的访问。本系统采用可视化窗口,面向大众,有效的避免了繁琐的操作。而且,本系统将各个功能都详细设计,各模块功能逻辑清晰,对用户非常友好。因此,本系统具有操作可行性。
3.1.4法律可行性
所有的功能模块都不违法法律,也不涉及法律的灰色地带,项目部署在国内的服务器中,域名在国家的工业和信息化部进行备案,接受监管。所以在开发过程中不会涉及法律责任,具有可行性;
综上所述,本次开发的物流管理系统在技术、经济、操作以及法律四个方面都能够保障系统的顺利开发,具有极高的开发可行性。
3.2 系统性能分析
系统除了功能结构设计以外还需要附加需求的分析,非功能需求分析,主要是包括界面、数据库问题、框架等,需要满足非功能性能的需求,保证系统运行起来的时候能够达到最佳的效果,保证稳定性和安全性。
(1)数据底层统一。数据传输中需要进行数据处理,在查询数据存储上达到最佳效果。
(2)界面风格统一。图片需要进行PS处理,文字需要统一格式大小。
(3)数据库。每个模块都需要独立,各个模块之间相互配合,形成一个整体,包装各个功能合理化的配置,需要考虑开放端口,满足可扩展性。
3.3 系统功能分析
本物流管理系统主要实现了管理员功能模、配送员功能模块和用户功能模块三大部分,下面将对这三大功能模块分别进行功能需求分析。
管理员功能模块:管理员登录后可对系统进行全面管理,管理员登录后主要实现的功能模块包括个人中心、用户管理、配送员管理、站点信息管理、寄件信息管理、仓库管理、物流信息管理、配送信息管理、配送员报销管理以及结算管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。
用户功能模块:没有账号的用户可进行注册操作,注册登录后主要功能模块包个人中心、站点信息管理、寄件订单管理以及物流信息管理。
配送员功能模块:配送员注册登录后主要功能模块包括个人中心、寄件订单管理、物流信息管理、配送信息管理以及配送员报销管理。
3.4 系统技术框架分析
本物流管理系统是基于B/S模式又称Brower/Server或浏览器/服务器模式。采取流行成熟的JSP+MYSQL技术,利用浏览器通过Web Server同数据库进行数据交互。本系统只要有一台能上网的电脑就能使用,即客户端零维护。而且,系统的扩展非常容易,只要能上网就可以使用了。采用技术框架图如图3-1所示。
图3-1系统技术框架图
3.5 系统流程分析
3.5.1开发流程
物流管理系统的开发也是有对应的流程,开发之前必须要进行用户功能需求的分析,最后根据功能需求进行网站设计还有数据库相关数据的设计工作,此次开发的物流管理系统开发流程如图3-2所示。
图3-2 开发流程图
3.5.2登录流程
用户要想在物流管理系统中进行参与操作,必须登录系统,用户登录流程图如图3-3所示。
图3-3登录流程图
3.5.3 注册流程
未有账号的用户和配送员均可进行注册操作,注册流程图如图3-4所示。
图3-4 注册流程图
3.5.4添加信息流程
在添加信息时,系统首先判断信息是否合法,合法则添加成功,反之重新输入。添加信息流程图如图3-5所示。
图3-5 添加信息流程图
4 系统设计
4.1 系统结构设计
在结构设计过程中,首先对系统进行需求分析,然后进行系统初步设计,将系统功能模块细化,具体分析每一个功能模块具体应该首先哪些功能,最后将各个模块进行整合,实现系统结构的最终设计。本物流管理系统结构设计如图4-1所示。
图4-1 系统结构图
4.2 系统顺序图设计
4.2.1登录模块顺序图
登录模块主要满足了管理员、配送员和用户的权限登录,登录模块的顺序图如图 4-2 所示。
图4-2登录顺序图
4.2.2添加信息模块顺序图
管理员、配送员和用户登录后均可进行信息的添加操作,添加信息顺序图如图4-3所示
图4-3添加信息顺序图
4.3 系统数据库设计
数据库是动态软件技术的基础,本系统将采用MYSQL作为数据库工具。物流管理系统的数据库管理要进行各种各样的数据处理,提供各类信息的添加、删除、修改和更新等功能。通过上述对系统的设计分析,根据系统的需求,主要设计为数据库概念设计和逻辑结构设计。
4.3.1 数据库E-R图设计
E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。
实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。
属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。
关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本物流管理系统的E-R图如下所示:
(1)管理员信息实体E-R图如图4-4所示:
图4-4 管理员信息实体E-R图
(2)用户信息实体E-R图如图4-5所示:
图4-5 用户信息实体E-R图
(3)站点信息实体E-R图如图4-6所示:
图4-6 站点信息实体E-R图
(4)物流信息实体E-R图如图4-7所示:
图4-7 物流信息实体E-R图
(5)配送员信息实体E-R图如图4-8所示:
图4-8 配送员信息实体E-R图
4.3.2 数据库表设计
本物流管理系统采用MYSQL数据库进行系统数据的储存,下面介绍数据库中的各个表的详细信息。
表4-1 users管理员信息表
序号 | 字段 | 描述 | 类型和长度 | 主键 | 是否可空 |
1 | id | 编号 | bigint(20) | 是 | 不允许 |
2 | username | 用户名 | varchar(100) | 否 | 允许 |
3 | password | 密码 | varchar(100) | 否 | 允许 |
4 | role | 角色 | varchar(100) | 否 | 允许 |
5 | addtime | 添加时间 | timestamp | 否 | 允许 |
表4-2 yonghu用户信息表
序号 | 字段 | 描述 | 类型和长度 | 主键 | 是否可空 |
1 | id | 编号 | bigint(20) | 是 | 不允许 |
2 | addtime | 创建时间 | timestamp | 否 | 允许 |
3 | yonghuming | 用户名 | varchar(200) | 否 | 允许 |
4 | mima | 密码 | varchar(200) | 否 | 允许 |
5 | jijianrenxingming | 姓名 | varchar(200) | 否 | 允许 |
6 | xingbie | 性别 | varchar(200) | 否 | 允许 |
7 | shouji | 手机 | varchar(200) | 否 | 允许 |
8 | youxiang | 邮箱 | varchar(200) | 否 | 允许 |
9 | shenfenzheng | 身份证 | varchar(200) | 否 | 允许 |
10 | zhaopian | 照片 | varchar(200) | 否 | 允许 |
表4-3 zhandianxinxi站点信息表
序号 | 字段 | 描述 | 类型和长度 | 主键 | 是否可空 |
1 | id | 编号 | bigint(20) | 是 | 不允许 |
2 | addtime | 创建时间 | timestamp | 否 | 允许 |
3 | zhandianmingcheng | 站点名称 | varchar(200) | 否 | 允许 |
4 | dizhi | 地址 | varchar(200) | 否 | 允许 |
5 | zhaopian | 照片 | varchar(200) | 否 | 允许 |
6 | jingyingfanwei | 经营范围 | varchar(200) | 否 | 允许 |
7 | zhongliangjifei | 重量计费 | varchar(200) | 否 | 允许 |
表4-4 wuliuxinxi物流信息表
序号 | 字段 | 描述 | 类型和长度 | 主键 | 是否可空 |
1 | id | 编号 | bigint(20) | 是 | 不允许 |
2 | addtime | 创建时间 | timestamp | 否 | 允许 |
3 | wuliubianhao | 物流编号 | varchar(200) | 否 | 允许 |
4 | yonghuming` | 用户名 | varchar(200) | 否 | 允许 |
5 | jijianrenxingming | 寄件人姓名 | varchar(200) | 否 | 允许 |
6 | shouji` | 手机 | varchar(200) | 否 | 允许 |
7 | wupinmingcheng | 物品名称 | varchar(200) | 否 | 允许 |
8 | mudedi | 目的地 | varchar(200) | 否 | 允许 |
9 | shoujianrenxingming | 收件人姓名 | varchar(200) | 否 | 允许 |
10 | lianxifangshi | 联系方式 | varchar(200) | 否 | 允许 |
11 | tupian | 图片 | varchar(200) | 否 | 允许 |
12 | peisongyuangonghao | 配送员工号 | varchar(200) | 否 | 允许 |
13 | peisongyuanxingming | 配送员姓名 | varchar(200) | 否 | 允许 |
14 | lianxidianhua` | 联系电话 | varchar(200) | 否 | 允许 |
15 | wuliuzhuangtai | 物流状态 | varchar(200) | 否 | 允许 |
表4-5 peisongyuan配送员信息表
序号 | 字段 | 描述 | 类型和长度 | 主键 | 是否可空 |
1 | id | 编号 | bigint(20) | 是 | 不允许 |
2 | addtime | 创建时间 | timestamp | 否 | 允许 |
3 | peisongyuangonghao | 配送员工号 | varchar(200) | 否 | 允许 |
4 | peisongyuanxingming | 配送员姓名 | varchar(200) | 否 | 允许 |
5 | mima | 密码 | varchar(200) | 否 | 允许 |
6 | xingbie | 姓名 | varchar(200) | 否 | 允许 |
7 | lianxidianhua | 联系电话 | varchar(200) | 否 | 允许 |
8 | youxiang | 邮箱 | varchar(200) | 否 | 允许 |
9 | `shenfenzheng | 身份证 | varchar(200) | 否 | 允许 |
10 | zhaopian | 照片 | varchar(200) | 否 | 允许 |
5 系统的实现
5.1 登录模块的实现
用户要想进入本系统必须进行登录操作,在登录界面输入系统账号、登录密码,选择登录类型,点击登录按钮进行登录系统,系统登录界面展示如图5-1所示。
图5-1 系统登录界面图
5.2 注册模块的实现
没有账号的用户和配送员可进入对应角色注册界面进行注册操作,用户注册界面展示如图5-2所示,配送员注册界面展示如图5-3所示。
图5-2用户注册界面图
图5-3 配送员注册界面图
5.3 用户管理模块的实现
管理员登录后可查询、添加、修改和删除用户信息,用户管理界面展示如图5-4所示。
图5-4 用户管理界面图
5.4 配送员管理模块的实现
管理员可增删改查配送员信息,配送员管理界面展示如图5-5所示。
图5-5 配送员管理界面图
5.5 站点信息管理模块的实现
管理员可增删改查站点信息,用户登录后可查看站点信息,并可选择站点进行寄件,站点信息管理界面展示如图5-6所示,添加站点信息界面展示如图5-7所示,站点信息界面展示如图5-8所示。
图5-6 站点信息管理界面图
图5-7 添加站点信息界面图
图5-8 站点信息界面图
5.6 寄件订单管理模块的实现
用户登录后可选择站点进行添加寄件订单,添加寄件订单界面展示如图5-9所示。配送员可查看用户寄件订单信息,并可对其进行揽收入库操作,寄件订单管理界面展示如图5-10所示
图5-9 添加寄件订单界面图
图5-10 寄件订单管理界面图
5.7 仓库管理模块的实现
管理员可进行仓库管理操作,并可进行发货、修改和删除,仓库管理界面展示如图5-11所示。
图5-11 仓库管理界面图
6 系统测试
6.1 测试目的
系统测试是通过在设定的特定的环境下执行程序来检测环境发生错误的不可或缺的阶段。系统测试包括安全测试、压力测试、回复测试等等,这些是保障我们所开发的程序与系统的优良质感非常为之重要的部分。
在项目的开发过程中,出现各种漏洞各种错误是极其正常的事情,有些错误可以凭借着开发工具发现,迅速找出并修改,而有些错误漏洞则是在一些细节上出现逻辑错误,导致引起一些列的错误,这类错觉有时藏得很深,会让我们在排除的过程中浪费大量的时间和精力。但随着时间的推移,经验的上涨,以后发现这类错误的时间一定会慢慢缩小。
系统测试的目的主要在于检查所实现的代码成品能否满足最初设定的目标以及系统需求,从测试的过程中发现与所需要的功能不同的错误,包括达不到预定需求甚至与预定需求完全矛盾的错误,并且在后续的开发上进行更改,甚至提出更加符合项目的新需求。
6.2测试步骤
测试的顺序就是先进行单元测试,这个测试没有问题之后,才是进行集成测试,紧接着就是进行程序的确认测试。接下来就对这几个在程序测试中占有一定分量的测试步骤进行阐述。
(1)单元测试
单元测试还有个只有极少数人知道的名字——模块测试。这个测试方法在程序编码过程中使用,每当程序员开发完成程序的一个功能模块之后,就要用到此测试方法,这个方法能够帮助开发人员及时发现并解决程序编码过程中产生的问题。能够帮助程序开发人员按照系统详细设计的说明书进行系统的功能开发操作。
(2)集成测试
集成测试又名组装测试,通常运用于程序的设计阶段的测试,如果程序是由各个模块组装而成的话,那么集成测试着重用来检测各个功能模块间的通信还有接口。
(3)确认测试
进入到这个测试环节,说明系统的功能大致上是不存在问题了,这个部分主要就是对系统功能进行再次确认,看看系统功能是不是符合需求规格说明书上面的内容,此外,也需要对程序的性能进行检测,还有系统具有的其他特点是不是都能满足用户的需求。如果系统是专门针对具体某个用户而开发的,那么系统的验收测试就是这个用户来进行,如果系统的使用者是许多用户的话,那么采用的就是Alpha测试和Beta测试来揭露错误。
(4)系统测试
已经通过确认测试的系统在这个时候就可以作为一个整体来进行测试了,这个部分考虑的因素就有测试的电脑的硬件因素,电脑上安装的软件因素,以及测试人员这个因素等。把这些因素结合在一起进行组装测试,还有确认测试等测试操作。
6.3测试方法
本测试主要是系统是否能够进行服务器进行处理信息的能力,不同的用户发出不同的服务请求,系统必须能够准确的进行数据的传达,在这种情况下进行测试响应的时间、内存使用的情况和CPU占用大小等指标,系统完成设计必须保证信息的正确性,信息紊乱带来的后果是非常可怕的,所有必须要进行压力测试,通过本测试进行系统相应速度、稳定性能和处理能力进行优化。
运用黑盒子测试的测试办法,把各个不同功能的软件模板进行区分、管理。对于不同的模块独立的分装起来,在传统测试的时候要进行数据的统一测试,完成对系统的概要设计详细解读资料、需要解决的问题,及操作的详细应用说明等内容来视作测试的突破口,对测试的对象进行逐一对照检查,并针对单个的程序检测延伸至这个研发过程中单个及整个集成单元的检测中,要有规律有顺序的进行,不但可以缩短我们的工作时效,避免返工的操作,也可以对可用性负责,提高了可操作性和软件研发的实用性。通过对系统概要设计验证测试,测试系统的统一管理方式,对系统的各个功能模块以及系统的性能进行测试,验证系统的功能以及系统的性能。
6.4测试结果
经测试本物流管理系统操作简单,界面清晰,运行稳定,能够充分满足物流管理需求。总体说来,软件通过测试。
7 结论
本次开发的物流管理系统已经接近尾声阶段了,在这次独立完成毕业设计的期间,我自己体会到了很多的东西,另外我很想说的就是独立开发软件真的很能让人在开发期间得到锻炼,不管是需求分析,还是系统的设计以及系统功能详细实现还有最后的测试工作,每一步都要小心翼翼的完成,一步一步来,不然任何环节出现了差错,返工起来也很麻烦,开发系统过程中,遇到了很多的难题,比如物流管理系统需要具有什么样的功能,这个我还是思考了很久,后来同学给我提示了一下,参考别人做好的系统,看看人家设计了什么功能,自己就多多参考下,后来这个问题就很好解决了,最难的就是系统编码了,我这个人本来就比较粗心,编码出现很多不该出现的错误,不该打空格也不小心键盘空格键多敲了两下,整得自己老是程序运行出错,找了好久都没有解决,后来无奈找到室友帮忙看看,慢慢检查终于找到问题了,编码过程真的很心塞。还好东拼西凑总算完成了功能要求了。系统整体界面虽然不是很好看,但起码不花哨,用户使用起来整体感觉就是简洁,功能体验虽然有点啰嗦,但是需要的功能都已经具备了。
自己的身份目前还是学生,开发程序肯定是不会考虑周全,程序完成开发后也经过了一系列测试,整体来说还是没有发现明显的操作逻辑错误,自己在毕设制作过程中不仅知识有所增加,独立学习的能力也有所提高了,更重要的就是遇到问题向周边同学寻求帮助,这个是很有必要的。总的来说毕业设计的圆满完成,我真的觉得很自豪。
参考文献
[1]王昊欣,姜学东.JAVA编程语言在计算机软件开发中的应用[J].电子测试,2017(13):73-74.
[2]李国一.计算机软件开发中Java语言的应用[J].信息与电脑(理论版),2017(14):49-50.
[3]邢如意.Java语言中对象的理解与应用[J].软件工程,2017,20(04):9-11.
[4]陈节鑫.基于计算机软件开发的JAVA编程语言及运用研究[J].福建电脑,2017,33(03):105+167.
[5]朴宏波.基于计算机软件开发的JAVA编程语言解析[J].科技创新导报,2016,13(30):66+68.
[6]朱华.Java软件开发问题探究[J].科技创新与应用,2016(33):93
[7]孙伟强,贾蕊.B/S架构可格式化应用系统研究[J].电大理工,2017(04):27-28.
[8]刘阳娜.大数据下的MySQL数据库的效率优化[J].信息通信,2017(12):111-112.
[9]王丽娟,靳继红.基于MySQL的查询优化技术研究[J].电脑知识与技术,2017,13(30):35-36.
[10]基于JSP技术的Web应用程序的开发[J]. 张波,张福炎. 计算机应用研究. 2016(05)
[11]孙婷,芦英明,陈中伟.软件系统性能测试方法及流程规划[J].自动化与仪器仪表,2018(01):166-169.
[12]JSP的网络数据库连接技术探讨[J]. 崔娜. 黑龙江科技信息. 2016(36)
[13]Implementing WebGL and HTML5 in Macromolecular Visualization and Modern Computer-Aided Drug Design[J] . Shuguang Yuan,H.C. Stephen Chan,Zhenquan Hu. Trends in Biotechnology . 2017 (6)
[14]Ahead-of-time compilation of JavaScript programs. R.Zhuykov,E.Sharygin. Programming and Computer Software . 2017
[15]JSP Special Issue on Information Processing in Living Systems. Thierry Mora,Luca Peliti,Olivier Rivoire. Journal of Statistical Research . 2016
[16] 郝佳编著.Spring源码深度解析[M].人民邮电出版社,2019:5-98.
[17] [美]Paul Deck著.林仪明译.Spring MVC学习指南[M].人民邮电出版社,2017:14-113.
[18] 李艳鹏[等]编著.互联网轻量级SSM框架解密[M].电子工业出版社,2019:19-98.
致 谢
经过好几个月的努力,终于完成了本物流管理系统的开发。在这过程中我把从导师以及图书馆中学到的相关的知识运用到系统的开发过程中。这是对我所学知识的一个完整性的检验。其中发现了诸多的不足和缺点。但是我相信在经过长时间的磨练我会不断的开发出更好的信息管理系统。在这次毕业设计中是对我平常在课堂的一次考核,也是将理论应用到实践的一项考察。
在即将毕业之际,我的心情实在难以平静,从最开始的学习专业知识到刚开始参加毕业课题讨论到最后论文的顺利完成,我身边的亲朋好友给了我极其多的帮助,这些帮助大多是雪中送炭,帮助我渡过了很多难关。因此,我要想对我伸出过援助之手的可爱的朋友、老师、家人们表示衷心的感谢。
我要感谢此次指导我最亲爱的的老师,是他的及时纠正毕设中出现的问题,及时的给我建议,使得我的设计如期的完成。指导老师在我本次物流管理系统的开发过程中,从程序的设计、代码的完善等方面以及论文的指导提供了很多很多宝贵的意见,并且为我推荐了许多相关JSP技术的详细资料,他的指导和建议使我受益匪浅,通过老师的耐心辅导和指点,我的论文顺利的完成,并保证了本论文的质量,我对他的辛勤指导表示崇高的敬意。我要非常郑重的向我的导师说一声:谢谢。也希望老师多多指正论文中出现的问题,并提出宝贵建议。
核心代码展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查询公告通知成功").put("data", newsView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}