⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bybus.cs

📁 城市公交路线查询
💻 CS
📖 第 1 页 / 共 2 页
字号:
                        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 + -