7.6.5 整条线路维护的实现(1)
整条线路的维护包括添加一条线路和删除一条线路,先介绍添加一条线路的实现。添加一个对话框资源并将ID改为IDD_ADD_ROADWAY,添加如图7-25所示的控件。
|
| 图7-25 添加线路界面 |
双击对话框界面为对话框资源创建一个新类AddOneRoadway,通过类向导为控件关联相关的变量。给【确定】按钮添加消息响应函数,该函数实现线路的添加操作。函数中代码如下:
代码位置:见光盘中本章源代码的AddOneRoadway类。
- 1 void AddOneRoadway::OnOk()
- 2 {
- 3 UpdateData(true); //数据的更新
- 4 if(!firstflag) //是否第一次添加
- 5 {
- 6 if(m_roadway!=""&&m_station!=""&&m_startstation!=""&&
- 7 m_endstation!=""&&m_sendtime!=""&&m_stoptime!="") //条件的判断
- 8 {
- 9 stationflag=!stationflag;
- 10 CBusSet m_busset; //定义记录集对象
- 11 if(!m_busset.IsOpen()) //打开记录集
- 12 m_busset.Open();
- 13 m_busset.AddNew(); //添加新的记录
- 14 m_busset.m_ID_BUS=m_roadway; //各字段赋值
- 15 m_busset.m_BEGIN=m_startstation;
- 16 m_busset.m_END=m_endstation;
- 17 m_busset.m_AMTIME=m_sendtime;
- 18 m_busset.m_PMTIME=m_stoptime;
- 19 m_busset.Update(); //记录的更新
- 20 m_busset.Requery();
- 21 m_busset.Close(); //关闭记录集
- 22 CStationSet m_StationSet; //定义记录集对象
- 23 if(!m_StationSet.IsOpen())
- 24 m_StationSet.Open();
- 25 m_StationSet.AddNew(); //添加新的记录
- 26 m_StationSet.m_ID=m_roadway; //记录的赋值
- 27 m_StationSet.m_STATION=m_station;
- 28 m_StationSet.Update();
- 29 m_StationSet.Requery();
- 30 m_StationSet.Close();
- 31 m_station="";
- 32 UpdateData(false); //更新数据
- 33 firstflag=true;
- 34 CWnd *pwnd;
- 35 pwnd=GetDlgItem(IDC_EDIT_ROADWAY); //获取控件的指针
- 36 pwnd->EnableWindow(false); //禁用控件
- 37 pwnd=GetDlgItem(IDC_EDIT_START);
- 38 pwnd->EnableWindow(false);
- 39 pwnd=GetDlgItem(IDC_EDIT_SEND);
- 40 pwnd->EnableWindow(false);
- 41 pwnd=GetDlgItem(IDC_EDIT_END);
- 42 pwnd->EnableWindow(false);
- 43 pwnd=GetDlgItem(IDC_EDIT_STOP);
- 44 pwnd->EnableWindow(false);
- 45 GetDlgItem(ID_OK)->SetFocus();
- 46 }
- 47 else
- 48 MessageBox("信息不能为空!"); //消息提示
- 49 }
第4~32行代码为新记录的添加。
第33~45行代码实现了部分控件的禁用。
上述代码中通过调用函数AddNew()将用户输入的数据添加到数据库中,这样添加的线路的信息只有起始站和终点站两个站点,这时禁用除了站点外的其他编辑框。上述代码实现了第一次添加线路时的操作。下面代码实现了当线路数据表中有数据时的对应操作,代码如下:
- 50 else
- 51 {
- 52 UpdateData(true); //数据的更新
- 53 CStationSet m_StationSet; //定义记录集
- 54 if(!m_StationSet.IsOpen()) //打开记录集
- 55 m_StationSet.Open();
- 56 m_StationSet.MoveLast(); //移动到最后一条记录
- 57 m_StationSet.AddNew(); //添加新的记录
- 58 m_StationSet.m_ID=m_roadway;
- 59 m_StationSet.m_STATION=m_station;
- 60 m_StationSet.Update();
- 61 m_StationSet.Requery();
- 62 m_StationSet.Close(); //关闭记录集
- 63 m_station="";
- 64 UpdateData(false);
- 65 GetDlgItem(IDC_EDIT_STATION)->SetFocus(); //设置焦点
- 66 addroadflag=true;
- 67 }
- 68 }