公交查询系统

目录

  • 需求分析

1 概述

2 课题分析

3 实现功能步骤

4 项目背景

  • 概要设计

1 系统流程图.

2 功能模块.

3 各功能模块

4 数据存储

5 类设计

三、详细设计

1公交线路查询系统用户界面

2公交信息存储模快

 3公交信息查询模块

4用户信息输入和输出模块

四、调试分析

五、使用说明

六、测试结果

七、参考文献

八、附录

一  需求分析

(1)概述

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

(2)课题分析

公交线路查询系统,面向的是用户,即为用户提供方便的公交线路查询信息。他所要求提供的功能如下:

(1)公交线路查询:

用户输入公交车次号码,启动查询,可获得该路车属性(包括该路公交车:服务

类型:有\无人售票;车型:普通\空调车;收发车时间。其中,服务类型和车型缺省为有人售票和普通车)及沿线站点信息。

 

(2)站点查询:

用户输入站点(以任意方式) ,启动查询,可获得经过该站所有公交车次及其属性。

(3)乘车方案查询:

用户输入起点、终点(以任意方式) ,系统经过查询返回所有相关站点,用户分别确认后, 查询启动。 用户可获得所有可达线路的路线信息 (所有直达\转乘的方案) 。

由于,本次课设时间有限,仅做公交线路查询系统中的,乘车方案查询。

(3)实现功能步骤

该系统的前台用java设计,要求有较为完善的用户界面,能为用户提供优质的公交线路查询功能,具体要求的输入信息如下:

1.乘车起点

2.目的终点

该系统的后台用数据库设计,即为要求在数据库内实现公交信息的存储(车次信息,线路信息等),并且要实现公交线路的查询,可以用数据库中的存储过程来实现该功能。

所以该系统的实现功能步骤如下:

1.数据库设计,公交信息的存储,建立表。

2.存储过程的设计,用来实现公交线路的查询。

3.界面前台的设计,用来接收用户信息和传递信息给SQL;

(4) 项目背景

在信息爆炸和计算机快速发展的时代,简单的看地图查公交的方式应该一去而不复返,如今,用户只需输入起始站点和目的站点,便可在很少的时间查出所需的线路信息,大大的方便的人们的出行生活。

 

二.概要设计

(1)系统流程图

      

   

  1. 功能模块图

(3)各个模块的功能

  1. 公交信息存储模块

在这个模块中主要实现的功能是一个建立一个工程,将用户输入的公交信息放入到数据库中。

  1. 公交信息查询模块

在这个模块中主要实现的功能是一个查询信息的函数,通过输入所查询的车次信息来查询数据库中的信息。

  1. 用户信息输入和输出模块

          在这个模块中主要是实现用户界面和信息的输入输出

  1. 数据存储

然,如果在简单的使用表bus_route(线,路线经过的站点,用)保存公交线线路信息,使用查询语实现车线查询,因此,应该对线路的信息理后再保存到中,使用的方法是用站点-路线关系表stop_route(站点,路线,站点在路线中的位置)公交线

  1. 类设计

InsertRecord   //插入信息类

ModifyRecord   //更改信息类

SearchRecord   //查询信息类

Show1Record    //用户界面类

三.详细设计

(1)公交线路查询系统用户界面

核心代码:

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

(2)公交信息存储模快

如果有以下3条路线

R1: S1->S2->S3->S4->S5

R2: S6->S7->S2->S8

R3: S8->S9->S10

则对应的站点-路线关系表stop_route为

Stop

Route

Position

S1

R1

1

S2

R1

2

S3

R1

3

S4

R1

4

S5

R1

5

S6

R2

1

S7

R2

2

S2

R2

3

S8

R2

4

S8

R3

1

S9

R3

2

S10

R3

3

注:Stop为站点名,Route为路线名,Position为站点在路线中的位置

(3)公交信息查询模块

(1)直达路线视图

直达路线视图可以理解为一张存储了所有直达路线的表(如果两个站点之间存在直达路线,那么在直达路线视图中就有一行与之相对应)。例如R1,R2,R3对应的RouteT0如下:

起点

终点

乘坐路线

站点数

S3

S4

R1

1

S3

S5

R1

2

S4

S5

R1

1

S1

S2

R1

1

S1

S3

R1

2

S1

S4

R1

3

S1

S5

R1

4

S2

S3

R1

1

S2

S4

R1

2

S2

S5

R1

3

S2

S8

R2

1

S6

S2

R2

2

S6

S7

R2

1

S6

S8

R2

3

S7

S2

R2

1

S7

S8

R2

2

S8

S10

R3

2

S8

S9

R3

1

S9

S10

R3

1

RouteT0定义如下:

create view RouteT0

as

    select

        sr1.Stop as StartStop,    --启始站点

        sr2.Stop as EndStop,    --目的站点

        sr1.Route as Route,    --乘坐线路

        sr2.Position-sr1.Position as StopCount    --经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

(2)换乘路线算法

显然,一条换乘路线由若干段直达路线组成,因此,基于直达路线视图RouteT0可以很方便实现换乘查询,以下是实现一次换乘查询的存储过程InquiryT1:

create proc InquiryT1(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点,

        r2.Route as 乘坐路线2,

        r2.EndStop as 目的站点,

        r1.StopCount+r2.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=@EndStop

end

同理可以得到二次换乘的查询语句

create proc InquiryT2(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点1,

        r2.Route as 乘坐路线2,

        r2.EndStop as 中转站点2,

        r3.Route as 乘坐路线3,

        r3.EndStop as 目的站点,

        r1.StopCount+r2.StopCount+r3.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2,

        RouteT0 r3

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=r3.StartStop

        and r3.EndStop=@EndStop

end

(4)用户信息输入和输出模块

   

四.调试分析

(1)调试过程中所遇到的问题及解决方法

1)无法设计出信息存储结构,不过通过参阅资料有所心得

(2)经验与体会

通过这两周的课程设计,让我明白软件设计的分层结构,即是从需求设计,到概要设计,再到详细设计,而面层设计里有必须分层,即是把问题的简化。

五.用户使用说明

(1)打开用户界面

(2)输入查询信息

六.测试结果

exec InquiryT0 'S1','S2'

exec InquiryT1 'S1','S8'

exec InquiryT2 'S1','S9'

七.参考文献

《Java》大学实用教程学习指导

作者:张跃平 耿祥义

出版社:电子工业出版社

八.附录

数据库设计代码:

1.

create proc InquiryT0(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        sr1.Stop as 启始站点,

        sr2.Stop as 目的站点,

        sr1.Route as 乘坐线路,

        sr2.Position-sr1.Position as 经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

        and sr1.Stop=@StartStop

        and sr2.Stop=@EndStop

end

2. create view RouteT0

as

    select

        sr1.Stop as StartStop,    --启始站点

        sr2.Stop as EndStop,    --目的站点

        sr1.Route as Route,    --乘坐线路

        sr2.Position-sr1.Position as StopCount    --经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

3. create proc InquiryT1(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点,

        r2.Route as 乘坐路线2,

        r2.EndStop as 目的站点,

        r1.StopCount+r2.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=@EndStop

end

4. create proc InquiryT2(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点1,

        r2.Route as 乘坐路线2,

        r2.EndStop as 中转站点2,

        r3.Route as 乘坐路线3,

        r3.EndStop as 目的站点,

        r1.StopCount+r2.StopCount+r3.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2,

        RouteT0 r3

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=r3.StartStop

        and r3.EndStop=@EndStop

end

java

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()== enter){

String a,b;

a=inputNumber.getText();

b=inputNumber1.getText();

try{

con=DriverManager.getConnection("jdbc:odbc:hello1","","");

            sql=con.createStatement();

            rs=sql.executeQuery("");

}

catch{

}

}

}

}mport javax.swing.*;    

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class Example12_9{

    public static void main(String args[ ]){

        try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  

        }

        catch(ClassNotFoundException e){

               System.out.println(""+e);

        }

        DatabaseWin win=new DatabaseWin();  

    }

}

class DatabaseWin extends JFrame implements ActionListener{

   JButton itemUpdate,itemInsert,itemShow1,itemSearch;

       Show1Record show1Record;

       ModifyRecord modifyRecord;

       InsertRecord insertRecord;

       SearchRecord searchRecord;

       DatabaseWin(){

           itemUpdate=new JButton("修改公交信息");

           itemInsert=new JButton("插入公交信息");

           itemShow1=new JButton("显示公交信息");

           itemSearch=new JButton("查询公交信息");

           itemUpdate.addActionListener(this);

           itemInsert.addActionListener(this);

           itemShow1.addActionListener(this);

           itemSearch.addActionListener(this);

    FlowLayout flow=new FlowLayout();

    flow.setAlignment(FlowLayout.LEFT);

    flow.setHgap(20);

    flow.setVgap(20);

    setLayout(flow);                    

           add(itemShow1);

           add(itemUpdate);

           add(itemInsert);

           add(itemSearch);

           modifyRecord=new ModifyRecord("修改公交信息");

           insertRecord=new InsertRecord("插入公交信息");

           show1Record=new Show1Record("显示公交信息");

           searchRecord=new SearchRecord("查询公交线路");

           

           setBounds(100,100,300,200);

           setVisible(true);

           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       }

       public void actionPerformed(ActionEvent e){

package book;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.border.*;

public class InsertRecord extends JDialog implements ActionListener{ //负责插入记录的类

     JLabel hintLabel;

     Object name[]={"车次","始发站","途经站1","途经站2","途经站3","途经站4","途经站5","终点站","始发时间","收车时间"};

     Object a[][]=new Object[1][10];

     JTable table;

     JButton enterInsert;

     Connection con;

     Statement sql;

     ResultSet rs;

     String num;

     InsertRecord(String s){

        setTitle(s);

        hintLabel=new JLabel("输入新记录:");

        table=new JTable(a,name);

        enterInsert=new JButton("插入新记录");

        setLayout(null);

        Box baseBox=Box.createHorizontalBox();

        Box baseBox1=Box.createHorizontalBox();

        baseBox.add(hintLabel);

        baseBox1.add(new JScrollPane(table));

        baseBox1.add(enterInsert);

        add(baseBox);

        add(baseBox1);

        baseBox.setBounds(10,40,700,38);

        baseBox1.setBounds(10,80,700,38);

        enterInsert.addActionListener(this);

        setBounds(120,160,800,200);

    }

    public void actionPerformed(ActionEvent e){

       try{  con=DriverManager.getConnection("jdbc:odbc:hello1","","");

             sql=con.createStatement();

             int k=sql.executeUpdate

             ("INSERT INTO 公交信息 VALUES('"+

              a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"'," +

               "'"+a[0][5]+"','"+a[0][6]+"','"+a[0][7]+"','"+a[0][8]+"','"+a[0][9]+"')");

             if(k==1)

                JOptionPane.showMessageDialog

                (this,"插入信息成功","成功",JOptionPane.PLAIN_MESSAGE);     

             con.close();

       }  

       catch(SQLException ee){

             JOptionPane.showMessageDialog

             (this,"插入信息失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);

       }    

    }      

}

package book;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.border.*;

public class ModifyRecord extends JDialog implements ActionListener{ //负责更新记录的类

     JLabel hintLabel;

     JTextField inputNumber;

     Object name[]={"车次","始发站","途经站1","途经站2","途经站3","途经站4","途经站5","终点站","始发时间","收车时间"};

     Object a[][]=new Object[1][10];

     JTable table;

     JButton enterModify;

     Connection con;

     Statement sql;

     ResultSet rs;

     String num;

     ModifyRecord(String s){

        setTitle(s);

        hintLabel=new JLabel("输入编号(回车确认):");

        inputNumber=new JTextField(20);

        table=new JTable(a,name);

        enterModify=new JButton("更新信息");

        setLayout(null);

        Box baseBox=Box.createHorizontalBox();

        Box baseBox1=Box.createHorizontalBox();

        baseBox.add(hintLabel);

        baseBox.add(inputNumber);

        baseBox1.add(new JScrollPane(table));

        baseBox1.add(enterModify);

        add(baseBox);

        add(baseBox1);

        baseBox.setBounds(50,40,200,38);

        baseBox1.setBounds(50,80,900,38);

        inputNumber.addActionListener(this);

        enterModify.addActionListener(this);

        setBounds(20,60,1000,200);

    }

    public void actionPerformed(ActionEvent e){

       if(e.getSource()==inputNumber)

       try{ num=inputNumber.getText().trim();

            con=DriverManager.getConnection("jdbc:odbc:hello1","","");

            sql=con.createStatement();

            rs=sql.executeQuery("SELECT * FROM 公交信息  WHERE 车次='"+num+"'");

            //else

            //rs=sql.executeQuery("SELECT * FROM 客队球员信息  WHERE 编号='"+num+"'");

            boolean boo=rs.next();

            if(boo==false){

                   JOptionPane.showMessageDialog

                   (this,"公交不存在","提示",JOptionPane.WARNING_MESSAGE);

            }

            else{

                   a[0][0]=rs.getString(1);

                   a[0][1]=rs.getString(2);                    

                   a[0][2]=rs.getString(3);

                   a[0][3]=rs.getString(4);

                   a[0][4]=rs.getString(5);

                   a[0][5]=rs.getString(6);

                   a[0][6]=rs.getString(7);

                   a[0][7]=rs.getString(8);

                   a[0][8]=rs.getString(9);

                   a[0][9]=rs.getString(10);

                   table.repaint();

            }

           con.close();

       }  

       catch(SQLException ee){

           System.out.println(ee);

       }

      if(e.getSource()==enterModify){

           try{ con=DriverManager.getConnection("jdbc:odbc:hello1","","");

                sql=con.createStatement();

                sql.executeUpdate

                ("UPDATE 公交信息 SET 始发站='"+a[0][0]+

                  "',途经站1='"+a[0][1]+"',途经站2='"+a[0][2]+"',途经站3='"+a[0][3]+"',途经站4='"+a[0][4]+"',途经站5='"+a[0][5]+"',终点站='"+a[0][6]+

                  "',始发时间='"+a[0][7]+"',收车时间='"+a[0][8]+"'WHERE 车次='"+num+"'");

                 JOptionPane.showMessageDialog

                   (this,"更新成功","成功",JOptionPane.PLAIN_MESSAGE);     

                 con.close();

           }  

           catch(SQLException ee){

                 JOptionPane.showMessageDialog

                (this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);

           }    

      }

    }      

}

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

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

相关文章

STM32外部复位IC与看门狗冲突,无法复位问题解决方案

使用STM32H743制作了一款飞控&#xff0c;外部复位IC采用MAX809STR,打板完后&#xff0c;烧录飞控固件后大量板子无法正常启动&#xff0c;怀疑是晶振没有起振或MCU未焊接好&#xff0c;检查后均焊接正常&#xff0c;编写裸机LED定时闪烁验证程序可正常运行。经网上查询资料锁定…

Python 环境搭建,集成开发环境IDE: PyCharm

Python 环境搭建,集成开发环境IDE: PyCharm 一、Python 环境搭建二、Python下载三、Python安装四、环境变量配置五、Python 环境变量六、运行Python1、交互式解释器&#xff1a;2、命令行脚本3、集成开发环境&#xff08;IDE&#xff1a;Integrated Development Environment&am…

Hadoop-Hive

1. hive安装部署 2. hive基础 3. hive高级查询 4. Hive函数及性能优化 1.hive安装部署 解压tar -xvf ./apache-hive-3.1.2-bin.tar.gz -C /opt/soft/ 改名mv apache-hive-3.1.2-bin/ hive312 配置环境变量&#xff1a;vim /etc/profile #hive export HIVE_HOME/opt/soft/hive…

软件测试的基本流程是什么?软件测试流程详细介绍

软件测试和软件开发一样&#xff0c;是一个比较复杂的工作过程&#xff0c;如果无章法可循&#xff0c;随意进行测试势必会造成测试工作的混乱。为了使测试工作标准化、规范化&#xff0c;并且快速、高效、高质量地完成测试工作&#xff0c;需要制订完整且具体的测试流程。 01…

JavaScript的DOM操作(二)

一、元素的特性attribute 1.元素的属性和特性 前面我们已经学习了如何获取节点&#xff0c;以及节点通常所包含的属性&#xff0c;接下来我们来仔细研究元素Element。 我们知道&#xff0c;一个元素除了有开始标签、结束标签、内容之外&#xff0c;还有很多的属性&#xff0…

【算法与数据结构】450、LeetCode删除二叉搜索树中的节点

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题首先要分析删除节点的五种情况&#xff1a; 1、没有找到节点2、找到节点 左右子树为空左子树为空…

微信小程序项目开发Day1

没接触过&#xff0c;直接看视频学习&#xff1a; 千锋教育微信小程序开发制作前端教程&#xff0c;零基础轻松入门玩转微信小程序_哔哩哔哩_bilibili千锋教育微信小程序开发制作前端教程&#xff0c;零基础轻松入门玩转微信小程序共计56条视频&#xff0c;包括&#xff1a;学…

软件工程课件

软件工程 考点概述软件工程概述能力成度模型能力成熟度模型集成软件过程模型逆向工程软件需求需求获取数据流图 需求定义 考点概述 重点章节 软件工程概述 之前老版教程的&#xff0c;之前考过 能力成度模型 记忆 能力等级 和 特点 能力成熟度模型集成 相比于CMM&#xff0c;第…

结合el-input、el-select实现纯前端过滤树形el-table数据

样式图示 1.搜索实现方法 const searchBtn async () > {// 获取table列表数据接口const res await Api.menuList({paging: false})if (res.code 200) {// 把树形结构转成扁平结构let result treeToArray(res.data)// 处理搜索框中数据进行table显示项过滤if(commonData…

分享!JetBrains IDE中的GitLab支持

GitLab是流行的基于git的软件开发和部署平台之一&#xff0c;虽然很长一段时间以来&#xff0c;所有基本git操作都已经可以通过GitLab实现&#xff0c;但GitLab集成仍是JetBrains社区的一大最热门请求。为此&#xff0c;JetBrains团队今年与GitLab联手提供了这种类型的集成。 …

2023年华为杯研究生数学建模竞赛辅导

2023年华为杯研究生数学建模竞赛辅导 各研究生培养单位&#xff1a; 中国研究生数学建模竞赛作为教育部学位管理与研究生教育司指导&#xff0c;中国学位与研究生教育学会、中国科协青少年科技中心主办的“中国研究生创新实践系列大赛”主题赛事之一&#xff0c;是一项面向在校…

使用阿里PAI DSW部署Stable Diffusion WebUI

进入到网址https://pai.console.aliyun.com/里边。 点击创建实例。 把实例名称填写好&#xff0c;选择GPU规格&#xff0c;然后选择实例名称是ecs.gn6v-c8g1.2xlarge。 选择stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04&#xff0c;然后点击下一步。…

如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)

在当今的互联网时代&#xff0c;SEO优化成为了网站推广的关键。而软文推广作为一种有效的推广方式&#xff0c;其优点不仅仅局限于SEO&#xff0c;还可以带来更多的曝光和用户流量。本文将深入探讨如何做好软文推广&#xff0c;从而提升网站排名和流量。 了解目标受众群体 内容…

springboot集成excel导入导出

1、引入依赖 <dependency><groupId>com.pig4cloud.excel</groupId><artifactId>excel-spring-boot-starter</artifactId><version>1.2.7</version> </dependency> 2、导出 ResponseExcel(name "测试列表") Post…

ORB-SLAM2_RGBD_DENSE_MAP编译、问题解决、离线加载TUM数据和在线加载D435i相机数据生成稠密地图

文章目录 0 引言1 安装依赖1.1 其他库安装1.2 pcl库安装 2 编译ORB-SLAM2_RGBD_DENSE_MAP2.1 build.sh2.2 build_ros.sh 3 运行ORB-SLAM2_RGBD_DENSE_MAP3.1 build.sh编译版本3.2 build_ros.sh编译版本 0 引言 ORB-SLAM2_RGBD_DENSE_MAP是基于ORB-SLAM2框架的一种RGB-D稠密地图…

【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

全文下载链接&#xff1a;http://tecdat.cn/?p23544 在本文中&#xff0c;长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络&#xff0c;能够学习长期依赖关系&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 本文使用降雨量数据&#xf…

基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到matlab显示图像效果 2.算法运行软件版本 MATLAB2022a,vivado2019.2 3.部分核心程序 .................................…

EMANE中olsrd的调试

1 调试目的 本着学习的态度&#xff0c;对emane tutorial中的示例程序进行重现&#xff0c;以加深对EMANE的理解和掌握。在示例程序0(见https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)中介绍了使用olsrlinkview.py脚本来通过可视化界面观察olsr节点的链…

基于Python的UG二次开发入门

文章目录 基于Python的UG二次开发入门1 二次开发环境搭建1.1 安装UG1.2 安装Pycharm1.3 环境配置1.4 测试 2 NX Open介绍2.1 基础架构2.1.1 Sessions and Parts2.1.2 Objects and Tags2.1.3 Factory Objects&#xff08;工厂对象&#xff09;2.1.4 Builder Objects&#xff08;…

9.14号作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 有些功能&#xff0c;不会 #include <iostream>using namespace std; //创建vector类 class Vector { private:int *data;int size;int capacity; public://无参构造Vector(){}//拷贝构造Vector(c…