郑州地铁计费器 计应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中的元素,可以清楚的看到某站到某站的路费,并在页面下面写上提示,乘坐几站多少钱,那一站是转线站。

具体设计:

 

具体编码:

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

                                                               

 

posted @ 2021-03-31 17:51  计应192西一组  阅读(135)  评论(0编辑  收藏