欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

郑州地铁计费器 计应192西—第一组—王栋欣

程序员文章站 2022-11-01 18:31:05
计应192西—第一组—王栋欣 郑州地铁计费项目 软件:vs2019,ASP.NET 计划:实现一个地铁计费项目,我首先考虑的是如何把地铁的各个站显示出来,用RadioButton,DropDownList还是ListBox,经过比较我选择的是LisBox。然后再设置一个Button按钮把计算的结果返 ......

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

具体设计:

郑州地铁计费器  计应192西—第一组—王栋欣

 

具体编码:

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控件的值都返回未选中状态以便可以继续选择。

代码复审:找班里的同学和我来阅读一下代码,没什么问题。

测试:测试如图。

郑州地铁计费器  计应192西—第一组—王栋欣

 

 郑州地铁计费器  计应192西—第一组—王栋欣

报告

测试报告:经过多轮运行一号线到一号线和二号线,二号线到一号线和二号线都没有什么问题。

计算工作量:这个计费器工作量不大,aspx.cs代码大概100行多一点,aspx页面代码170多行左右,大多都是每个站点一行复制修改。

事后总结:这个计费器的难度并不大,目前就适合俩条线,如果再加上5号线3号线等等,再用我这种方法我感觉就太麻烦了,也不美观,整个过程大概花费了2个多小时的时间,功能都能实现,中间也遇到过一些问题,经过上网查阅资料和同学讨论,问题大大小小的都解决了。最重要的我感觉不是代码的编写,而是思路,只要思路清晰,知道每个功能都是要怎么实现,该用设计什么控件,改定义那些方法在哪里调用等等。路漫漫其修远兮,继续努力加油。

另附psp图:

郑州地铁计费器  计应192西—第一组—王栋欣