在做公交查询系统时,要求用户输入起点和终点。可是如果用户输错了,自己要判断,很麻烦,因为我的算法全是SQL。于是就想了一种折衷的方案:让用户从DropDownList里选。这样既方便了用户,也方便了自己。
可是,如果全部站点放入一个DropDownList的话,太多了(我这个济南的有一千多个啊),所以就先选择汉字的拼音首字母,再选择站点,实验证明很方便,速度很快!
这里用到了一个汉字转拼音的函数:
staticstringExtract_HZ(stringHZ)
...{
byte[]ZW=newbyte[2];
longHZ_INT;
ZW=System.Text.Encoding.Default.GetBytes(HZ);//getthearrayofbytefromthesinglechar
inti1=(short)(ZW[0]);
inti2=(short)(ZW[1]);
HZ_INT=i1*256+i2;//expresstion
//HZ_INTmatchtheconstant
if((HZ_INT>=45217)&&(HZ_INT<=45252))
...{
return"A";
}
if((HZ_INT>=45253)&&(HZ_INT<=45760))
...{
return"B";
}
if((HZ_INT>=45761)&&(HZ_INT<=46317))
...{
return"C";
}
if((HZ_INT>=46318)&&(HZ_INT<=46825))
...{
return"D";
}
if((HZ_INT>=46826)&&(HZ_INT<=47009))
...{
return"E";
}
if((HZ_INT>=47010)&&(HZ_INT<=47296))
...{
return"F";
}
if((HZ_INT>=47297)&&(HZ_INT<=47613))
...{
return"G";
}
//**************************
if((HZ_INT>=47614)&&(HZ_INT<=48118))
...{
//MessageBox.Show("H");
return"H";
}
if((HZ_INT>=48119)&&(HZ_INT<=49061))
...{
return"J";
}
if((HZ_INT>=49062)&&(HZ_INT<=49323))
...{
return"K";
}
if((HZ_INT>=49324)&&(HZ_INT<=49895))
...{
return"L";
}
if((HZ_INT>=49896)&&(HZ_INT<=50370))
...{
return"M";
}
if((HZ_INT>=50371)&&(HZ_INT<=50613))
...{
return"N";
}
if((HZ_INT>=50614)&&(HZ_INT<=50621))
...{
return"O";
}
if((HZ_INT>=50622)&&(HZ_INT<=50905))
...{
return"P";
}
if((HZ_INT>=50906)&&(HZ_INT<=51386))
...{
return"Q";
}
//*********************
if((HZ_INT>=51387)&&(HZ_INT<=51445))
...{
return"R";
}
if((HZ_INT>=51446)&&(HZ_INT<=52217))
...{
return"S";
}
if((HZ_INT>=52218)&&(HZ_INT<=52697))
...{
return"T";
}
if((HZ_INT>=52698)&&(HZ_INT<=52979))
...{
return"W";
}
if((HZ_INT>=52980)&&(HZ_INT<=53640))
...{
return"X";
}
if((HZ_INT>=53689)&&(HZ_INT<=54480))
...{
return"Y";
}
if((HZ_INT>=54481)&&(HZ_INT<=55289))
...{
return"Z";
}
return("");
}
把索引字母全部插入数据库后,我发现有些字这个函数没有处理。可能有些偏僻的字没有判断吧?不过就十几个,我手工加上了。。。。。
刚做完一次转乘,速度很快嘛,不用什么临时表了吧?
公交查询系统优化
442

被折叠的 条评论
为什么被折叠?



