鄭州地鐵計費專案
軟體: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中的元素,可以清楚的看到某站到某站的路費,并在頁面下面寫上提示,乘坐幾站多少錢,那一站是轉線站,
具體設計:

具體編碼:
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圖:

著:計應192(西)王棟欣
日期:2021/3/26
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/270401.html
標籤:ASP.NET
