公交车查询系统(存在问题)
前几日闲来无事做了个"公交车查询"系统,使用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<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. 换乘站点应该以特殊字体颜色显示,尚未解决。
没有评论:
发表评论