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

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤