设为首页 加入收藏

TOP

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

7.5.5  公交换乘的实现(2)

在对话框界面上空白区域双击,进入添加类对话框。为对话框创建一个新类CTransView。通过类向导更改控件的ID为控件添加相应的变量,添加WM_INITDIALOG消息响应函数OnInitDialog()代码如下:

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

  1. 1  BOOL CTransView::OnInitDialog()  
  2. 2  {  
  3. 3   CPropertyPage::OnInitDialog();  
  4. 4   CStationSet m_stationSet;                               //定义记录集对象  
  5. 5   int i=0;                                                //定义整型变量  
  6. 6   m_stationSet.Open();                                    //打开记录集  
  7. 7   m_stationSet.MoveFirst();                               //移动到首条记录  
  8. 8   while(!m_stationSet.IsEOF())                            //遍历记录集  
  9. 9   {  
  10. 10          m_start.InsertString(i,m_stationSet.m_STATION);     //插入数据到列表框中  
  11. 11          m_end.InsertString(i,m_stationSet.m_STATION);  
  12. 12          i++;  
  13. 13          m_stationSet.MoveNext();                            //移动到下一条记录  
  14. 14      }  
  15. 15      m_stationSet.Close();                                   //关闭记录集  
  16. 16      m_start.SetCurSel(1);  
  17. 17      m_end.SetCurSel(5);                                 //设置当前选项  
  18. 18      return TRUE;  
  19. 19  }  

第4~15行代码从数据库中查找数据插入到组合框中。

第16、17行代码设置组合框的默认选中项。

上述代码完成了初始化工作,将所有站点的名称插入到开始站点和终点站这两个组合框中。给【查询】按钮添加消息响应函数,其中的代码如下:

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

  1. 1  void CTransView::OnButFind()  
  2. 2  {  
  3. 3   CWnd *pwnd;  
  4. 4   CMapPublicApp *app=(CMapPublicApp *)AfxGetApp();        //获取应用类指针  
  5. 5   app->m_show="";  
  6. 6   pwnd=GetDlgItem(IDC_EDIT_SCHEME);                       //获取控件的指针  
  7. 7   m_scheme="";  
  8. 8   UpdateData(false);                                  //更新数据  
  9. 9   CString start,end;  
  10. 10      m_start.GetLBText(m_start.GetCurSel(),start);           //获取文本  
  11. 11      m_end.GetLBText(m_end.GetCurSel(),end);  
  12. 12      if(start!=end)                                  //起始站和终点站不同  
  13. 13      {  
  14. 14          if(m_InfoMation.Query(pwnd,start,end))              //查询  
  15. 15          {  
  16. 16              m_scheme=app->m_show;  
  17. 17              UpdateData(false);                          //显示结果  
  18. 18          }  
  19. 19      }  
  20. 20      else  
  21. 21          AfxMessageBox("起始站和终点站不能相同!");  
  22. 22  }  

第3~4行代码为获取应用类的指针。

第9~11行代码为获取下拉框中的文本。

上述代码执行公交线路的查询,通过函数GetLBText()获取开始站和终点站,最终调用函数Query()完成公交的换乘。

上面的代码很简单,读者也许会有疑问,公交换乘的算法是怎样实现的呢?请注意上述代码中的一个函数的调用m_InfoMation.Query(),这就是关键所在。

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

评论

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