新鲜、有趣,互联生活。令狐葱。

2006/11/10

公交车查询系统(存在问题)

前几日闲来无事做了个"公交车查询"系统,使用Xml作为数据源。难点主要在换乘线路的查询和显示。主要代码如下:
 
public void GetLinesBetweenStops(String stopOne, String stopTwo)
        {
             List<Line> linesOne = new List<Line>();
            List<Line> linesTwo = new List< Line>();
            List<Line> linesOneAfter = new List<Line>();

            linesDisplay.Clear ();

            foreach (Line line in lines) {
                 bool isInLinesOne = false;
                foreach (String stop in line.Stops) {
                    if (stopOne == stop) {
                        linesOne.Add(line);
                        isInLinesOne = true;
                        break;
                     }

                
}
                if (!isInLinesOne) {
                    foreach (String stop in line.Stops) {
                        if (stopTwo == stop) {
                            linesTwo.Add(line);
                             break;
                        }
                    }
                }
             }

            foreach (Line line in linesOne) {
                 bool isOneLine = false;
                foreach (String stop in line.Stops) {
                    if (stopTwo == stop) {
                        linesDisplay.Add(line);
                        isOneLine = true;
                        break;
                     }
                }
                 if (!isOneLine) {
                    linesOneAfter.Add(line);
                }
            }
            
//中转
            linesDisplay .Add(null);
             foreach (Line line1 in linesOneAfter) {
                foreach (String stop1 in line1.Stops ) {
                    foreach (Line line2 in linesTwo) {
                        foreach (String stop2 in line2.Stops ) {
                            if (stop1 == stop2) {
                                colorStops .Add(stop1);
                                linesDisplay.Add( line1);
                                linesDisplay.Add(line2);
                                break;
                             }
                        }
                     }
                }
            }
        }
 
程序显示界面如下:
 
程序中数据的保存使用List<string>,虽然说遍历什么的还比较方便,不过也造成了程序的硬伤。程序中还提供了"转换文件"功能,可以由固定合适的txt文本文件生成本程序使用的xml数据源。程序下载请到我的EDisk。压缩包内有西安市公交线路数据库,来源为西安公交网 (很好的公交车查询网站)。若需添加其他城市数据,放入相应的xml数据源即可,格式需要严格要求。若有好的建议,请于我联系。代码索取随时恭候。
 
目前来看上不让人满意的地方还很多,主要有:
1. 由于数据结构设计的不合理,造成查询不是很方便,且多处使用循环嵌套,资源消耗较大。估计使用数据库的话应该会好一些。
2. 换乘线路应该成对出现,由于设计时使用list,显示的时候按次序显示,故看起来很不方便。
3. 换乘站点应该以特殊字体颜色显示,尚未解决。

没有评论: