計劃:實現一個地鐵計費項目,我首先考慮的是如何把地鐵的各個站顯示出來,用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圖: