📄 bybus.cs
字号:
if (sline.order < i || sline.F_B == "C")
{
if (this.change0station(bl.FStations[i], finishstation, out time, out pay, out lineName, out lines))
{
string headline = "乘坐线路" + bl.LineName + "到" + bl.FStations[i]+ "再转乘线路";
if (sline.order < i)
{
if (sline.F_B == "C")
{
outtxt += "<环线>";
}
else if (sline.F_B == "F")
{
outtxt += "<上行线>";
}
else if (sline.F_B == "X")
{
outtxt += "<往返线>";
}
//记录起点到中点的路线
for (int k = sline.order; k <= i; k++)
outtxt += bl.FStations[k] + "-";
//计算起点到中点的时间和费用
int fy;//记录费用
int sj = i - bl.FStations.IndexOf(startstation);//记录站数或时间
if (bl.PayWay == "Y") fy = 1;
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
//输出整条路线
for (int w = 0; w < lines.Count; w++)
{
string temp = (headline + lineName[w]);
LINENAME.Add(temp);
string temp1 = outtxt + lines[w];
LINE.Add(temp1);
int tt = (sj * 3 + 2 + (time[w]));
T.Add(tt);
int pp = fy + pay[w];
P.Add(pp);
}
}
else if (sline.F_B == "C" && sline.order > i)
{
if (this.change0station(bl.FStations[i], finishstation, out time, out pay, out lineName, out lines))
{
int fy;
int sj = bl.FStations.Count - (sline.order - i);
if (bl.PayWay == "Y")
{
fy = 1;
}
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
for (int j1 = sline.order; j1 < bl.FStations.Count; j1++)
{
outtxt += bl.FStations[j1] + "-";
}
for (int j2 = 0; j2 <= i; j2++)
{
outtxt += bl.FStations[j2]+ "-";
}
for (int w = 0; w < lines.Count; w++)
{
string temp = (headline + lineName[w]);
LINENAME.Add(temp);
string temp1 = outtxt + lines[w];
LINE.Add(temp1);
int tt = (sj * 3 + 2 + time[w]);
T.Add(tt);
int pp = fy + (int)pay[w];
P.Add(pp);
}
}
}
}//if
}
}//for
}//if(bl.FStaiton.contain(startstation))
if (sline.F_B != "C" && bl.BStations.Contains(startstation))
{
for (int i = bl.BStations.IndexOf(startstation) + 1; i < bl.BStations.Count; i++)
{
outtxt = "";
if (sline.F_B == "B")
{
outtxt += "<下行线>";
}
else if (sline.F_B == "X")
{
outtxt += "<往返线>";
}
string headline = "乘坐线路" + bl.LineName + "到" + bl.BStations[i] + "再转乘线路";
if (this.change0station(bl.BStations[i], finishstation, out time, out pay, out lineName, out lines))
{
for (int j = bl.BStations.IndexOf(startstation); j <= i; j++)
{
outtxt += bl.BStations[j] + "-";
}
int fy;
int sj = i - bl.BStations.IndexOf(startstation);
if (bl.PayWay == "Y")
{
fy = 1;
}
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
for (int w = 0; w < lineName.Count; w++)
{
string temp = (headline + lineName[w]);
LINENAME.Add(temp);
string temp1 = outtxt + lines[w];
LINE.Add(temp1);
int tt = (sj * 3 + 2 + (time[w]));
T.Add(tt);
int pp = fy + pay[w];
P.Add(pp);
}
}
}
}
}
if (LINENAME.Count > 0)
{
return true;
}
else
{
return false;
}
}
public bool change2station(string startstation, string finishstation, out List<int> time, out List<int> pay, out List<string> lineName, out List<string> lines)
{
time = new List<int>();
pay = new List<int>();
lineName = new List<string>();
lines = new List<string>();
List<int> t, p;
List<string> liname, liness;
string outtxt = "";
ArrayList finishline = new ArrayList();
int start = Int32.Parse(startstation.Substring(1));
int finish = Int32.Parse(finishstation.Substring(1));
string repeatline = "";
List<car> carStart = carStation[start];
foreach (car sline in carStart)
{
repeatline = sline.line;
if (finishline.Contains(sline.line))
{ continue; }
else
{
finishline.Add(sline.line);
}
BusLine bl = hashLine[sline.line];
if ((bl.FStations.Contains(startstation) && bl.FStations.Contains(finishstation)) || (bl.BStations.Contains(startstation) && bl.BStations.Contains(finishstation)))
{
continue;
}
if (bl.FStations.Contains(startstation))
{
for (int i = 0; i < bl.FStations.Count; i++)
{
outtxt = "";
if (sline.order < i || sline.F_B == "C")
{
if (this.change1station(bl.FStations[i], finishstation, out t, out p, out liname, out liness, repeatline))
{
string headline = "\n先乘坐线路" + bl.LineName + "到" + bl.FStations[i] + "再";
if (sline.order < i)
{
if (sline.F_B == "C")
{
outtxt += "<环线>";
}
else if (sline.F_B == "F")
{
outtxt += "<上行线>";
}
else if (sline.F_B == "X")
{
outtxt += "<往返线>";
}
//记录起点到中点的路线
for (int k = sline.order; k <=i; k++)
outtxt += bl.FStations[k] + "-";
//计算起点到中点的时间和费用
int fy;//记录费用
int sj = i - bl.FStations.IndexOf(startstation);//记录站数或时间
if (bl.PayWay == "Y") fy = 1;
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
//输出整条路线
for (int w = 0; w < liness.Count; w++)
{
string temp = (headline + liname[w]);
lineName.Add(temp);
string temp1 = outtxt + liness[w];
lines.Add(temp1);
int tt = (sj * 3 + 2 + (t[w]));
time.Add(tt);
int pp = fy + p[w];
pay.Add(pp);
}
}
else if (sline.F_B == "C" && sline.order > i)
{
if (this.change1station(bl.FStations[i], finishstation, out t, out p, out liname, out liness, repeatline))
{
int fy;
int sj = bl.FStations.Count - (sline.order - i);
if (bl.PayWay == "Y")
{
fy = 1;
}
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
for (int j1 = sline.order; j1 < bl.FStations.Count; j1++)
{
outtxt += bl.FStations[j1]+ "-";
}
for (int j2 = 0; j2 <= i; j2++)
{
outtxt += bl.FStations[j2] + "-";
}
for (int w = 0; w < lines.Count; w++)
{
string temp = (headline + liname[w]);
lineName.Add(temp);
string temp1 = outtxt + liness[w];
lines.Add(temp1);
int tt = (sj * 3 + 2 + (t[w]));
time.Add(tt);
int pp = fy + p[w];
pay.Add(pp);
}
}
}
}
}
}
}//bl.Fstation.contain(startstation)
if (sline.F_B != "C" && bl.BStations.Contains(startstation))
{
for (int i = bl.BStations.IndexOf(startstation) + 1; i < bl.BStations.Count; i++)
{
outtxt = "";
if (sline.F_B == "B")
{
outtxt += "<下行线>";
}
else if (sline.F_B == "X")
{
outtxt += "<往返线>";
}
string headline = "\n先乘坐线路" + bl.LineName + "到" + bl.BStations[i] + "再";
if (this.change1station(bl.BStations[i], finishstation, out t, out p, out liname, out liness, repeatline))
{
for (int j = bl.BStations.IndexOf(startstation); j <=i; j++)
{
outtxt += bl.BStations[j]+ "-";
}
int fy;
int sj = i - bl.BStations.IndexOf(startstation);
if (bl.PayWay == "Y")
{
fy = 1;
}
else
{
if (sj > 40) fy = 3;
else fy = sj / 20 + 1;
}
for (int w = 0; w < liname.Count; w++)
{
string temp = (headline + liname[w]);
lineName.Add(temp);
string temp1 = outtxt + liness[w];
lines.Add(temp1);
int tt = (sj * 3 + 2 + (t[w]));
time.Add(tt);
int pp = fy + p[w];
pay.Add(pp);
}
}
}
}
}
if (lines.Count > 0)
return true;
else
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -