实例介绍
【实例截图】
【核心代码】
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(); } } } }
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论