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

news2025/1/10 12:16:05

一、源码特点
  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 方式获得主键id
        int 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 方式获得主键id
         jigou 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 方式获得主键id
        jigou 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的最短路径就是dmin
            shortPath[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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1520399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息

文章目录 接上文MeshRenderer&#xff08;网格渲染器&#xff09;Materials&#xff08;材质&#xff09;Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes&#xff08;探针&#xff09;Ray Tracing&#xff08;光线追踪&#xff09;Additi…

家具工厂5G智能制造数字孪生可视化平台,推进家具行业数字化转型

家具制造5G智能制造工厂数字孪生可视化平台&#xff0c;推进家具行业数字化转型。随着科技的飞速发展&#xff0c;家具制造业正迎来一场前所未有的数字化转型。在这场家具制造业转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。 5G智能制造工厂数字孪…

基于Java+SpringMVC+vue+element宠物管理系统设计实现

基于JavaSpringMVCvueelement宠物管理系统设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源…

橡胶工厂5G智能制造数字孪生可视化平台,推进橡胶工业数字化转型

橡胶5G智能制造工厂数字孪生可视化平台&#xff0c;推进橡胶工业数字化转型。随着信息技术的迅猛发展和智能制造的不断推进&#xff0c;数字化转型已成为制造业转型升级的重要方向。橡胶工业作为传统制造业的重要领域&#xff0c;正面临着产业升级和转型的迫切需求。橡胶5G智能…

【SpringBoot】头条新闻项目实现CRUD登录注册

文章目录 一、头条案例介绍二、技术栈介绍三、前端搭建四、基于SpringBoot搭建项目基础架构4.1 数据库脚本执行4.2 搭建SprintBoot工程4.2.1 导入依赖:4.2.2 编写配置4.2.3 工具类准备 4.3 MybatisX逆向工程 五、后台功能开发5.1 用户模块开发5.1.1 jwt 和 token 介绍5.1.2 jwt…

通付盾Web3专题 | SharkTeam:2023年加密货币犯罪分析报告

2023年&#xff0c;Web3行业共经历了940多起大大小小的安全事件&#xff0c;同比2022年增长了超过50%&#xff0c;损失金额达到17.9亿美元。其中&#xff0c;第三季度发生的安全事件最多&#xff08;360起&#xff09;&#xff0c;损失最大&#xff08;7.4亿美元&#xff09;&a…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十五)-UL-TDOA 定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

【ARM】DS中Coretex-M处理器的常用寄存器介绍

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 了解ArmDS中Coretex-M处理器的常用寄存器的名称及作用。 2、 问题场景 在对Coretex-M处理器进行开发时&#xff0c;了解常用寄存器的名称及作用&#xff0c;可以&#xff1a; 编写正确的程序: 寄存器是程序员用…

【JavaEE -- 多线程3 - 多线程案例】

多线程案例 1.单例模式1.1 饿汉模式的实现方法1.2 懒汉模式的实现方法 2. 阻塞队列2.1 引入生产消费者模型的意义&#xff1a;2.2 阻塞队列put方法和take方法2.3 实现阻塞队列--重点 3.定时器3.1 定时器的使用3.2 实现定时器 4 线程池4.1 线程池的使用4.2 实现一个简单的线程池…

突破编程_前端_ACE编辑器(概述)

1 ACE 框架简介 ACE 框架是一个强大且灵活的前端文本编辑器框架&#xff0c;它提供了一套全面的 API 和丰富的功能&#xff0c;使得开发者能够轻松地在 Web 应用中集成功能强大的代码编辑器。ACE 编辑器不仅适用于在线代码编辑&#xff0c;还广泛应用于文档编辑、实时协作、富…

C语言- strcat(拼接函数的使用和模拟)

strcat&#xff08;拼接函数的使用和模拟&#xff09; strcat的语法 strcat 是 C 语言标准库中的一个字符串拼接函数&#xff0c;它用于将一个字符串&#xff08;source&#xff09;拼接到另一个字符串&#xff08;destination&#xff09;的末尾。该函数定义在 <string.h…

机器学习介绍

监督学习 监督学习涉及使用某种算法来分析过去的观察并从中学习&#xff0c;从而使您能够预测未来的事件。 监督学习的目标是提出或推断出一种近似映射函数&#xff0c;该函数可以应用于一个或多个输入变量&#xff0c;并产生输出变量或结果。 训练过程涉及采用非特征和标签的…

3.14号arm

1. 计算机基础理论 1.1 计算机的组成 输入设备&#xff1a;将数据转换成计算机可以识别&#xff0c;存储&#xff0c;处理的形式&#xff0c;发送到计算机中 输出设备&#xff1a;将计算机对程序和数据的运算结果输送到外部的设备 存储器&#xff1a;用于将数据保存的模块。 …

代码随想录刷题day24|回溯理论基础组合问题

文章目录 day24学习内容一、修剪二叉搜索树1.1、什么是回溯法1.2、递归与回溯1.3、回溯法的效率1.4、回溯法解决的问题类型1.5、如何理解回溯法1.6、回溯算法模板 二、组合问题2.1、思路2.2、正确写法-没有剪枝2.2.1、为什么不能写i < n2.2.2、为什么不能写startIndex02.2.3…

phpcms头像上传漏洞引发的故事

目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事&#xff0c;因为要学习文件包含漏洞&#xff0c;就将大佬…

什么是 HTTPS?它是如何解决安全性问题的?

什么是 HTTPS&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种安全的通信协议&#xff0c;用于在计算机网络上安全地传输超文本&#xff08;如网页、图像、视频等&#xff09;和其他数据。它是 HTTP 协议的安全版本&#xff0c;通过使用加…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Grid)

网格容器&#xff0c;由“行”和“列”分割的单元格所组成&#xff0c;通过指定“项目”所在的单元格做出各种各样的布局。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 仅支持GridItem…

定时执行专家:自动截屏功能在电脑监控中的卓越应用

一、软件简介 定时执行专家&#xff0c;作为一款专业级的定时任务执行软件&#xff0c;不仅功能强大&#xff0c;而且操作简便。它支持25种任务类型&#xff0c;其中自动截屏功能尤为出色。通过这一功能&#xff0c;用户可以设定定时自动截取电脑屏幕&#xff0c;从而实现对电…

Java微服务轻松部署服务器

我们在日常开发微服务之后需要再服务器上面部署&#xff0c;那么如何进行部署呢&#xff0c;先把微服务的各个服务和中间件以及对应的端口列举出来&#xff0c;都打包成镜像&#xff0c;以及前端代码部署的nginx&#xff0c;使用docker-compose启动&#xff0c;访问服务器nginx…

系统重构后,对项目定制开发的兼容性问题

公司自实施产品线战略以来&#xff0c;基本推翻了全部旧有业务模块。后续以标准产品二次开发的模式进行项目开发。但在涉及到一些旧有系统二期、三期升级改造过程中。不可避免的需要解决旧有系统的客户定制化开发兼容性问题。也就是旧有系统定制开发的模块不能丢弃。重新开发从…