家庭视频监控系统(16)

1.6.4 单元测试

开发完视频监控模块后,为了保证程序正常运行,一定要对其进行单元测试。单元测试在程序开发中非常重要,只有通过单元测试才能发现模块中的不足之处,从而及时地弥补程序中出现的错误。下面对视频监控模块中容易出现的错误进行分析。

实现视频监控系统中的云台控制和方向控制功能时,如果直接在“聚焦+”、“聚焦-”、“对焦+”、“对焦-”、“光圈+”、“光圈-”、“雨刷+”、“雨刷-”、“上”、“下”、“左”和“右”按钮的Click事件下编写代码,则运行程序时,例如单击“上”按钮,则云台一直向上转,但实际情况是:只有在用户按下“上”按钮时,云台才向上转,而当用户在“上”按钮上释放鼠标时,则云台停止转动。经过仔细分析,发现实现云台控制和方向控制功能的代码应该在各个按钮的MouseDown事件下编写,而停止云台转动的代码则应该在各个按钮的MouseUp事件下编写。

1.7 监控管理模块设计

1.7.1 监控管理模块概述

监控管理模块主要用来对系统登录用户进行管理,通过此模块,可以添加、修改和删除用户信息。监控管理模块的运行结果如图1.18所示。

1.7.2  监控管理模块技术分析

监控管理模块实现时,主要用到了ADO.NET技术操作数据库,下面进行详细介绍。

使用ADO.NET技术操作数据库时,主要用到了Connection、Command、DataAdapter和DataSet 4个对象。其中,Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句, DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable,而DataSet对象主要负责存取和更新数据。

例如,下面代码使用ADO.NET技术向Access 2003数据库中添加信息,并将数据库中最新的所有数据显示在ListView控件中。

string strDPath = Application.StartupPath;

string strDataSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 

    + strDPath.Substring(0, strDPath.LastIndexOf("\\")).Substring(0, strDPath.Substring(0, strDPath.LastIndexOf("\\")). LastIndexOf("\\")) + "\\DataBase\\db_VWMS.mdb";

OleDbConnection oledbcon = new OleDbConnection(strDataSource);

OleDbCommand oledbcom= new OleDbCommand("insert into tb_admin (name,pwd) values('" + txtName.Text + "','" + txtPwd.Text + "')", oledbcon);

oledbcon.Open();

oledbcom.ExecuteNonQuery();

oledbcon.Close();

OleDbDataAdapter oledbda = new OleDbDataAdapter(strCon, oledbcon);

DataSet ds = new DataSet();

oledbda.Fill(ds, tbname);

foreach (DataRow dr in ds.Tables[0].Rows)

{

    ListViewItem lvItem = new ListViewItem(dr[0].ToString(), 0);

    lvItem.SubItems.Add(dr[0].ToString());

    lview.Items.Add(lvItem);

}

1.7.3  监控管理模块实现过程

  本模块使用的数据表:tb_admin

监控管理模块的具体实现步骤如下:

(1)新建一个Windows窗体,命名为frmSetMonitor.cs,主要用于实现系统用户的管理功能。该窗体用到的主要控件如表1.17示。

(2)frmSetMonitor.cs代码文件中,实例化公共类DataOperate的一个对象,用来调用其中的方法,然后实例化一个DataSet对象,用来作为数据集。关键代码如下:

例程29  代码位置:光盘\TM\01\VWMS\VWMS\frmSetMonitor.cs

DataOperate dataoperate = new DataOperate();

DataSet ds;

frmSetMonitor.cs代码文件中自定义了一个lviewBind方法,该方法用来对ListView控件进行数据绑定,以显示数据库中已经存在的用户。lviewBind方法实现代码如下:

例程30  代码位置:光盘\TM\01\VWMS\VWMS\frmSetMonitor.cs

 public void lviewBind()

 {

     lview.Items.Clear();

     ds = dataoperate.getDs("select name from tb_admin", "tb_admin");

u   foreach (DataRow dr in ds.Tables[0].Rows)

     {

v    ListViewItem lvItem = new ListViewItem(dr[0].ToString(), 0);

w        lvItem.SubItems.Add(dr[0].ToString());

x        lview.Items.Add(lvItem);

     }

 }

U 代码贴士

u DataRow:该类表示DataTable中的一行数据。

v ListViewItem:该成员表示ListView控件中的项。

w SubItems:该属性用来获取包含该项的所有子项的集合。

x Add():该方法用来向ListView控件中添加项。

frmSetMonitor窗体加载时,调用自定义方法lviewBind()对ListView控件进行数据绑定,显示数据库中已经存在的用户。frmSetMonitor窗体的Load事件的代码如下:

例程31  代码位置:光盘\TM\01\VWMS\VWMS\frmSetMonitor.cs

private void frmSetMonitor_Load(object sender, EventArgs e)

{

    lviewBind();

}

 

读书导航