📄 ~highwaydlg.~cpp
字号:
{ c->nowRunTime--;
c->t++; c->f1=false;
temp1.Format("到达虢镇");
}
else { c->t=0; c->f1 =true;}
}
if(c->downGzNum==0) {c->f1=true;}
if((dista>24)&&(dista<45)&&c->f1) //车辆从虢镇出站后的位置信息
{
distance=distance-24;
temp1.Format("虢镇以东%f公里",distance);
distance=dista;
}
//-----------------显示在到达蔡家坡后的车辆的位置信息---------------//
if((c->downCpNum!=0)&&(((c->nowRunTime==24)&&(a==W))||((c->nowRunTime==33)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp1.Format("到达蔡家坡");
}
else { c->t=0; c->f1=true;}
}
if(c->downCpNum==0) {c->f1=true;}
if((dista>45)&&(dista<107)&&c->f1)
{
distance=distance-45;
temp1.Format("蔡家坡以东%f公里",distance);
distance=dista;
}
//-----------------显示在到达武功后的车辆的位置信息---------------//
if((c->downWgNum!=0)&&(((c->nowRunTime==57)&&(a==W))||((c->nowRunTime==77)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp1.Format("到达武功");
}
else { c->t=0; c->f1=true;}
}
if(c->downWgNum==0) {c->f1=true;}
if((dista>107)&&(dista<128)&&c->f1)
{
distance=distance-107;
temp1.Format("武功以东%f公里",distance);
distance=dista;
}
//-----------------显示在到达兴平后的车辆的位置信息---------------//
if((c->downXpNum!=0)&&(((c->nowRunTime==68)&&(a==W))||((c->nowRunTime==92)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp1.Format("到达兴平");
}
else { c->t=0; c->f1=true;}
}
if(c->downXpNum==0) {c->f1=true;}
if((dista>128)&&(dista<152)&&c->f1)
{
distance=distance-128;
temp1.Format("兴平以东%f公里",distance);
distance=dista;
}
//-----------------显示在到达咸阳后的车辆的位置信息---------------//
if((c->downXyNum!=0)&&(((c->nowRunTime==80)&&(a==W))||((c->nowRunTime==109)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp1.Format("到达咸阳");
}
else { c->t=0; c->f1=true;}
}
if(c->downXyNum==0) {c->f1=true;}
if((dista>=152)&&(dista<174)&&c->f1)
{
if(dista==152)
{
c->nowRunTime++;
distance=c->nowRunTime*c->speed;
dista=distance;
}
distance=distance-152;
temp1.Format("咸阳以东%f公里",distance);
distance=dista;
}
//到达西安车站后的情况
if(distance>174)
{ temp1.Format("到达西安车站");
c->f1=false;
c->t=0;}
m_runcar.SetItemText(i,3,temp1);
//----------------------显示首发站-------------------//
if(c->direction==0) m_runcar.SetItemText(i,4,"宝鸡");
else m_runcar.SetItemText(i,4,"西安");
//---------到达西安后,把该车辆加入到相应的车辆队列---------//
if(distance<174) m_Bj_runQueue.append(c);
else if(a==W) {
c->direction=1;
c->f1=false;
c->nowRunTime=0;
c->nowPerson=0;
c->downBjNum=0;
c->downCpNum=0;
c->downGzNum=0;
c->downWgNum=0;
c->downXnNum=0;
c->downXpNum=0;
c->downXyNum=0;
m_Xn_wewQueue.append(c);
}
else {
c->f1=false;
c->direction=1;
c->nowRunTime=0;
c->nowPerson=0;
c->downBjNum=0;
c->downCpNum=0;
c->downGzNum=0;
c->downWgNum=0;
c->downXnNum=0;
c->downXpNum=0;
c->downXyNum=0;m_Xn_ywkQueue.append(c);
}
}
//------------------------西安出发的车辆---------------------------//
//说明:显示时,将西安依维柯队列中的对象加到西安沃尔沃队列后面//
j=m_Bj_runQueue.getLength();
for(i=j;i<(j+m_Xn_runQueue.getLength());i++)
{
CCar *c=m_Xn_runQueue.getHead();
c->nowRunTime++;
CarStyle a=c->carStyle;
CString str;
if(a==W) str="沃尔沃";
else str="依维柯";
m_runcar.InsertItem(i,str);
if(a==W) temp.Format("%d",c->wewNumber);
else temp.Format("%d",c->ywkNumber);
m_runcar.SetItemText(i,1,temp);
double distance=c->speed*c->nowRunTime; //计算行驶距离
int nus=XnDownPeople(c,distance);
//在列表中显示剩余乘客的数量
temp.Format("%d",nus);
m_runcar.SetItemText(i,2,temp);
CString temp2;
//在列表中显示当前位置的信息
double dista=distance;
//
if(distance<22) temp2.Format("西安以西%f公里",distance);
//说明:通过车辆运行时间和有无乘客下车来判断是否要停站//
//-----------------显示在到达咸阳后的车辆的位置信息---------------//
if((c->downXyNum!=0)&&(((c->nowRunTime==12)&&(a==W))||((c->nowRunTime==16)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1 =false;
temp2.Format("到达咸阳");
}
else { c->t=0; c->f1=true;}
}
if(c->downXyNum==0) {c->f1=true;}
if((dista>22)&&(dista<46)&&c->f1)
{
distance=distance-22;
temp2.Format("咸阳以西%f公里",distance);
distance=dista;
}
//-----------------显示在到达兴平后的车辆的位置信息---------------//
if((c->downXpNum!=0)&&(((c->nowRunTime==25)&&(a==W))||((c->nowRunTime==33)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp2.Format("到达兴平");
}
else { c->t=0; c->f1=true;}
}
if(c->downXpNum==0) {c->f1=true;}
if((dista>46)&&(dista<67)&&c->f1)
{
distance=distance-46;
temp2.Format("兴平以西%f公里",distance);
distance=dista;
}
//-----------------显示在到达武功后的车辆的位置信息---------------//
if((c->downWgNum!=0)&&(((c->nowRunTime==36)&&(a==W))||((c->nowRunTime==48)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp2.Format("到达武功");
}
else { c->t=0; c->f1=true;}
}
if(c->downWgNum==0) {c->f1=true;}
if((dista>67)&&(dista<129)&&c->f1)
{
distance=distance-67;
temp2.Format("武功以西%f公里",distance);
distance=dista;
}
//-----------------显示在到达蔡家坡后的车辆的位置信息---------------//
if((c->downCpNum!=0)&&(((c->nowRunTime==68)&&(a==W))||((c->nowRunTime==93)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp2.Format("到达蔡家坡");
}
else { c->t=0; c->f1=true;}
}
if(c->downCpNum==0) {c->f1=true;}
if((dista>129)&&(dista<150)&&c->f1)
{
distance=distance-129;
temp2.Format("蔡家坡以西%f公里",distance);
distance=dista;
}
//-----------------显示在到达虢镇后的车辆的位置信息---------------//
if((c->downGzNum!=0)&&(((c->nowRunTime==79)&&(a==W))||((c->nowRunTime==108)&&(a==Y))))
{ if((c->t==0)||(c->t==1))
{ c->nowRunTime--;
c->t++; c->f1=false;
temp2.Format("到达虢镇");
}
else { c->t=0; c->f1=true;}
}
if(c->downGzNum==0) {c->f1=true;}
if((dista>150)&&(dista<174)&&c->f1)
{
distance=distance-150;
temp2.Format("虢镇以西%f公里",distance);
distance=dista;
}
//到达宝鸡车站的情况
if(distance>174)
{temp2.Format("到达宝鸡车站");
c->f1=false;
c->t=0;}
m_runcar.SetItemText(i,3,temp2);
if(c->direction==0) m_runcar.SetItemText(i,4,"宝鸡");
else m_runcar.SetItemText(i,4,"西安");
//---------到达宝鸡后,把该车辆加入到相应的车辆队列---------//
if(distance<174) m_Xn_runQueue.append(c);
else if(a==W) {
c->direction=0;
c->f1=false;
c->nowRunTime=0;
c->nowPerson=0;
c->downBjNum=0;
c->downCpNum=0;
c->downGzNum=0;
c->downWgNum=0;
c->downXnNum=0;
c->downXpNum=0;
c->downXyNum=0;
m_Bj_wewQueue.append(c);
}
else {
c->f1 =false;
c->direction=0;
c->nowRunTime=0;
c->nowPerson=0;
c->downBjNum=0;
c->downCpNum=0;
c->downGzNum=0;
c->downWgNum=0;
c->downXnNum=0;
c->downXpNum=0;
c->downXyNum=0;
m_Bj_ywkQueue.append(c);
}
}
}
//---------------------控制车辆运行的函数-------------------//
void CHighWayDlg::RunCar()
{
if(((hour>=8)&&(minute%20==0)&&(hour<18))||((hour==18)&&(minute==0))) //宝鸡的依维柯发车
{
if(m_Bj_ywkQueue.isEmpty()) { } //判断在宝鸡站内的依维柯队列是否为空
else
{
CCar *a=m_Bj_ywkQueue.getHead(); //取出队列首车辆
if(m_Bj_passengerQueue.getLength()>21) //开始上乘客
{ a->nowPerson=21; }
else
{ a->nowPerson=m_Bj_passengerQueue.getLength(); }
for(int i=0;i<a->nowPerson;i++) //记录上车乘客的目的地信息
{
CPassenger *p=m_Bj_passengerQueue.getHead();
switch (p->sta_dest )
{
case GZ: { a->downGzNum++; break;}
case CP: { a->downCpNum++; break;}
case WG: { a->downWgNum++; break;}
case XP: { a->downXpNum++; break;}
case XY: { a->downXyNum++; break;}
case XN: { a->downXnNum++; break;}
}
}
m_Bj_runQueue.append(a); //把当前出站的依维柯加入到从宝鸡出发的运行车辆的队列
}
}
if((hour>=8)&&(minute==30)&&(hour<=17)) //宝鸡的沃尔沃发车
{
if(m_Bj_wewQueue.isEmpty()) {} //判断在宝鸡站内的沃尔沃队列是否为空
else
{
CCar *a=m_Bj_wewQueue.getHead(); //取出队列首车辆
if(m_Bj_passengerQueue.getLength()>48) //开始上乘客
{ a->nowPerson=48; }
else
{ a->nowPerson=m_Bj_passengerQueue.getLength();}
for(int i=0;i<a->nowPerson;i++) //记录上车乘客的目的地信息
{
CPassenger *p=m_Bj_passengerQueue.getHead();
switch (p->sta_dest )
{
case GZ: { a->downGzNum++; break;}
case CP: { a->downCpNum++; break;}
case WG: { a->downWgNum++; break;}
case XP: { a->downXpNum++; break;}
case XY: { a->downXyNum++; break;}
case XN: { a->downXnNum++; break;}
}
}
m_Bj_runQueue.append(a); //把当前出站的沃尔沃加入到从宝鸡出发的运行车辆的队列
}
}
if(((hour>=8)&&(minute%20==0)&&(hour<18))||((hour==18)&&(minute==0))) //西安的依维柯发车
{
if(m_Xn_ywkQueue.isEmpty()) {} //判断在西安站内的依维柯队列是否为空
else
{
CCar *a=m_Xn_ywkQueue.getHead(); //取出队列首车辆
if(m_Xn_passengerQueue.getLength()>21) //开始上乘客
{ a->nowPerson=21; }
else
{ a->nowPerson=m_Xn_passengerQueue.getLength(); }
for(int i=0;i<a->nowPerson;i++) //记录上车乘客的目的地信息
{
CPassenger *p=m_Xn_passengerQueue.getHead();
switch (p->sta_dest )
{
case GZ: { a->downGzNum++; break;}
case CP: { a->downCpNum++; break;}
case WG: { a->downWgNum++; break;}
case XP: { a->downXpNum++; break;}
case XY: { a->downXyNum++; break;}
case BJ: { a->downBjNum++; break;}
}
}
m_Xn_runQueue.append(a);
}
}
if((hour>=8)&&(minute==30)&&(hour<=17)) //西安的沃尔沃发车
{
if(m_Xn_wewQueue.isEmpty()) { }
else
{
CCar *a=m_Xn_wewQueue.getHead();
if(m_Xn_passengerQueue.getLength()>48) //开始上乘客
{ a->nowPerson=48; }
else
{a->nowPerson=m_Xn_passengerQueue.getLength();}
for(int i=0;i<a->nowPerson;i++) //记录上车乘客的目的地信息
{
CPassenger *p=m_Xn_passengerQueue.getHead();
switch (p->sta_dest )
{
case GZ: { a->downGzNum++; break;}
case CP: { a->downCpNum++; break;}
case WG: { a->downWgNum++; break;}
case XP: { a->downXpNum++; break;}
case XY: { a->downXyNum++; break;}
case BJ: { a->downBjNum++; break;}
}
}
m_Xn_runQueue.append(a);
}
}
if((hour>=18)&&(minute>0)) //最后一趟车出站后,清空宝鸡和西安的乘客队列
{
m_Bj_passengerQueue.clean();
m_Xn_passengerQueue.clean();
ifshow=false;
}
}
//-----------------------从宝鸡开车后下车情况----------------------//
//说明:根据当前车辆中的乘客信息和车辆的行驶距离来计算剩余的乘客数量//
int CHighWayDlg::BjDownPeople(CCar *a,double dist)
{
int temp;
if(dist<=24) temp=a->nowPerson;
if((dist>=24)&&(dist<=45))
{ temp=(a->nowPerson-a->downGzNum); } //到达虢镇后,剩余的乘客数量
if((dist>=45)&&(dist<=107))
{ temp=(a->nowPerson-a->downGzNum-a->downCpNum); }
if((dist>=107)&&(dist<=128))
{ temp=(a->nowPerson-a->downGzNum-a->downCpNum-a->downWgNum);}
if((dist>=128)&&(dist<=152))
{ temp=(a->nowPerson-a->downGzNum-a->downCpNum-a->downWgNum-a->downXpNum);}
if((dist>=152)&&(dist<=174))
{ temp=(a->nowPerson-a->downGzNum-a->downCpNum-a->downWgNum-a->downXpNum-a->downXyNum); }
if(dist>174) temp=0;
return temp;
}
//-----------------------从西安开车后下车情况----------------------//
int CHighWayDlg::XnDownPeople(CCar *a,double dist)
{
int temp;
if(dist<=22) temp=a->nowPerson;
if((dist>=22)&&(dist<=46)) temp=(a->nowPerson-a->downXyNum);
if((dist>=46)&&(dist<=67)) temp=(a->nowPerson-a->downXyNum-a->downXpNum);
if((dist>=67)&&(dist<=129))
temp=(a->nowPerson-a->downXyNum-a->downXpNum-a->downWgNum);
if((dist>=129)&&(dist<=150))
temp=(a->nowPerson-a->downXyNum-a->downXpNum-a->downWgNum-a->downCpNum);
if((dist>=150)&&(dist<=174))
temp=(a->nowPerson-a->downXyNum-a->downXpNum-a->downWgNum-a->downCpNum-a->downGzNum);
if(dist>174) temp=0;
return temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -