在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 查询地图(城市交通查询系统,公交站)

C# 查询地图(城市交通查询系统,公交站)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.66M
  • 下载次数:65
  • 浏览次数:518
  • 发布时间:2019-10-29
  • 实例类别:C#语言基础
  • 发 布 人:dalian8802
  • 文件格式:.rar
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.OleDb;



namespace WindowsApplication1
{

    public partial class Form1 : Form
    {
        private Point lastPoint;
        int[,] mytab;
        int stationNum;
        public static int flags = 0;

        private ArrayList StationList;
        public Form1()
        {
            InitializeComponent();
            lastPoint = new Point();
            StationList = new ArrayList();
            LoadData();
        }
        

        public void way2()
        {
            string SQL;
            OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");

            SQL = "SELECT * FROM 站点 WHERE 站点名='"   textBox1.Text   "'";
            OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
            OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
            DataSet dataset;
            dataset = new DataSet();
            adapter.Fill(dataset, "站点");
            DataTable table;
            table = dataset.Tables["站点"];

            if (table.Rows.Count == 0)
            {
                jieguo.Text="站点不存在!!";
            }
            else
            {
                SQL = "SELECT * FROM 站点 WHERE 站点名='"   textBox2.Text   "'";
                OleDbDataAdapter adapter1 = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build1 = new OleDbCommandBuilder(adapter1);
                DataSet dataset1;
                dataset1 = new DataSet();
                adapter1.Fill(dataset1, "站点");
                DataTable table1;
                table1 = dataset1.Tables["站点"];

                if (table1.Rows.Count == 0)
                {
                    jieguo.Text = "站点不存在!!";
                }

                else
                {

                    SQL = "SELECT * FROM 路线 WHERE 始点='"   textBox1.Text   "' OR 终点='"   textBox1.Text   "'ORDER BY index";
                    OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL, conn);
                    OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter2);
                    DataSet dataset2;
                    dataset2 = new DataSet();
                    adapter2.Fill(dataset2, "路线");
                    DataTable table2;
                    table2 = dataset2.Tables["路线"];

                    SQL = "SELECT * FROM 路线 WHERE 始点='"   textBox2.Text   "' OR 终点='"   textBox2.Text   "'ORDER BY index";
                    OleDbDataAdapter adapter3 = new OleDbDataAdapter(SQL, conn);
                    OleDbCommandBuilder build3 = new OleDbCommandBuilder(adapter3);
                    DataSet dataset3;
                    dataset3 = new DataSet();
                    adapter3.Fill(dataset3, "路线");
                    DataTable table3;
                    table3 = dataset3.Tables["路线"];
                    // MessageBox.Show(table3.Rows.Count.ToString());
                    int i = 0, j = 0, flag = 0;
                    int[] che1 = new int[table2.Rows.Count];
                    int[] che2 = new int[table3.Rows.Count];
                    int p, tag = 0, count1 = 0, count2 = 0;
                    while (i < table2.Rows.Count)
                    {
                        tag = 0;
                        p = 0;
                        while (p < i)
                        {
                            if (che1[p] == int.Parse(table2.Rows[i]["车次"].ToString()))
                            {
                                tag = 1;
                                break;
                            }
                            p  ;
                        }
                        if (tag == 0)
                        {
                            che1[count1] = int.Parse(table2.Rows[i]["车次"].ToString());
                            //MessageBox.Show(che1[count1].ToString());
                            count1  ;

                        }

                        // MessageBox.Show(che1[i].ToString());
                        i  ;
                    }
                    //MessageBox.Show(" ");

                    while (j < table3.Rows.Count)
                    {

                        tag = 0;
                        p = 0;
                        while (p < j)
                        {
                            if (che2[p] == int.Parse(table3.Rows[j]["车次"].ToString()))
                            {
                                tag = 1;
                                break;
                            }
                            p  ;
                        }
                        if (tag == 0)
                        {
                            che2[count2] = int.Parse(table3.Rows[j]["车次"].ToString());
                            //MessageBox.Show(che2[count2].ToString());
                            count2  ;

                        }

                        // MessageBox.Show(che2[j].ToString());
                        j  ;
                    }
                    //MessageBox.Show(count1.ToString());
                    //MessageBox.Show(count2.ToString());
                   
                    for (int t = 0; t < count1; t  )

                        for (int h = 0; h < count2; h  )
                        {
                            if (che1[t] == che2[h])
                            {
                                string temp="";
                                temp = che1[t].ToString();
                                 flag = 1;
                                DrawHeightLightRoad();
                                jieguo.Text  = temp;
                                checi.Text = che1[t].ToString();
                                checiluxian();
                                jieguo.Text  = "\r\n";
                                jieguo.Text  = "你可以坐"   temp   "从"   textBox1.Text   "直达目的地"   textBox2.Text   "\r\n";
                                checi.Text = "";

                            }
                        }


                   if (flag == 0)
                      {
                        comm_dian(che1, che2, count1, count2);
                       }
                }



                }
            }
      
        public void comm_dian(int[] che1, int[] che2, int count1, int count2)
        {

            string[,] load1 = new string[count1, 10];
            string[,] load2 = new string[count2, 10];


            OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");
            for (int i = 0; i < count1; i  )
            {
                string SQL = "SELECT * FROM 路线 WHERE 车次='"   che1[i]   "'ORDER BY index";
                OleDbDataAdapter adapter1 = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build1 = new OleDbCommandBuilder(adapter1);
                DataSet dataset1;
                dataset1 = new DataSet();
                adapter1.Fill(dataset1, "路线");
                DataTable table1;
                table1 = dataset1.Tables["路线"];
                int k = 0;
                //MessageBox.Show(table1.Rows.Count.ToString());
                while (k < table1.Rows.Count)
                {
                    load1[i, k] = table1.Rows[k]["始点"].ToString();

                    //MessageBox.Show(che1[i].ToString());
                    // MessageBox.Show(load1[i,k]);
                    //j  ;
                    k  ;
                }
                load1[i, k] = "\0";


            }
            for (int i = 0; i < count2; i  )
            {
                string SQL = "SELECT * FROM 路线 WHERE 车次='"   che2[i]   "'ORDER BY index";
                OleDbDataAdapter adapter1 = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build1 = new OleDbCommandBuilder(adapter1);
                DataSet dataset1;
                dataset1 = new DataSet();
                adapter1.Fill(dataset1, "路线");
                DataTable table1;
                table1 = dataset1.Tables["路线"];
                int k = 0;
                while (k < table1.Rows.Count)
                {
                    load2[i, k] = table1.Rows[k]["始点"].ToString();
                    //MessageBox.Show(che2[i].ToString());
                    // MessageBox.Show(che2[i].ToString());
                    //MessageBox.Show(load2[i,k]);
                    k  ;

                }
                load2[i, k] = "\0";
            }

            int tag1, tag2, tag = 0; ;

            for (int i = 0; i < count1; i  )
            {
                int t = 0;
                // MessageBox.Show(load1[i, t]);
                // MessageBox.Show(count1.ToString());
                // MessageBox.Show(" ");

                while (load1[i, t] != "\0")
                {
                    for (int j = 0; j < count2; j  )
                    {
                        int p = 0;
                        while (load2[j, p] != "\0")
                        {

                            //MessageBox.Show(load2[j,p]);
                            if (load1[i, t] == load2[j, p])
                            {   
                                jieguo.Text="你可以乘坐"   che1[i]   "从" textBox1.Text "到达"   load1[i, t]   "乘坐 "   che2[j]   "到达目的地"   textBox2.Text "\r\n";
                                checi.Text=che1[i].ToString();
                                //MessageBox.Show(load1[i,t]);
                                checiluxian();
                                checi.Text = che2[j].ToString();
                                checiluxian();
                                checi.Text = "";
                                break;
                            }
                            p  ;
                        }

                    }
                    t  ;

                }
                // MessageBox.Show(" ");
            }
        }







        //   }

        private void LoadData()
        {
            //构造站点的邻接表
            try
            {
                string SQL;
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");

                SQL = "SELECT * FROM 站点";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "站点");
                DataTable table;
                table = dataset.Tables["站点"];
                if (table.Rows.Count == 0)
                {
                    jieguo.Text="站点不存在!!";
                }
                else
                {
                    stationNum = table.Rows.Count;

                    mytab = new int[stationNum, stationNum];

                    for (int i = 0; i < stationNum; i  )
                    {
                        for (int j = 0; j < stationNum; j  )
                        {
                            mytab[i, j] = 9999;
                            if (i == j)
                            {
                                mytab[i, j] = 0;              //mytab的作用是什么?
                            }
                        }

                    }



                    /*while (i < table.Rows.Count)
                    {
                        table.Rows[i]["路名"].ToString();

                        i  ;

                    }*/
                }



                SQL = "SELECT * FROM 路名";
                OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter);
                DataSet dataset2;
                dataset2 = new DataSet();
                adapter2.Fill(dataset2, "路名");
                DataTable table2;
                table2 = dataset2.Tables["路名"];


                for (int i = 0; i < table2.Rows.Count; i  )
                {
                    int temp1 = 0;
                    int temp2 = 0;
                    for (int j = 0; j < stationNum; j  )
                    {
                        if (table2.Rows[i]["路头"].ToString() == table.Rows[j]["站点名"].ToString())
                        {
                            temp1 = int.Parse(table.Rows[j]["站点编号"].ToString());
                        }

                        if (table2.Rows[i]["路尾"].ToString() == table.Rows[j]["站点名"].ToString())
                        {
                            temp2 = int.Parse(table.Rows[j]["站点编号"].ToString());
                        }

                    }

                    mytab[temp1, temp2] = int.Parse(table2.Rows[i]["长度"].ToString());  //mytab的作用存的是两站点的长度
                    mytab[temp2, temp1] = int.Parse(table2.Rows[i]["长度"].ToString());



                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            //int a;

        }

        private void DrawPicture()
        {
            try
            {
                string SQL, str = "", a, temp;
                int i = 0;
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");

                SQL = "SELECT * FROM 路名";
                OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter2);
                DataSet dataset2;
                dataset2 = new DataSet();
                adapter2.Fill(dataset2, "路名");
                DataTable table2;
                table2 = dataset2.Tables["路名"];
                if (table2.Rows.Count == 0)
                {
                    jieguo.Text="路名不存在!!";
                }
                else
                {

                    while (i < table2.Rows.Count)
                    {
                        table2.Rows[i]["路名"].ToString();


                        //DrawRoad(table2.Rows[i]["长度"].ToString(), int.Parse(table2.Rows[i]["路横坐标1"].ToString()), int.Parse(table2.Rows[i]["路纵坐标1"].ToString()),
                                      // int.Parse(table2.Rows[i]["路横坐标2"].ToString()), int.Parse(table2.Rows[i]["路纵坐标2"].ToString()), Color.White);

                        DrawRoad(table2.Rows[i]["长度"].ToString(), int.Parse(table2.Rows[i]["路横坐标1"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table2.Rows[i]["路纵坐标1"].ToString()) * trackBar1.Value / trackBar1.Maximum,
                                       int.Parse(table2.Rows[i]["路横坐标2"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table2.Rows[i]["路纵坐标2"].ToString()) * trackBar1.Value / trackBar1.Maximum, Color.White);


                        //DrawRoad("21", 50, 0, 100, 250);
                        i  ;       //路名存的是路线,它包括2个站点,所以有2个坐标



                    }


                }




                SQL = "SELECT * FROM 站点";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "站点");
                DataTable table;
                table = dataset.Tables["站点"];
                if (table.Rows.Count == 0)
                {
                    jieguo.Text="站点不存在!!";
                }
                else
                {
                    i = 0;
                    while (i < table.Rows.Count)
                    {

                        str = table.Rows[i]["站点名"].ToString();


                        DrawStation(str, int.Parse(table.Rows[i]["站点横坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table.Rows[i]["站点纵坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum);


                        i  ;



                    }
                }



            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void DrawHeightLightRoad()
        {
            //flags = 1;
            try
            {
                string SQL;
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");
                SQL = "SELECT * FROM 站点";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "站点");
                DataTable table;
                table = dataset.Tables["站点"];
                if (table.Rows.Count == 0)
                {
                    jieguo.Text="站点不存在!!";
                }
                else
                {
                    SQL = "select * from 路名";
                    OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL, conn);
                    OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter);
                    DataSet dataset2;
                    dataset2 = new DataSet();
                    adapter2.Fill(dataset2, "路名");
                    DataTable table2;
                    table2 = dataset2.Tables["路名"];
                    if (table2.Rows.Count == 0)
                    {
                       jieguo.Text="路名不存在!!";
                    }
                    else
                    {
                        for (int i = 0; i < StationList.Count - 1; i  )
                        {
                            for (int j = 0; j < table2.Rows.Count; j  )
                            {
                                if ((table2.Rows[j]["路头"].ToString() == table.Rows[int.Parse(StationList[i].ToString())]["站点名"].ToString() &&
                                    table2.Rows[j]["路尾"].ToString() == table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString()) ||
                                    (table2.Rows[j]["路头"].ToString() == table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString() &&
                                    table2.Rows[j]["路尾"].ToString() == table.Rows[int.Parse(StationList[i].ToString())]["站点名"].ToString()))
                                {
                                    DrawRoad("", int.Parse(table2.Rows[j]["路横坐标1"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table2.Rows[j]["路纵坐标1"].ToString()) * trackBar1.Value / trackBar1.Maximum,
                                            int.Parse(table2.Rows[j]["路横坐标2"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table2.Rows[j]["路纵坐标2"].ToString()) * trackBar1.Value / trackBar1.Maximum, Color.FromArgb(100, Color.LightPink));
                                    break;


                                }

                            }


                        }
                    }








                }



            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }



        }

        private void FineWay(int startnode, int endnode, ArrayList objpath)   //此方法的作用是什么?
        {
            int nodenum = stationNum;

            ArrayList[] path = new ArrayList[nodenum];
            for (int i = 0; i < nodenum; i  )
            {
                path[i] = new ArrayList();
            }


            int[] dist = new int[nodenum];



            //初始化dist,path
            for (int i = 0; i < nodenum; i  )
            {
                dist[i] = mytab[startnode, i];
                if (dist[i] < 9999)
                {
                    path[i].Add(i);
                }


            }

            ArrayList s = new ArrayList();


            //
            s.Add(startnode);

            for (int k = 0; k < nodenum - 1; k  )
            {
                int wm = 9999; int minIndex = 0;

                for (int i = 0; i < nodenum; i  )
                {

                    if (!s.Contains(i) && dist[i] < wm)
                    {
                        minIndex = i;
                        wm = dist[i];
                    }
                }

                s.Add(minIndex);

                for (int i = 0; i < nodenum; i  )
                {
                    if (!s.Contains(i) && dist[minIndex]   mytab[minIndex, i] < dist[i])
                    {
                        dist[i] = dist[minIndex]   mytab[minIndex, i];

                        path[i].RemoveRange(0, path[i].Count);

                        for (int j = 0; j < path[minIndex].Count; j  )
                        {
                            path[i].Add(path[minIndex][j]);
                        }

                        path[i].Add(i);

                    }

                }


            }

            objpath.RemoveRange(0, objpath.Count);
            objpath.Add(startnode);
            for (int j = 0; j < path[endnode].Count; j  )
            {
                objpath.Add(path[endnode][j]);
            }

            int ad;
        }

        private void AIProcess()
        {
            /*
                //基于最短路径的智能算法
           
                //对于i->j站 (i从1到N j从2到N)

                //1。查询数据库返回经过的车号
             * 
             * 如果链表存在此路线标志此路线2
             * 无则加入链表标志此路线为1
             * 
             * 2。 判断此时的链表,是否有标志为2的路线
             *  有则删除标志为2的路线
             * 无则输出 始站到当前站的路线 更改始站
             * 
               
           */

            ArrayList[] mylist = new ArrayList[StationList.Count - 1];

            for (int i = 0; i < StationList.Count - 1; i  )
            {
                mylist[i] = new ArrayList();
            }

            try
            {

                string SQL;
                SQL = "SELECT * FROM 站点";
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "站点");
                DataTable table;
                table = dataset.Tables["站点"];
                for (int i = 0; i < StationList.Count - 1; i  )
                {

                    if (table.Rows.Count == 0)
                    {
                        jieguo.Text="站点不存在!!";
                    }
                    else
                    {
                        SQL = "select * from 路线 where 始点='"   table.Rows[int.Parse(StationList[i].ToString())]["站点名"].ToString()   "' and 终点='"   table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString()   "'";
                        OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL, conn);
                        OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter);
                        DataSet dataset2;
                        dataset2 = new DataSet();
                        adapter2.Fill(dataset2, "路线");
                        DataTable table2;
                        table2 = dataset2.Tables["路线"];
                        if (table2.Rows.Count == 0)
                        {


                        }
                        else
                        {
                            int j = 0;
                            while (j < table2.Rows.Count)
                            {

                                mylist[i].Add(table2.Rows[j]["车次"].ToString());
                                j  ;
                            }

                        }
                    }



                }//for     

                string str;
                str = "从"   table.Rows[int.Parse(StationList[0].ToString())]["站点名"].ToString()   "到"   table.Rows[int.Parse(StationList[StationList.Count - 1].ToString())]["站点名"].ToString()   "\n";

                string startStation = table.Rows[int.Parse(StationList[0].ToString())]["站点名"].ToString();
                for (int i = 0; i < StationList.Count - 2; i  )
                {

                    bool got = false;


                    for (int j = 0; j < mylist[i   1].Count; j  )
                    {
                        if (mylist[i].Contains(mylist[i   1][j]))
                        {
                            got = true;
                            break;
                        }
                    }
                    if (got)
                    {
                        for (int j = 0; j < mylist[i   1].Count; j  )
                        {
                            if (!mylist[i].Contains(mylist[i   1][j]))
                            {
                                mylist[i   1].RemoveAt(j);
                                break;
                            }

                        }
                    }
                    else
                    {
                        if (mylist[i].Count != 0)
                        {

                            str  = "坐"   mylist[i][0].ToString()   "从"   startStation   "到"   table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString()   "\n再";
                        }
                        else
                        {
                            str  = "没有车次从"   startStation   "到"   table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString()   "\n";

                        }

                        startStation = table.Rows[int.Parse(StationList[i   1].ToString())]["站点名"].ToString();
                    }
                }


                if (mylist[StationList.Count - 2].Count != 0)
                {
                    str  = "坐"   mylist[StationList.Count - 2][0].ToString()   "从"   startStation   "到"   table.Rows[int.Parse(StationList[StationList.Count - 1].ToString())]["站点名"].ToString();
                }
                else
                {
                    str  = "没有车次"   "从"   startStation   "到"   table.Rows[int.Parse(StationList[StationList.Count - 1].ToString())]["站点名"].ToString();
                }


               jieguo.Text  =str;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int nodenum = 6;
            int[,] myInt = new int[nodenum, nodenum];
            jieguo.Text = "";
            for (int i = 0; i < nodenum; i  )
            {
                for (int j = 0; j < nodenum; j  )
                {
                    myInt[i, j] = 9999;
                    if (i == j) myInt[i, j] = 0;
                }
            }

            myInt[0, 2] = 10;
            myInt[0, 4] = 30;
            myInt[0, 5] = 100;
            myInt[1, 2] = 5;
            myInt[2, 3] = 50;
            myInt[3, 5] = 10;
            myInt[4, 3] = 20;
            myInt[4, 5] = 60;

            myInt[2, 0] = 10;
            myInt[4, 0] = 30;
            myInt[5, 0] = 100;
            myInt[2, 1] = 5;
            myInt[3, 2] = 50;
            myInt[5, 3] = 10;
            myInt[3, 4] = 20;
            myInt[5, 4] = 60;


            string[] path = new string[nodenum];



            string str = "";

            for (int i = 0; i < nodenum; i  )
            {
                for (int j = 0; j < nodenum; j  )
                {
                    str = str   myInt[i, j].ToString()   "     ";
                }

                str  = "\n";
            }




            int[] dist = new int[nodenum];
            int startnode = 2;


            //初始化dist,path
            for (int i = 0; i < nodenum; i  )
            {
                dist[i] = myInt[startnode, i];
                if (dist[i] < 9999)
                {
                    path[i] = startnode.ToString()   "->"   i.ToString();
                }
                else
                {
                    path[i] = "";
                }

            }

            ArrayList s = new ArrayList();


            //
            s.Add(startnode);

            for (int k = 0; k < nodenum - 1; k  )
            {
                int wm = 9999; int minIndex = 0;

                for (int i = 0; i < nodenum; i  )
                {

                    if (!s.Contains(i) && dist[i] < wm)
                    {
                        minIndex = i;
                        wm = dist[i];
                    }
                }

                s.Add(minIndex);

                for (int i = 0; i < nodenum; i  )
                {
                    if (!s.Contains(i) && dist[minIndex]   myInt[minIndex, i] < dist[i])
                    {
                        dist[i] = dist[minIndex]   myInt[minIndex, i];
                        path[i] = path[minIndex]   "->"   i.ToString();

                    }

                }


            }

            str = "";
            for (int i = 0; i < nodenum; i  )
            {
                str  = "path is "   path[i]   "  dist["   i.ToString()   "] is "   dist[i].ToString()   "\n";

            }
            jieguo.Text =str;



        }



        private void DrawStation(string str, int x, int y)
        {
            Graphics g = this.pictureBox1.CreateGraphics();
            SolidBrush brush = new SolidBrush(Color.Red);
            // g.Clear(this.pictureBox1.BackColor);
            g.DrawString(str, new Font("黑体", 12), Brushes.Black, x   10, y - 5);
            g.FillEllipse(brush, x - 5, y - 5, 10, 10);

        }

        private void DrawRoad(string str, int x1, int y1, int x2, int y2, Color color)
        {
            Graphics g = this.pictureBox1.CreateGraphics();
            g.DrawLine(new Pen(color,8), x1, y1, x2, y2);
            int i = 2;
            g.DrawString(str, new Font("黑体", 10), Brushes.Blue, (x1   x2) / i 1, (y1   y2) / i 1);


        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.pictureBox1.Left = this.Width / 2 - this.pictureBox1.Width / 2;
            this.pictureBox1.Top = this.Height / 2 - this.pictureBox1.Height / 2;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.pictureBox1.Left -= 50;

        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.pictureBox1.Left  = 50;

        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.pictureBox1.Top -= 50;

        }

        private void button6_Click(object sender, EventArgs e)
        {
            this.pictureBox1.Top  = 50;
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            this.pictureBox1.Width = this.pictureBox1.Image.Width * this.trackBar1.Value / 10;

            this.pictureBox1.Height = this.pictureBox1.Image.Height * this.trackBar1.Value / 10;


        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {

                /*    if (e.X - lastPoint.X > 20 || e.Y - lastPoint.Y > 20) { 
                    
                    }
                */

                this.pictureBox1.Left  = (e.X - lastPoint.X);
                this.pictureBox1.Top  = (e.Y - lastPoint.Y);
               /* DrawPicture();
                if (flags == 1)
                {
                    checiluxian();
                }
                if (flags == 2)
                {
                    zhandianchaxun();
                }
                if (flags == 3)
                {
                    zhanzhan();
                }*/
               


            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            flags = 3;
            jieguo.Text = "";
            DrawPicture();
            zhanzhan();
        }
        private void zhanzhan()
        {
            int startStation = -1;
            int endStation = -1;
            
            if (textBox1.Text.ToString() == "" || textBox2.Text.ToString() == "")
            {
                jieguo.Text = "您输入的城市不在查找范围内";
                return;
            }


            try
            {
                string SQL;
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");

                SQL = "SELECT * FROM 站点";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "站点");
                DataTable table;
                table = dataset.Tables["站点"];
                if (table.Rows.Count == 0)
                {
                   jieguo.Text="站点不存在!!";
                }
                else
                {
                    for (int i = 0; i < table.Rows.Count; i  )
                    {
                        if (table.Rows[i]["站点名"].ToString() == textBox1.Text.ToString())
                        {
                            startStation = int.Parse(table.Rows[i]["站点编号"].ToString());
                        }

                        if (table.Rows[i]["站点名"].ToString() == textBox2.Text.ToString())
                        {
                            endStation = int.Parse(table.Rows[i]["站点编号"].ToString());
                        }
                    }

                    if (startStation == -1)
                    {
                       jieguo.Text ="不存在"   textBox1.Text.ToString();
                        return;
                    }

                    if (endStation == -1)
                    {
                       jieguo.Text="不存在"   textBox2.Text.ToString();
                        return;
                    }
                }




            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            StationList = new ArrayList();
            FineWay(startStation, endStation, StationList);
            //      FineWay(1, 2, StationList);

            //DrawPicture();
            //DrawHeightLightRoad();
            way2();

            AIProcess();
            // int a;
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            lastPoint.X = e.X;
            lastPoint.Y = e.Y;
            DrawPicture();
            jieguo.Text = "";
           /* if (flags == 1)
            {
                
                checiluxian();

            }
            if (flags == 2)
            {
                
                zhandianchaxun();
            }
            if (flags == 3)
            {
                
                zhanzhan();

            }*/

        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void chaxun_Click(object sender, EventArgs e)
        {
            flags = 1;
            DrawHeightLightRoad();
            DrawPicture();
            jieguo.Text = "";
            checiluxian();
        }
        private void checiluxian()
        {
            try
            {
                string SQL, a, zhandian="";
                int i = 0, count1 = 0, count2 = 0,tag=1;
                int[] x = new int[10];
                int[] y = new int[10];
                string []temp=new string [10];
               // DrawHeightLightRoad();
                //DrawPicture();
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");
                SQL = "SELECT * FROM 路线 WHERE 车次='"   checi.Text   "'ORDER BY index";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "路线");
                DataTable table;
                table = dataset.Tables["路线"];
                //MessageBox.Show(table.Rows.Count.ToString());
                if (table.Rows.Count == 0)
                {
                    //DrawHeightLightRoad();
                    jieguo.Text = "  此车线不存在,请确认!!  ";
                }
                else
                {

                    while (i < table.Rows.Count)
                    {
                        int t = 0;
                        temp[i] = table.Rows[i]["始点"].ToString();
                        tag = 1;
                        while (t < i)
                        {
                            if (temp[t] == table.Rows[i]["始点"].ToString())
                            {
                                tag = 0;
                                break;
                            }
                            t  ;
                        }
                        if (tag == 1)
                        {
                            a = table.Rows[i]["始点"].ToString();
                            
                            zhandian  = " "   a;
                            string SQL1 = "SELECT * FROM 站点 WHERE 站点名='"   a   "'";
                            OleDbDataAdapter adapter1 = new OleDbDataAdapter(SQL1, conn);
                            OleDbCommandBuilder build1 = new OleDbCommandBuilder(adapter1);
                            DataSet dataset1;
                            dataset1 = new DataSet();
                            adapter1.Fill(dataset1, "站点");
                            DataTable table1;
                            table1 = dataset1.Tables["站点"];
                            DrawStation(table1.Rows[0]["站点名"].ToString(), int.Parse(table1.Rows[0]["站点横坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table1.Rows[0]["站点纵坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum);
                            //if (count > 0)
                            //{
                            // DrawRoad("",x,y,
                            //int.Parse(table1.Rows[0]["站点横坐标"].ToString()), int.Parse(table1.Rows[0]["站点纵坐标"].ToString()), Color.Red);

                            // }
                            x[count1  ] = int.Parse(table1.Rows[0]["站点横坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum;
                            y[count2  ] = int.Parse(table1.Rows[0]["站点纵坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum;
                           
                        }
                        i  ;
                    }
                    //i = table.Rows.Count;
                   // a = table.Rows[i - 1]["终点"].ToString();
                    //zhandian  = a " ";
                    //MessageBox.Show(a);
                    //string SQL2 = "SELECT * FROM 站点 WHERE 站点名='"   a   "'";
                    //OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL2, conn);
                   // OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter2);
                   // DataSet dataset2;
                   // dataset2 = new DataSet();
                    //adapter2.Fill(dataset2, "站点");
                  //  DataTable table2;
                   // table2 = dataset2.Tables["站点"];
                   // DrawStation(table2.Rows[0]["站点名"].ToString(), int.Parse(table2.Rows[0]["站点横坐标"].ToString()), int.Parse(table2.Rows[0]["站点纵坐标"].ToString()));
                   // x[count1  ] = int.Parse(table2.Rows[0]["站点横坐标"].ToString())*trackBar1.Value / trackBar1.Maximum;
                   // y[count2  ] = int.Parse(table2.Rows[0]["站点纵坐标"].ToString())*trackBar1.Value / trackBar1.Maximum;
                   
                    for (int j = 0; j < count1 - 1; j  )
                    {
                       
                        //DrawHeightLightRoad();
                        Graphics g = this.pictureBox1.CreateGraphics();
                        //Graphics g = e.Graphics;
                        g.DrawLine(new Pen(Color.FromArgb(100, Color.LightPink),8), x[j], y[j], x[j   1], y[j   1]);
                        // g.DrawLine(new Pen(Color.Green, 3), x[j], y[j], x[j   1], y[j   1]);
                        //g.Dispose();
                         g.DrawString(checi.Text, new Font("粗体", 10), Brushes.Red, (x[j]   x[j   1]) /2-4, (y[j]   y[j   1]) /2 4);



                    }


                    jieguo.Text  = "\n\r"   "经过的站点有:   " zhandian;


                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


        private void button8_Click(object sender, EventArgs e)
        {
            flags = 2;
            jieguo.Text = "";
            DrawPicture();
            zhandianchaxun();
        }
        private void zhandianchaxun()
        {
            try
            {
                string SQL, chec = "", str = "", a, temp = "";
                // string []chec=new string [5];
                
                //DrawPicture();
                int i = 0, j = 0, k = 0, flag = 1, count1 = 0, count2 = 0, p = 2;
                int[] x = new int[10];
                int[] y = new int[10];
                OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data source=..\..\..\jiaotong.mdb");
                SQL = "SELECT * FROM 路线 WHERE 始点='"   zhanming.Text   "' OR 终点='"   zhanming.Text   "'ORDER BY index";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, conn);
                OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);
                DataSet dataset;
                dataset = new DataSet();
                adapter.Fill(dataset, "路线");
                DataTable table;
                table = dataset.Tables["路线"];

                if (table.Rows.Count == 0)
                {
                   jieguo.Text="此城市不在查询范围内!!";
                }
                
                while (i < table.Rows.Count)
                {
                    flag = 1;
                    j = 0;
                    k = 0;
                    chec = table.Rows[i]["车次"].ToString();
                    
                    while (k < i)
                    {
                        if (chec == table.Rows[k]["车次"].ToString())     //防止以前出现过的车次,有可能重复的站点出现。
                        {
                            flag = 0;
                            break;
                        }
                        k  ;

                    }
                    if (flag == 1)
                    {
                        str  = chec;
                        string SQL1 = "SELECT * FROM 路线 WHERE 车次='"   chec   "'ORDER BY index";
                        OleDbDataAdapter adapter1 = new OleDbDataAdapter(SQL1, conn);
                        OleDbCommandBuilder build1 = new OleDbCommandBuilder(adapter1);
                        DataSet dataset1;
                        dataset1 = new DataSet();
                        adapter1.Fill(dataset1, "路线");
                        DataTable table1;
                        table1 = dataset1.Tables["路线"];
                        string []temp1=new string [10];
                        while (j < table1.Rows.Count)
                        {
                           
                            int t = 0;
                            temp1[j] = table1.Rows[j]["始点"].ToString();
                            int tag = 1;
                            while (t < j)
                            {
                                if (temp1[t] == table1.Rows[j]["始点"].ToString())
                                {
                                    tag = 0;
                                    break;
                                }
                                t  ;
                            }
                            if (tag == 1)
                            {
                                a = table1.Rows[j]["始点"].ToString();
                                string SQL2 = "SELECT * FROM 站点 WHERE 站点名='"   a   "'";
                                OleDbDataAdapter adapter2 = new OleDbDataAdapter(SQL2, conn);
                                OleDbCommandBuilder build2 = new OleDbCommandBuilder(adapter2);
                                DataSet dataset2;
                                dataset2 = new DataSet();
                                adapter2.Fill(dataset2, "站点");
                                DataTable table2;
                                table2 = dataset2.Tables["站点"];
                                DrawStation(table2.Rows[0]["站点名"].ToString(), int.Parse(table2.Rows[0]["站点横坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum, int.Parse(table2.Rows[0]["站点纵坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum);
                                temp  = table2.Rows[0]["站点名"].ToString()   " ";

                                x[count1  ] = int.Parse(table2.Rows[0]["站点横坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum;
                                y[count2  ] = int.Parse(table2.Rows[0]["站点纵坐标"].ToString()) * trackBar1.Value / trackBar1.Maximum;
                            }
                            j  ;
                        }

                        jieguo.Text  ="\r\n"  chec   temp;
                        temp = "";
                        for (int t = 0; t < count1 - 1; t  )
                        {
                            //DrawHeightLightRoad();
                            Graphics g = this.pictureBox1.CreateGraphics();
                            g.DrawLine(new Pen(Color.FromArgb(100, Color.LightPink),8), x[t], y[t], x[t   1], y[t   1]);
                            // g.DrawLine(new Pen(Color.Green, 3), x[j], y[j], x[j   1], y[j   1]);
                            //g.Dispose();
                            g.DrawString(chec, new Font("粗体", 15), Brushes.Red, (x[t]   x[t   1]) /2 p, (y[t]   y[t   1]) /2 p);
                            //MessageBox.Show(" ");
                        }
                       

                    }
                    //jieguo.Text="车次: " chec " 经过的站点有: " temp;
                    //temp = "";
                    i  ;
                    p =3;
                    count1 = 0;
                    count2 = 0;

                }


               

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void trackBar1_MouseUp(object sender, MouseEventArgs e)
        {
            DrawPicture();
            jieguo.Text = "";
            if (flags == 1)
            {
                
                checiluxian();

            }
            if (flags == 2)
            {
                
                zhandianchaxun();
                
            }
            if (flags == 3)
            {
                
                zhanzhan();

            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            DrawPicture();
            jieguo.Text = "";
            if (flags == 1)
            {
                
                checiluxian();

            }
            if (flags == 2)
            {
                
                zhandianchaxun();
            }
            if (flags == 3)
            {
               
                zhanzhan();

            }

        }





    }
}


      


    



标签:

实例下载地址

C# 查询地图(城市交通查询系统,公交站)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警