当前位置: 首页 > news >正文

公交查询系统

目录

  • 需求分析

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);

           }    

      }

    }      

}

相关文章:

公交查询系统

目录 需求分析 1 概述 2 课题分析 3 实现功能步骤 4 项目背景 概要设计 1 系统流程图. 2 功能模块. 3 各功能模块 4 数据存储 5 类设计 三、详细设计 1公交线路查询系统用户界面 2公交信息存储模快 3公交信息查询模块 4用户信息输入和输出模块 四、调试分析 五、使用说明 六、…...

opencv 轮廓顶点重新排序----四边形

def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints myPoints.reshape((4,2))# 计算myPoints数组中每一行&#xff08;即每个点&#xff09;的坐标和add …...

【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)

写在前面 本文是一篇关于 USB2.0 HUB 集线器的制作教程&#xff0c;包括详细的步骤以及电路图解释。 本文记录了笔者制作 USB2.0 HUB 集线器的心路历程&#xff0c;希望对你有帮助。 本文以笔记形式呈现&#xff0c;通过搜集互联网多方资料写成&#xff0c;非盈利性质&#xf…...

分布式运用之rsync远程同步

一、rsync的相关知识 1.1 rsync简介 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&am…...

誉天在线项目~ElementPlus实现浏览页面注意点

浏览按钮 点击浏览按钮&#xff0c;传递列表数据索引值。 根据索引值从列表数据数组中获取当前行数据。 <el-button click"toView(scope.$index)" type"success" size"small"><el-icon><EditPen /></el-icon> 浏览<…...

神经网络-pytorch版本

pytorch神经网络基础 torch简介 torch和numpy import torch import numpy as np np_datanp.arange(6).reshape((2,3)) torch_datatorch.from_numpy(np_data) tensor2arraytorch_data.numpy() print(np_data,"\n",torch_data,"\n",tensor2array)torch的数…...

uniapp vue 页面传参问题encodeURIComponent

页面传参objet json序列化后可能会报错 Uncaught SyntaxError: missing ) after argument list 但不一定是数据有问题&#xff0c;而是json成字符串后&#xff0c;字符串中有特殊字符&#xff0c;所以导致parse的时候格式不对。所以解决方案如下 如果传递参数为对象的时候&…...

【GDAL】tif影像拼接和目标截取

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、gdal.Warp拼接tif二、截取1.通过经纬范围截取拼接的影像2.通过shp范围截取凭借后影像 三、WarpOptions其他参数四、其他方式裁剪1.通过sh…...

ARM核心时间线

指令集架构处理器家族(ARM RISC)ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARM Cortex-MARMv7ARM Cortex-A、ARM Cortex-M、ARM Cortex-RARMv8-A armv8.2Cortex-A35、Cortex-A50系列[18]、Cor…...

【Redis】深入探索 Redis 的数据类型 —— 列表 List

文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表&#xff08;ziplist&#xff09;3.2 链表&#xff08;lin…...

高精度乘除法(超详细)

高精度乘除法&#xff08;超详细&#xff09; 题目1-高精度乘法 给定两个非负整数&#xff08;不含前导 0&#xff09; A 和 B&#xff0c;请你计算 AB 的值。 输入格式 共两行&#xff0c;第一行包含整数 A&#xff0c;第二行包含整数 B。 输出格式 共一行&#xff0c;包含…...

List 获取前N条数据

1.使用for循环遍历 public static void main(String[] args) {int limit 5;List<Integer> oldList Lists.newArrayList(1, 2, 3, 4, 5, 6, 7);List<Integer> newList Lists.newArrayList();if (oldList.size() < limit) {newList.addAll(oldList);return;}fo…...

Spring入门控制反转(或依赖注入)AOP的关键概念 多配置文件与web集成

目录 1. 什么是spring&#xff0c;它能够做什么? 2. 什么是控制反转(或依赖注入) 3. AOP的关键概念 4. 示例 4.1 创建工程 4.2 pom文件 4.3 spring配置文件 4.4 示例代码 4.4.1 示例1 4.4.2 示例2 &#xff08;abstract&#xff0c;parent示例&#xff09; 4.4.3 使…...

排序算法-希尔排序

属性 1. 希尔排序是对直接插入排序的优化。 2. 当gap > 1时都是预排序&#xff0c;目的是让数组更接近于有序。当gap 1时&#xff0c;数组已经接近有序的了&#xff0c;这样就会很 快。这样整体而言&#xff0c;可以达到优化的效果。我们实现后可以进行性能测试的对比。 3.…...

ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(一)

在打开数据表文件&#xff0c;对ClientDataSet执行Append或Insert时&#xff0c;“ClientDataSet&#xff1a;dataset not in edit or insert mode”&#xff1a; 一、搜索问题 1、执行“显示数据后”&#xff0c;再执行Append&#xff0c;出错&#xff0c;说明ClientDataSet处…...

华为GaussDB数据库

Gauss数据库初识_高斯数据库_ygpGoogle的博客-CSDN博客 Redhat 7.6安装GaussDB_100_1.0.1详细攻略_gaussdb_100_1.0.1-database-redhat-64bit.tar.gz dow_博德1999的博客-CSDN博客 https://www.ngui.cc/el/3381579.html?actiononClick 初识GaussDB——GaussDB的发展历程、部…...

Flink、Spark、Hive集成Hudi

环境描述: hudi版本:0.13.1 flink版本:flink-1.15.2 spark版本:3.3.2 Hive版本:3.1.3 Hadoop版本:3.3.4 一.Flink集成Hive 1.拷贝hadoop包到Flink lib目录 hadoop-client-api-3.3.4.jar hadoop-client-runtime-3.3.4.jar 2.下载上传flink-hive的jar包 flink-co…...

百度编辑器 Ueditor 视频上传时 目录创建失败 解决办法

找到百度编辑器的上传类 Uploader.class.php文件.大约111左右 //$this->stateInfo $this->getStateInfo("ERROR_CREATE_DIR");//这句注释掉 $this->stateInfo $dirname;//换成这一句然后,进编辑器上传.会提示出一个错误的文件保存路径 双击复制下来这个路…...

Go 字符串处理

一、 字符串处理函数 我们从文件中将数据读取出来以后&#xff0c;很多情况下并不是直接将数据打印出来&#xff0c;而是要做相应的处理。例如&#xff1a;去掉空格等一些特殊的符号&#xff0c;对一些内容进行替换等。 这里就涉及到对一些字符串的处理。在对字符串进行处理时…...

家政服务接单小程序开发源码 家政保洁上门服务小程序源码 开源完整版

分享一个家政服务接单小程序开发源码&#xff0c;家政保洁上门服务小程序源码&#xff0c;一整套完整源码开源&#xff0c;可二开&#xff0c;含完整的前端后端和详细的安装部署教程&#xff0c;让你轻松搭建家政类的小程序。家政服务接单小程序开发源码为家政服务行业带来了诸…...

SuperMap iClient3D 11i (2023) SP1 for Cesium之移动实体对象

作者&#xff1a;nannan 目录 前言 一、代码思路 1.1 绘制面实体对象 1.2 鼠标左键按下事件 1.3 鼠标移动事件 1.4 鼠标左键抬起事件 二、运行效果 三、注意事项 前言 SuperMap 官网三维前端范例 编辑线面&#xff0c;可以对面实体对象的节点进行增加、删除以及修改位置…...

【深度学习 AIGC】stablediffusion-infinity 在无界限画布中输出绘画 Outpainting

代码&#xff1a;https://github.com/lkwq007/stablediffusion-infinity/tree/master 启动环境&#xff1a; git clone --recurse-submodules https://github.com/lkwq007/stablediffusion-infinity cd stablediffusion-infinity conda env create -f environment.yml conda …...

Flutter插件之阿里百川

上一篇&#xff1a;Flutter插件的制作和发布&#xff0c;我们已经了解了如何制作一个通用的双端插件&#xff0c;本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用&#xff01; 目录 登录并打开控制台&#xff0c;创建应用&#xff1a;填写应用相关信息开通百川…...

✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】

搜索与图论 1. DFS1. 排列数字(3分钟)2. n-皇后问题 2. BFS&#xff08;队列&#xff09;1. 走迷宫二刷总结&#xff08;队列存储一个节点pair<int,int>&#xff09;三刷总结 走过的点标记上距离(既可以记录距离&#xff0c;也可以判断是否走过) ★ ★ 例题2. 八数码二刷…...

初试占比70%,计算机招生近200人,安徽理工大学考情分析

安徽理工大学 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文980字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 安徽理工大…...

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/decode-xored-array/ 解题思路&#xff1a; 异或有如下性质&#xff1a; a ^ a 0a ^ 0 aa ^ b b ^ a 根据题意&#xff0c;已知encoded[i - 1] arr[i - 1] ^ arr[i]&#xff0c;可以做如下转换&#xff1a; encoded[i…...

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…...

Apollo源码安装的问题及解决方法

问题一 在进行git clone时&#xff0c;会报错Failed to connect to github.com port 443: Timed out&#xff0c;经过实践后推荐以下两种方法。 方法一&#xff1a;在原地址前加https://ghproxy.com 原地址&#xff1a;git clone https://github.com/ApolloAuto/apollo.git …...

Flutter 挖孔屏的状态栏占用问题怎么解决,横屏后去掉了状态栏,还是会有一块黑色的竖条

使用下方代码后依旧有一条黑色的区域 overridevoid initState() {// TODO: implement initStatesuper.initState();///关闭状态栏&#xff0c;与底部虚拟操作按钮SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);//隐藏状态栏&#xff0c;底部按钮栏S…...

Layui快速入门之第九节 表格事件的使用

目录 一&#xff1a;事件 二&#xff1a;头部工具栏事件 三&#xff1a;排序切换事件 四&#xff1a;列拖拽宽度后的事件 五&#xff1a;列筛选&#xff08;显示或隐藏&#xff09;后的事件 六&#xff1a;行单击和双击事件 七&#xff1a;行右键菜单事件 八&#xff1a;…...

跨境独立站哪个平台好/2021年网络营销考试题及答案

7-27 冒泡法排序 (20 分) 将N个整数按从小到大排序的冒泡排序法是这样工作的&#xff1a;从头到尾比较相邻两个元素&#xff0c;如果前面的元素大于其紧随的后面元素&#xff0c;则交换它们。通过一遍扫描&#xff0c;则最后一个元素必定是最大的元素。然后用同样的方法对前N−…...

网站做友链/网站如何优化

在我们搭建完 Harbor 后: https://www.cnblogs.com/klvchen/p/9482153.html 如果想要通过 API 获取 Harbor 上面的镜像及 tag 可以使用下面整理的脚本&#xff1a; cat get_images.sh #!/bin/bashUSER"admin" PASS"Harbor12345" HURL"http://192.168…...

phpcms律师网站源码大气律师事务所模板/百度seo是什么

点击pom.xml右键选择make as maven project 就可以了...

优设计网站/站长之家网站模板

给定一个所有节点为非负值的二叉搜索树&#xff0c;求树中任意两节点的差的绝对值的最小值。 示例 : 输入: 1 \ 3 / 2 输出:1 解释:最小绝对差为1&#xff0c;其中 2 和 1 的差的绝对值为 1&#xff08;或者 2 和 3&#xff09;。 来源&#xff1a;力扣&#xff08;LeetCode&am…...

wordpress英文版下载地址/六盘水seo

正确卸载CleanMyMac 想要卸载CleanMyMac比较好的方法就是通过它本身卸载。它的卸载功能可以帮助我们解决很多软件难卸载问题。 点击界面中的“卸载器”选项&#xff0c;勾选选框&#xff0c;点击“卸载”即可&#xff0c;操作非常简单且能准确清除应用程序所有的安装文件。 若…...

专业网站建设设计公司/合肥网络推广优化公司

使用google的gson进行object和json的转换&#xff0c;如下: public static String object2json(Object obj) {Gson gson new Gson();return gson.toJson(obj);} 这样转出来的字符串特殊字符&#xff0c;比如url中的会变成unicode编码。 需要禁用html转义。 如下: public stati…...