ideaSSM物流运输管理系统短路径算法开发mysql数据库web结构Dijstra编程计算机网页源码maven项目

本文主要是介绍ideaSSM物流运输管理系统短路径算法开发mysql数据库web结构Dijstra编程计算机网页源码maven项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、源码特点
  idea ssm 物流运输管理系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
前段主要技术 js css jquery
后端主要技术 SpringMVC spring mybatis 
数据库 mysql
开发工具 IDEA  JDK1.8 TOMCAT 8.5
最短路径算法  Dijstra算法

idea ssm物流运输管理系统1


二、功能介绍
1.登录功能
用户巨头不同角色(业务员、业务经理和超级管理员)。

2.权限控制
要求用户以不同角色登录时,能够使用的功能不同。

3.系统功能
(1)用户管理(超级管理员)
对系统的用户进行管理(增删改查)。用户注册时,用户数据表自动更新。

(2)权限管理(超级管理员)
对系统角色对应的权限进行管理(增删改查)。

(3)订单管理(业务员、业务经理、超级管理员)
对所有订单信息进行管理(增删改查)。其中,业务员仅能查看到个人负责的订单。

(4)业务管理(业务员、超级管理员)
a.添加、修改订单信息,自动计算物流费用。(自动更新订单表和客户信息表)
b.更新物流订单状态:揽件、入库、运输中、派送完成。
c.根据最短距离的订单运输建议,利用最短路径算法(Dijstra算法)进行路径规划。

(5)客户管理(业务经理、超级管理员)
对订单客户信息进行管理(增删改查)。

(6)报表管理(业务经理、超级管理员)
a.统计导出报表数据:统计订单数目、营业额、月度数据变化等报表数据
b.显示报表数据:利用图形、表格等形式展现报表数据

数据库设计

(1)权限信息表如表3.1所示:

表3.1 权限信息表

序号

字段名称

数据类型

长度

主键

描述

1

qxid

INTEGER

11

权限编号

2

qx

VARCHAR

40

权限

(2)机构信息表如表3.2所示:

表3.2 机构信息表

序号

字段名称

数据类型

长度

主键

描述

1

jgid

INTEGER

11

机构编号

2

jgmc

VARCHAR

40

机构名称

3

lx

VARCHAR

40

类型

(3)机构距离信息表如表3.3所示:

表3.3 机构距离信息表

序号

字段名称

数据类型

长度

主键

描述

1

jgjlid

INTEGER

11

机构距离编号

2

qsjg

VARCHAR

40

起始机构

3

mdjg

VARCHAR

40

目的机构

4

jl

VARCHAR

40

距离

5

yssj

VARCHAR

40

运输时间

(4)用户信息表如表3.4所示:

表3.4 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

jg

VARCHAR

40

机构

6

lxdh

VARCHAR

40

联系电话

7

lxdz

VARCHAR

40

联系地址

8

qx

VARCHAR

40

权限

(5)重量价格信息表如表3.5所示:

表3.5 重量价格信息表

序号

字段名称

数据类型

长度

主键

描述

1

zljgid

INTEGER

11

重量价格编号

2

zl

VARCHAR

40

重量

3

jg

VARCHAR

40

价格

(6)客户信息表如表3.6所示:

表3.6 客户信息表

序号

字段名称

数据类型

长度

主键

描述

1

khid

INTEGER

11

客户编号

2

khmc

VARCHAR

40

客户名称

3

lxdh

VARCHAR

40

联系电话

4

lxdz

VARCHAR

40

联系地址

(7)运单信息表如表3.7所示:

表3.7 运单信息表

序号

字段名称

数据类型

长度

主键

描述

1

ydid

INTEGER

11

运单编号

2

dh

VARCHAR

40

单号

3

kh

VARCHAR

40

客户

4

fjrxx

VARCHAR

40

发件人信息

5

sjrxx

VARCHAR

40

收件人信息

6

qsjg

VARCHAR

40

起始机构

7

mdjg

VARCHAR

40

目的机构

8

zl

VARCHAR

40

重量

9

gs

VARCHAR

40

关税

10

zjg

VARCHAR

40

总价格

11

fzr

VARCHAR

40

负责人

12

zt

VARCHAR

40

状态

代码设计

  public String addpage(jigou bean, HttpServletRequest request){/**机构添加页面*/Map<String,Object> map= new HashMap<String,Object>();System.out.println("addPageok");return "jigou/jigouadd";}@RequestMapping(value="/add")public String add(jigou bean, HttpServletRequest request){/**机构添加处理方法**/Map<String,Object> map= new HashMap<String,Object>();//初始变量String jgid=(String)request.getParameter("jgid");//机构编号String jgmc=(String)request.getParameter("jgmc");//机构名称String lx=(String)request.getParameter("lx");//类型jigoudao.add(bean);//调用添加方法System.out.println("add");request.setAttribute("msg", "<script>alert('添加成功');</script>");//操作提示return "jigou/jigouadd";}/**删除 机构**/@RequestMapping(value="/del")public String  del(HttpServletRequest request,Map<String,Object> map){//	Map<String,Object> map= new HashMap<String,Object>();//初始化对象String a=(String)request.getParameter("keyid");//request 方式获得主键idint id=Integer.parseInt(a);request.setAttribute("msg", "<script>alert('删除成功');</script>");jigoudao.delete(id);//调用 删除方法return listpage(map,request);}/*** 查询jigou信息 返回list结果 前台获取*/@RequestMapping(value="/listpage")public String listpage(Map<String,Object> map,HttpServletRequest request){List<Map> list= new ArrayList<Map>();//初始化对象Map  map1= new HashMap();String jgid=(String)request.getParameter("jgid");//机构编号if(jgid!=null&&!jgid.equals("")){map1.put("jgid",jgid);//机构编号}String jgmc=(String)request.getParameter("jgmc");//机构名称if(jgmc!=null&&!jgmc.equals("")){map1.put("jgmc",jgmc);//机构名称}String lx=(String)request.getParameter("lx");//类型if(lx!=null&&!lx.equals("")){map1.put("lx",lx);//类型}list=jigoudao.getAll(map1);//传入 方法参数 返回gly结果集System.out.println("listsize="+list.size());map.put("list", list);//传递参数return "jigou/jigoulist";}/**机构详情信息*/@RequestMapping(value="/detail")public String detail(Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");//request 方式获得主键idjigou bean=new jigou();//初始化对象bean=jigoudao.getjigouByID(Integer.parseInt(keyid));//根据id返回 jigou对象数据request.setAttribute("jgid", bean.getJgid());//机构编号request.setAttribute("jgmc", bean.getJgmc());//机构名称request.setAttribute("lx", bean.getLx());//类型return "jigou/jigoudetail";}/**进入jigou修改页面**/@RequestMapping(value="/modifypage")public String modifypage(Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");//request 方式获得主键idjigou bean=new jigou();//初始化对象bean=jigoudao.getjigouByID(Integer.parseInt(keyid));//根据id返回 jigou对象数据request.setAttribute("jgid", bean.getJgid());//机构编号request.setAttribute("jgmc", bean.getJgmc());//机构名称request.setAttribute("lx", bean.getLx());//类型return "jigou/jigoumodify";}

核心算法设计

  public static String getJL (String qsd,String mdd){String temp="";sz sz=new sz();String[] a=sz.get1sz();int data[][]=sz.getjl();int start=sz.getint(a,qsd);int end=sz.getint(a,mdd);System.out.println("start="+start);System.out.println("end="+end);temp=dijkstra(data, start,end);// sj=shortPath1[end];// System.out.println("sj="+shortPath1[end]);System.out.println("temp="+temp);temp=changword(temp);System.out.println("temp=new="+changword(temp));return temp;}public static int[] dijkstra(int[][] weight, int start) {// 接受一个有向图的权重矩阵,和一个起点编号start(从0编号,顶点存在数组中)// 返回一个int[] 数组,表示从start到它的最短路径长度int n = weight.length; // 顶点个数int[] shortPath = new int[n]; // 保存start到其他各点的最短路径String[] path = new String[n]; // 保存start到其他各点最短路径的字符串表示for (int i = 0; i < n; i++)path[i] = new String("["+start+"]" + "-->[" + i+"]");int[] visited = new int[n]; // 标记当前该顶点的最短路径是否已经求出,1表示已求出// 初始化,第一个顶点已经求出shortPath[start] = 0;visited[start] = 1;for (int count = 1; count < n; count++) { // 要加入n-1个顶点int k = -1; // 选出一个距离初始顶点start最近的未标记顶点int dmin = Integer.MAX_VALUE;for (int i = 0; i < n; i++) {if (visited[i] == 0 && weight[start][i] < dmin) {dmin = weight[start][i];k = i;}}// 将新选出的顶点标记为已求出最短路径,且到start的最短路径就是dminshortPath[k] = dmin;visited[k] = 1;// 以k为中间点,修正从start到未访问各点的距离for (int i = 0; i < n; i++) {//如果 '起始点到当前点距离' + '当前点到某点距离' < '起始点到某点距离', 则更新if (visited[i] == 0 && weight[start][k] + weight[k][i] < weight[start][i]) {weight[start][i] = weight[start][k] + weight[k][i];path[i] = path[k] + "-->[" + i+"]";}}}for (int i = 0; i < n; i++) {System.out.println("||从" + start + "出发到" + i + "的最短路径为:" + path[i]+"");}System.out.println("=====================================");return shortPath;}


三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件src\main\resources  下的 application.properties
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是jspssmwuliu.sql 系统名称jspssmwuliu
4、地址:login.jsp 

四 系统实现


代码下载

https://download.csdn.net/download/qq_41221322/88955548

源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

这篇关于ideaSSM物流运输管理系统短路径算法开发mysql数据库web结构Dijstra编程计算机网页源码maven项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811840

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I