设为首页 加入收藏

TOP

7.6.5 整条线路维护的实现(2)
2013-10-07 14:53:13 来源: 作者: 【 】 浏览:61
Tags:7.6.5 线路 维护 实现

7.6.5  整条线路维护的实现(2)

第50~67行代码实现了当数据表中有数据时对应的操作。

已经添加了起始站和终点站两个站点,还需要添加其他的站点。在上述代码中当只有站点的编辑框为可用的状态时,通过不断在站点编辑框中添加数据完成线路中所有站点的添加。

下面介绍删除一条线路的实现过程。添加一个对话框资源,将ID号修改为IDD_DEL_ ROADWAY,添加如图7-26所示的控件。

 
图7-26  删除线路界面

在对话框界的空白区域双击,进入添加类界面。为对话框资源创建一个新类DelRoadway,通过类向导为控件关联相关的变量,并给对话框添加初始化消息WM_INITDIALOG,对应的函数OnInitDialog()中的代码如下:

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

  1. 1  BOOL DelRoadway::OnInitDialog()  
  2. 2  {  
  3. 3   CDialog::OnInitDialog();  
  4. 4   int i=0;                                                //定义整型变量  
  5. 5   m_list.SetTextColor(RGB(0,0,255));                      //设置列表文本的颜色  
  6. 6   RECT rect;  
  7. 7   m_list.GetWindowRect(&rect);  
  8. 8   int wid=rect.right-rect.left;  
  9. 9      DWORD style=m_list.GetExtendedStyle();               //获取控件的类型  
  10. 10      m_list.SetExtendedStyle(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);  
  11. 11      m_list.InsertColumn(0,"车次",LVCFMT_CENTER,wid);  
  12. 12      CBusSet m_busset;                                   //定义记录集对象  
  13. 13      if(!m_busset.IsOpen())                              //打开记录集  
  14. 14          m_busset.Open();  
  15. 15      m_busset.MoveFirst();                                   //移动到首条记录  
  16. 16      while(!m_busset.IsEOF())                                //遍历记录集  
  17. 17      {  
  18. 18          m_list.InsertItem(i++,m_busset.m_ID_BUS);  
  19. 19          m_busset.MoveNext();                                //移动到下一条记录  
  20. 20      }  
  21. 21      m_busset.Close();                                   //关闭记录集  
  22. 22      return TRUE;  
  23. 23  }  

第5~11行代码为列表控件的初始化工作。

第12~21行代码将线路的信息添加到列表控件中。

上述代码完成了初始化工作,把所有车次的名称插入到列表控件中。给【删除】按钮添加消息响应函数,实现删除选择的线路。同时要把操作写入日志中。其中的代码如下:

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

  1. 1  void DelRoadway::OnDel()  
  2. 2  {  
  3. 3   CString str;  
  4. 4      int CurSel=m_list.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);                                                                          //获取下个子项的索引  
  5. 5      str=m_list.GetItemText(CurSel,0);                    //获取列表控件的文本  
  6. 6      CBusSet m_busset;                                    //定义记录集对象  
  7. 7   if(!m_busset.IsOpen())                              //打开记录集  
  8. 8       m_busset.Open();  
  9. 9   m_busset.MoveFirst();                                   //移动到首条记录  
  10. 10      while(!m_busset.IsEOF())                                //变量记录集  
  11. 11      {  
  12. 12          if(m_busset.m_ID_BUS==str)  
  13. 13          {  
  14. 14              m_busset.Delete();                          //删除数据  
  15. 15              MessageBox("删除成功!");  
  16. 16              …                                       //省略添加日志代码  
  17. 17              break;  
  18. 18          }  
  19. 19          else  
  20. 20              m_busset.MoveNext();                            //移动到下一条记录  
  21. 21      }  
  22. 22      m_busset.Close();  
  23. 23      CStationSet m_StationSet;                               //定义记录集对象  
  24. 24      if(!m_StationSet.IsOpen())                              //打开记录集  
  25. 25          m_StationSet.Open();  
  26. 26      m_StationSet.MoveFirst();                               //移动到首条记录  
  27. 27      while(!m_StationSet.IsEOF())                            //遍历记录集  
  28. 28      {  
  29. 29          if(m_StationSet.m_ID==str)  
  30. 30          {  
  31. 31              m_StationSet.Delete();  
  32. 32              m_StationSet.MoveNext();                        //记录后移  
  33. 33          }  
  34. 34          else  
  35. 35              m_StationSet.MoveNext();                        //记录后移  
  36. 36      }  
  37. 37      m_StationSet.Close();                                   //关闭记录集  
  38. 38      m_list.DeleteAllItems();                                //删除列表的所有项  
  39. 39      int i=0;  
  40. 40      if(!m_busset.IsOpen())  
  41. 41          m_busset.Open();  
  42. 42      m_busset.MoveFirst();  
  43. 43      while(!m_busset.IsEOF())                                //如果没到最后一条  
  44. 44      {  
  45. 45          m_list.InsertItem(i++,m_busset.m_ID_BUS);  
  46. 46          m_busset.MoveNext();                                //记录后移  
  47. 47      }  
  48. 48      m_busset.Close();  
  49. 49  }  

第3~5行代码实现了获取组合框中用户选项的线路。

第10~22行代码实现了线路的删除操作。

第23~36行代码实现了站点记录集中对应线路的删除操作。

第38~47行代码为列表控件数据的更新。

上述代码中首先获取用户选择的线路名称,通过遍历记录集查找到当前车次在记录集中的位置,删除该数据,在用户日志中记录用户的操作,由于车次的信息在其他的表中也存在,所以还应删除其他表中相关的信息。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.6.1 公交信息维护模块功能分析 下一篇7.6.5 整条线路维护的实现(1)

评论

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