7.5.3 车次查询的实现
车次的查询是在主界面的右上角Tab控件中显示的,关于Tab控件的使用,在前面的章节中已经有了很详细的介绍,在此不做过多的说明。在Tab控件上有3个标签,分别为车次查询、车站查询和公交换乘。下面介绍车次的查询。
添加一个对话框资源,将ID改为IDD_ROADWAY,在对话框上添加如图7-16所示的控件。通过类向导更改控件的ID和为控件添加相应的变量,读者可以参考光盘中的源代码。修改对话框的属性,如图7-17所示。
|
| 图7-16 车次查询界面设计 |
|
| 图7-17 对话框属性界面 |
注意:如果想要把对话框作为Tab控件的一个属性页,则需把对话框的Style改为Child。
在对话框界面上的空白区域双击,进入添加类界面。为对话框添加一个新类CRoadView。给【查询】按钮添加消息响应函数,相关代码如下:
代码位置:见光盘中本章源代码的CRoadView类。
- 1 void CRoadView::OnButton()
- 2 {
- 3 UpdateData(true); //更新数据
- 4 bool flag=false; //定义布尔型的变量
- 5 m_show.Empty(); //将字符串清空
- 6 CStationSet m_pStationSet; //定义一个记录集对象
- 7 m_pStationSet.Open(); //打开记录集
- 8 m_pStationSet.MoveFirst(); //移动到首条记录
- 9 while(!m_pStationSet.IsEOF()) //如果记录没有到末尾
- 10 {
- 11 if(m_pStationSet.m_ID==m_id) //查找匹配的数据
- 12 {
- 13 m_show+=m_pStationSet.m_STATION; //将字符串累加
- 14 m_show+=" -> ";
- 15 flag=true; //改变标记的值
- 16 }
- 17 m_pStationSet.MoveNext(); //移动到下一条记录
- 18 }
- 19 if(!flag) //如果没有找到数据
- 20 {
- 21 MessageBox("你输入的车次不正确!"); //弹出提示信息
- 22 m_id.Empty(); //清空编辑框
- 23 CWnd *pwnd; //定义窗口类的指针
- 24 pwnd=GetDlgItem(IDC_STATION_ID); //获取控件的指针
- 25 pwnd->SetFocus(); //设置控件的焦点
- 26 }
- 27 UpdateData(false); //更新数据
- 28 }
第6~18行代码为遍历数据表从数据表中查询需要的数据。
第19~26行代码为当所要查找的数据不存在时所做的一些工作。
上述代码首先获取输入的车次名称,然后遍历记录集查询所有的车次,选择出与输入车次相同的车次,获取该车次的详细站点信息,车站间以"->"为间隔,将所有的车站信息显示在编辑框中。