鄭州地鐵計費器 計應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中選擇起點站與終點站,來計算出倆站須要花費的路費。設計

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

具體設計:blog

 

具體編碼:開發

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

    {string

        int oneQ ;//一號起點io

        int twoQ ;//二號起點class

        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圖:

相關文章
相關標籤/搜索