设为首页 加入收藏

TOP

7.6.4 单个站点维护的实现(2)
2013-10-07 14:53:04 来源: 作者: 【 】 浏览:59
Tags:7.6.4 单个 站点 维护 实现

7.6.4  单个站点维护的实现(2)

第6~14行代码为删除相应的记录。

第16~29行代码将用户的操作添加到日志中。

删除站点的信息时注意要删除的是某个车次的站点的信息,而不是所有车次的站点,所以删除记录时首先获取车次名称,然后获取站点的名称,通过遍历记录集查找到相应的信息,调用函数Delete()删除记录。

要实现单个站点的修改,再添加一个对话框资源,将ID改为IDD_CHANGE_STATION,添加如图7-24所示的控件。

 
图7-24  修改站点信息界面

双击对话框界面为对话框资源创建一个新类ChangeStation,通过类向导为控件关联相关的变量,并给对话框添加WM_INITDIALOG初始化消息,该消息函数中代码如下:

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

  1. 1  BOOL ChangeStation::OnInitDialog()  
  2. 2  {  
  3. 3   CDialog::OnInitDialog();  
  4. 4   CBusSet m_busset;                                   //定义记录集对象  
  5. 5   int i=0;                                                //定义整型变量  
  6. 6   if(!m_busset.IsOpen())                              //打开记录集  
  7. 7       m_busset.Open();  
  8. 8   m_busset.MoveFirst();                                   //移动到首条记录  
  9. 9   while(!m_busset.IsEOF())                                //遍历记录集  
  10. 10      {  
  11. 11          m_roadway.InsertString(i++,m_busset.m_ID_BUS);      //插入数据到下拉列表框  
  12. 12          m_busset.MoveNext();  
  13. 13      }  
  14. 14      m_roadway.SetCurSel(0);                             //设置选中项  
  15. 15      m_busset.Close();                                       //关闭记录集  
  16. 16      RECT rect;  
  17. 17      m_list.GetWindowRect(&rect);                            //区域的获取  
  18. 18      int wid=rect.right-rect.left;  
  19. 19      m_list.InsertColumn(0,"车次",LVCFMT_CENTER,wid/3);  
  20. 20      m_list.InsertColumn(1,"站点",LVCFMT_CENTER,2*wid/3);  
  21. 21      CString str;                                            //定义字符串变量  
  22. 22      m_roadway.GetLBText(0,str);                         //获取文本  
  23. 23      i=0;  
  24. 24      CStationSet m_StationSet;                           //定义记录集对象  
  25. 25      if(!m_StationSet.IsOpen())                              //打开记录集  
  26. 26          m_StationSet.Open();  
  27. 27      m_StationSet.MoveFirst();  
  28. 28      while(!m_StationSet.IsEOF())                            //遍历记录集  
  29. 29      {  
  30. 30          if(m_StationSet.m_ID==str)  
  31. 31          {  
  32. 32              m_list.InsertItem(i,str);                       //插入数据到列表中  
  33. 33              m_list.SetItemText(i++,1,m_StationSet.m_STATION);  
  34. 34          }  
  35. 35          m_StationSet.MoveNext();  
  36. 36      }  
  37. 37      m_StationSet.Close();                                   //关闭记录集  
  38. 38      m_list.SetExtendedStyle(WS_CHILD|WS_CLIPSIBLINGS|WS_EX_TOOLWINDOW|  
  39. 39          WS_BORDER|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);   //修改其样式  
  40. 40      return TRUE;  
  41. 41  }  

第6~14行代码为添加数据到组合框中。

第17~20行代码为设置列表控件的初始信息。

第25~37行代码将初始数据添加到列表控件中。

上述代码完成初始化工作,首先填充组合框,然后初始化列表控件,将组合框中车次经过的站点显示在列表控件中。

给【确定】按钮添加消息响应函数,实现修改选择的站点。同时要把操作写入日志中。其中的代码如下:

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

  1. 1  void ChangeStation::OnChangeStation()  
  2. 2  {  
  3. 3   int i=0;                                                //定义整型变量  
  4. 4   CString str1,str;                                       //定义字符串变量  
  5. 5   m_roadway.GetLBText(m_roadway.GetCurSel(),str1);        //获取文本  
  6. 6   CDatabase *m_datebase;  
  7. 7   m_datebase=new CDatabase;                               //初始化  
  8. 8      CStationSet *m_Set;  
  9. 9   m_Set=new CStationSet(m_datebase);                      //数据库与记录集关联  
  10. 10      m_Set->Open();                                      //打开记录集  
  11. 11      str.Format("delete from STATION where ID='%s'",str1);   //设置SQL语句  
  12. 12      m_datebase->ExecuteSQL(str);                            //执行SQL语句  
  13. 13      m_Set->Requery();                                       //刷新  
  14. 14      CStationSet m_StationSet;  
  15. 15      if(!m_StationSet.IsOpen())  
  16. 16          m_StationSet.Open();  
  17. 17      m_StationSet.AddNew();                              //添加新的记录  
  18. 18      do  
  19. 19      {  
  20. 20          m_StationSet.m_ID=m_list.GetItemText(i,0);  
  21. 21          m_StationSet.m_STATION=m_list.GetItemText(i++,1);  
  22. 22      }while(i<m_list.GetItemCount());  
  23. 23      m_StationSet.Update();                              //更新数据  
  24. 24      m_StationSet.Requery();  
  25. 25      CMapPublicApp *app=(CMapPublicApp *)AfxGetApp();        //获取应用类的指针  
  26. 26      CAction_Time_Set *m_ActionSet;  
  27. 27      CDatabase *db;  
  28. 28      db=new CDatabase;  
  29. 29      m_ActionSet=new CAction_Time_Set(db);  
  30. 30      CString strSql;  
  31. 31      CTime time=CTime::GetCurrentTime();                 //获取当前的系统时间  
  32. 32      CString strtime=time.Format("%Y-%m-%d %H:%M:%S");  
  33. 33      m_ActionSet->Open();  
  34. 34      CString straction="修改一个站点";  
  35. 35      strSql="insert into Action_Log(USER_ID,ACTION,COME_LEAVE_TIME)  
  36. 36          values('" +app->m_User_ID+"','"+straction+"','"+strtime+"')";  
  37. 37      db->ExecuteSQL(strSql);                             //执行SQL语句  
  38. 38      m_ActionSet->Requery();  
  39. 39      m_ActionSet->Close();  
  40. 40      AfxMessageBox("修改记录成功!");  
  41. 41      m_StationSet.Close();  
  42. 42  }  

第6~12行代码为删除以前站点的信息。

第14~24行代码为添加新的站点信息到数据表中。

第25~39行代码将用户的操作添加到日志中。

上述代码中通过构造SQL语句删除线路的信息,然后获取列表中的所有数据,将修改后的站点信息重新添加到数据库中,最后完成用户日志的添加。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.6.2 公交信息维护模块技术分析 下一篇7.6.4 单个站点维护的实现(1)

评论

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