鄭州地鐵計費器 計應192西—第一組—王棟欣


計應192西—第一組—王棟欣

鄭州地鐵計費項目

軟件:vs2019,ASP.NET

計划:實現一個地鐵計費項目,我首先考慮的是如何把地鐵的各個站顯示出來,用RadioButton,DropDownList還是ListBox,經過比較我選擇的是LisBox。然后再設置一個Button按鈕把計算的結果返回到一個Text文本框中。目前所知鄭州地鐵線路太多了,我只做了1號線和2號線這倆條線。因為鄭州地鐵是按公里計費的,我也不了解每一站大概距離多少,所以我打算偷個懶0到5站2元,5到10站3元,10到15站4元,15到20站5元,20站以上6元。整個過程只要能實現倆個地鐵站之間的站數差就好辦了,主要就是寫代碼的時間比較長,思路不需要太多時間,具體就做着看着吧。

開發

需求分析:作為一位每天上下班要乘坐地鐵的上班族,我希望通過這個軟件可以計算我每次坐地鐵的費用,以便我可以規划我好我每個月的生活支出

設計文檔:用戶可以隨意選擇ListBox中的元素,可以清楚的看到某站到某站的路費,並在頁面下面寫上提示,乘坐幾站多少錢,那一站是轉線站。

具體設計:

 

具體編碼:

public partial class WebForm1 : System.Web.UI.Page

    {

        int oneQ ;//一號起點

        int twoQ ;//二號起點

        int oneZ ;//一號終點

        int twoZ ;//二號終點

        int sum;//起點到終點的站數

        string sum2;//用來輸出路費

        protected void Page_Load(object sender, EventArgs e)

        {   

        }

        protected void btn1_Click(object sender, EventArgs e)

        {

             good();       

             oneQ = lst11.SelectedIndex;

             twoQ = lst12.SelectedIndex;

             oneZ = lst21.SelectedIndex;

             twoZ = lst22.SelectedIndex;

            //紫荊山站可以轉線 紫荊山站在一號線的Index值是17,在二號線的值是14

            //一號線到一號線

            if (lst11.SelectedIndex != -1 && lst21.SelectedIndex != -1)

            {

                OneOne();

                Js(sum);

                txt1.Text = lst11.SelectedValue + "站到" + lst21.SelectedValue + "站" + sum2;

            }

            //一號線到二號線

            else if (lst11.SelectedIndex != -1 && lst22.SelectedIndex != -1)

            {

                OneTwo();

                Js(sum);

                txt1.Text = lst11.SelectedValue + "站到" + lst22.SelectedValue + "站" + sum2;

            }

            //二號線到一號線

            else if(lst12.SelectedIndex!=-1&&lst21.SelectedIndex!=-1)

            { TwoOne();

                Js(sum);

                txt1.Text = lst12.SelectedValue + "站到" + lst21.SelectedValue + "站" + sum2;

            }

            //二號線到二號線

            else if (lst12.SelectedIndex != -1 && lst22.SelectedIndex != -1)

            { TwoTwo();

                Js(sum);

                txt1.Text = lst12.SelectedValue + "站到" + lst22.SelectedValue + "站" + sum2;

            }

            Qk();

 

        }

        //good方法判斷有沒有選擇

        public void good()

        {

            if(lst11.SelectedIndex!=-1||lst12.SelectedIndex!=-1)

            {

                if(lst21.SelectedIndex!=-1||lst22.SelectedIndex!=-1)

                {

                }

                else { txt1.Text = "您沒有選擇終點站"; }

            }

            else { txt1.Text = "您沒有選擇起點站"; }

            }

        //定義一個一號線到一號線的方法

        public void OneOne()

        {

            if (oneQ > oneZ)

            { sum = oneQ - oneZ; }

            else { sum = oneZ - oneQ; }

        }

        //定義一個一號線到二號線的方法

        public void OneTwo()

        {

            //判斷一號線到紫荊山站的站數

            if(oneQ>17)

            { oneQ -= 17; }

            else { oneQ = 17 - oneQ; }

            //判斷二號線到紫荊山站的站數

            if (twoZ > 14)

            { twoZ -= 14;}

            else{twoZ = 14 - twoZ;}

            sum = oneQ + twoZ;

        }

        //定義二號線到一號線的方法

        public void TwoOne()

        {

            if(twoQ>14)

            { twoQ -= 14; }

            else { twoQ = 14 - twoQ; }

            if(oneZ>17)

            { oneZ -= 17; }

            else { oneZ = 17 - oneZ; }

            sum = twoQ + oneZ;

        }

        //定義二號線到二號線方法

        public void TwoTwo()

        {

            if(twoQ>twoZ)

            { sum = twoQ - twoZ; }

            else { sum = twoZ - twoQ; }

        }

        //通過站數來計算路費

        public void Js(int a)

        {

            if (a <= 5)

            {

                sum2 = "2元";

            }

            else if (a <= 10)

            {

                sum2 = "3元";

            }

            else if (a <= 15)

            {

                sum2 = "4元";

            }

            else if (a <= 20)

            {

                sum2 = "5元";

            }

            else

            { sum2 = "6元"; }

 

        }

         public void Qk()

        {

            lst11.SelectedIndex = -1;

            lst21.SelectedIndex = -1;

            lst12.SelectedIndex = -1;

            lst22.SelectedIndex = -1;

        }

}

 

計算的思路就是通過選擇的ListBox的SelectedIndex屬性來計算,轉線的話先判斷你目前的站點的SelectedIndex值是否比中轉站“紫荊山”站大,然后來通過大小來決定是“紫荊山”減當前站,還是當前站減“紫荊山”。最后通過QK()方法把ListBox控件的值都返回未選中狀態以便可以繼續選擇。

代碼復審:找班里的同學和我來閱讀一下代碼,沒什么問題。

測試:測試如圖。

 

 

報告

測試報告:經過多輪運行一號線到一號線和二號線,二號線到一號線和二號線都沒有什么問題。

計算工作量:這個計費器工作量不大,aspx.cs代碼大概100行多一點,aspx頁面代碼170多行左右,大多都是每個站點一行復制修改。

事后總結:這個計費器的難度並不大,目前就適合倆條線,如果再加上5號線3號線等等,再用我這種方法我感覺就太麻煩了,也不美觀,整個過程大概花費了2個多小時的時間,功能都能實現,中間也遇到過一些問題,經過上網查閱資料和同學討論,問題大大小小的都解決了。最重要的我感覺不是代碼的編寫,而是思路,只要思路清晰,知道每個功能都是要怎么實現,該用設計什么控件,改定義那些方法在哪里調用等等。路漫漫其修遠兮,繼續努力加油。

另附PSP圖:

                                                               

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM