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

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分