郑州地铁计费器 计应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中的元素,可以清楚的看到某站到某站的路费,并在页面下面写上提示,乘坐几站多少钱,那一站是转线站。
具体设计:
具体编码:
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图:
下一篇: 生鸡蛋能吃吗,怎么吃生鸡蛋才安全又营养!