设为首页 加入收藏

TOP

7.5.5 公交换乘的实现(4)
2013-10-07 14:53:31 来源: 作者: 【 】 浏览:65
Tags:7.5.5 公交换乘 实现

7.5.5  公交换乘的实现(4)

第10~18行代码为查找开始站的信息。

第19~25行代码为查找终点站的情况。

第24~36行代码为确定最佳的线路。

上述代码中先通过遍历记录集找出包含开始站和终点站的线路,将信息保存在m_BusInfo数组中,然后比较m_BusInfo数组的信息。如果相同,表示两个站点在同一条线路中,则为最佳线路。函数BestMode()实现寻求最优的方案。该函数中代码如下:

代码位置:见光盘中本章源代码的CInfoMatio类。

  1. 1  CString CInfoMation::BestMode()  
  2. 2  {  
  3. 3   int n=m_BusRoad[0].Number,j=m_BusRoad[0].Precept;       //定义整型变量  
  4. 4      for(int i=0;i<Num_BusRoad;i++)  
  5. 5   {  
  6. 6      if(m_BusRoad[i].Number<n)                            //条件的判断  
  7. 7      {  
  8. 8          n=m_BusRoad[i].Number;                           //查找路线  
  9. 9          j=m_BusRoad[i].Precept;  
  10. 10         }  
  11. 11      }  
  12. 12      CString str;                                            //定义字符串变量  
  13. 13      str.Format("%d",j);                                 //格式化操作  
  14. 14      return str;                                         //返回值  
  15. 15  }  

第4~11行代码为比较乘车方案。

第12~14行代码为返回最佳的乘车方案。

上述代码中由于m_BusRoad数组中保存着符合条件的线路信息,通过在这些线路中循环找到起始站点和终点站间站点最少的线路,这条线路为最佳线路,生成乘车方案。函数Num_Station()实现计算同一条路线两点间站点数。该函数其中代码如下所示:

代码位置:见光盘中本章源代码的CInfoMatio类。

  1. 1  int CInfoMation::Num_Station(CString s_start,CString roadway,CString s_end)  
  2. 2  {  
  3. 3   CStationSet m_StationSet;                               //定义记录集对象  
  4. 4   bool flag=false;                                        //定义布尔型变量  
  5. 5   Init();                                             //初始化函数  
  6. 6   if(!m_StationSet.IsOpen())                              //打开记录集  
  7. 7       m_StationSet.Open();  
  8. 8      m_StationSet.MoveFirst();                            //移动到首条记录  
  9. 9   while(!m_StationSet.IsEOF())                            //遍历记录集  
  10. 10      {  
  11. 11          if(m_StationSet.m_ID==roadway)                      //查找路线  
  12. 12          {  
  13. 13              if(m_StationSet.m_STATION==s_start||m_StationSet.m_STATION   
  14. ==s_end)  
  15. 14                  flag=!flag;  
  16. 15              if(flag)  
  17. 16               busnum++;  
  18. 17          }  
  19. 18          m_StationSet.MoveNext();                            //移动到下一条记录  
  20. 19      }  
  21. 20      m_StationSet.Close();                                   //关闭记录集  
  22. 21      return busnum;  
  23. 22  }  

第3~8行代码进行初始化操作。

第9~20行代码为计算同一条线路两个站间的站点数。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.5.3 车次查询的实现 下一篇7.5.5 公交换乘的实现(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: