实例介绍
【实例截图】
【核心代码】
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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论