公交线路查询(WinForm)
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://65341726.blog.51cto.com/180639/67275 |
1. common.cs
using System;
using System.Collections.Generic; using System.Text; namespace Friday_A
{ class common { } /// <summary>
/// 保存数据信息 /// </summary> class BusInfo { public string strLineName; //车次名称 public string strLineMemo; //车次备注 public string strLines; //行车路线 } /// <summary> /// 保存要输出的信息 /// </summary> class nonstopLine { public string strLineName; public string strlineCount; //行车站数 public string strLines; } class BusLineName { /// <summary> /// 计算站点在数组中的索引 /// </summary> /// <param name="lines">数组</param> /// <param name="value">站点</param> /// <returns></returns> public static int IndexOfArray(string[] lines, string value) { for (int i = 0; i < lines.Length;i++ ) { if (lines[i] == value) { return i; } } return -1; } } } -----------------------------------------------------------------------------------------
2. GetData.cs
using System;
using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Collections; namespace Friday_A
{ class GetData { public static ArrayList GetLines() { OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=busline.mdb"; string sql = "select * from 公交信息表"; OleDbCommand comm = new OleDbCommand(sql,conn); conn.Open(); OleDbDataReader oddr = comm.ExecuteReader(); ArrayList al = new ArrayList(); //存储公交信息 while(oddr.Read()) { BusInfo bi = new BusInfo(); bi.strLineName = oddr["车次"].ToString(); bi.strLineMemo = oddr["车次备注"].ToString(); bi.strLines = oddr["行车路线"].ToString(); al.Add(bi); } conn.Close(); return al; } } } -----------------------------------------------------------------------------------------------
3. Form1.cs
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.Threading; //引用线程命名空间 namespace Friday_A
{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } ArrayList busLine = new ArrayList(); //存放车次信息 bool loadComplete = false; //标志线程加载是否结束 private void Form1_Load(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(GetLoadData));//定义一个线程,用来加载数据 t.Start();//打开线程 } private void button1_Click(object sender, EventArgs e) { string strStart = textBox1.Text; string strEnd = textBox2.Text; if(strStart.Trim().Length==0)
{ MessageBox.Show("哥们儿,从哪上车啊?","乘务员说:",MessageBoxButtons.OK,MessageBoxIcon.Information); textBox1.Text = ""; textBox1.Focus(); return; } if (strEnd.Trim().Length == 0) { MessageBox.Show("哥们儿,从哪下车啊?", "乘务员说:", MessageBoxButtons.OK, MessageBoxIcon.Information); textBox2.Text = ""; textBox2.Focus(); return; } if (!loadComplete) { MessageBox.Show("各位乘客,前方车多人多,车辆行驶缓慢,请谅解!","乘务员说:",MessageBoxButtons.OKCancel,MessageBoxIcon.Information); return; } ArrayList al = NonstopLines(strStart, strEnd);
if(al.Count>0) { richTextBox1.Text = "从 " + strStart + " 开往 " + strEnd + "的车辆\n\n"; myCompare mc = new myCompare(); //排序器实例化
al.Sort(mc);//使用排序器 for(int i=0;i<al.Count;i++)
{ nonstopLine nl = (nonstopLine)al[i]; richTextBox1.Text=richTextBox1.Text+"车次:"+nl.strLineName+"\n"; richTextBox1.Text=richTextBox1.Text+"站数:"+nl.strlineCount+"\n"; richTextBox1.Text=richTextBox1.Text+"线路:"+nl.strLines+"\n\n"; } } }
class myCompare:IComparer //定义一个排序器 { #region IComparer 成员 public int Compare(object x, object y)
{ nonstopLine n1 = (nonstopLine)x; nonstopLine n2 = (nonstopLine)y; int a = Convert.ToInt16(n1.strlineCount); int b = Convert.ToInt16(n2.strlineCount); if (a > b) { return 1;//a>b 返回1:正序排列;返回-1倒序排列 } else if(a<b) { return -1; } else { return 0; } } #endregion } private void GetLoadData() { busLine = GetData.GetLines();//加载数据 loadComplete = true; //加载结束,标志为true } private ArrayList NonstopLines(string strStart, string strEnd) { ArrayList al = new ArrayList(); for (int i = 0; i < busLine.Count;i++ ) //循环查找每辆直达车 { BusInfo c = (BusInfo)busLine[i]; //将数组重新定义 string[] arrLines = c.strLines.Split("-".ToCharArray());//将行车路线拆分,放进数组 int iUpLine = BusLineName.IndexOfArray(arrLines,strStart); //公交车上下行判断 int iDownLine = BusLineName.IndexOfArray(arrLines, strEnd); if (iUpLine >= 0 && iDownLine >= 0) { nonstopLine nl = new nonstopLine(); //实例化nonstopLine类 nl.strLineName = c.strLineName; //将从数据库读出的车次信息赋给要输出的车次信息 nl.strlineCount = Convert.ToString(Math.Abs(iUpLine-iDownLine));//计算行车站数 string strLines = ""; //定义一个字符串变量,用来保存行车路线站点 if (iUpLine > iDownLine) { for (int j = iUpLine; j >= iDownLine; j--) { strLines += arrLines[j] + "-"; } } else { for (int j = iUpLine; j <= iDownLine;j++ ) { strLines += arrLines[j] + "-"; } } strLines = strLines.Substring(0, strLines.Length - 1); //去掉字符串最后面的"-" nl.strLines = strLines; al.Add(nl); } } return al; } } } 本文出自 “逍遥居” 博客,请务必保留此出处http://65341726.blog.51cto.com/180639/67275 本文出自 51CTO.COM技术博客 |


逍遥散人
博客统计信息
热门文章
最新评论
友情链接
