正文

家庭視頻監(jiān)控系統(tǒng)(16)

C#項目開發(fā)案例全程實錄(第2版) 作者:明日科技


1.6.4 單元測試

開發(fā)完視頻監(jiān)控模塊后,為了保證程序正常運行,一定要對其進行單元測試。單元測試在程序開發(fā)中非常重要,只有通過單元測試才能發(fā)現(xiàn)模塊中的不足之處,從而及時地彌補程序中出現(xiàn)的錯誤。下面對視頻監(jiān)控模塊中容易出現(xiàn)的錯誤進行分析。

實現(xiàn)視頻監(jiān)控系統(tǒng)中的云臺控制和方向控制功能時,如果直接在“聚焦+”、“聚焦-”、“對焦+”、“對焦-”、“光圈+”、“光圈-”、“雨刷+”、“雨刷-”、“上”、“下”、“左”和“右”按鈕的Click事件下編寫代碼,則運行程序時,例如單擊“上”按鈕,則云臺一直向上轉(zhuǎn),但實際情況是:只有在用戶按下“上”按鈕時,云臺才向上轉(zhuǎn),而當(dāng)用戶在“上”按鈕上釋放鼠標(biāo)時,則云臺停止轉(zhuǎn)動。經(jīng)過仔細分析,發(fā)現(xiàn)實現(xiàn)云臺控制和方向控制功能的代碼應(yīng)該在各個按鈕的MouseDown事件下編寫,而停止云臺轉(zhuǎn)動的代碼則應(yīng)該在各個按鈕的MouseUp事件下編寫。

1.7 監(jiān)控管理模塊設(shè)計

1.7.1 監(jiān)控管理模塊概述

監(jiān)控管理模塊主要用來對系統(tǒng)登錄用戶進行管理,通過此模塊,可以添加、修改和刪除用戶信息。監(jiān)控管理模塊的運行結(jié)果如圖1.18所示。

1.7.2  監(jiān)控管理模塊技術(shù)分析

監(jiān)控管理模塊實現(xiàn)時,主要用到了ADO.NET技術(shù)操作數(shù)據(jù)庫,下面進行詳細介紹。

使用ADO.NET技術(shù)操作數(shù)據(jù)庫時,主要用到了Connection、Command、DataAdapter和DataSet 4個對象。其中,Connection對象主要負責(zé)連接數(shù)據(jù)庫,Command對象主要負責(zé)生成并執(zhí)行SQL語句, DataAdapter對象主要負責(zé)在Command對象執(zhí)行完SQL語句后生成并填充DataSet和DataTable,而DataSet對象主要負責(zé)存取和更新數(shù)據(jù)。

例如,下面代碼使用ADO.NET技術(shù)向Access 2003數(shù)據(jù)庫中添加信息,并將數(shù)據(jù)庫中最新的所有數(shù)據(jù)顯示在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  監(jiān)控管理模塊實現(xiàn)過程

  本模塊使用的數(shù)據(jù)表:tb_admin

監(jiān)控管理模塊的具體實現(xiàn)步驟如下:

(1)新建一個Windows窗體,命名為frmSetMonitor.cs,主要用于實現(xiàn)系統(tǒng)用戶的管理功能。該窗體用到的主要控件如表1.17示。

(2)frmSetMonitor.cs代碼文件中,實例化公共類DataOperate的一個對象,用來調(diào)用其中的方法,然后實例化一個DataSet對象,用來作為數(shù)據(jù)集。關(guān)鍵代碼如下:

例程29  代碼位置:光盤\TM\01\VWMS\VWMS\frmSetMonitor.cs

DataOperate dataoperate = new DataOperate();

DataSet ds;

frmSetMonitor.cs代碼文件中自定義了一個lviewBind方法,該方法用來對ListView控件進行數(shù)據(jù)綁定,以顯示數(shù)據(jù)庫中已經(jīng)存在的用戶。lviewBind方法實現(xiàn)代碼如下:

例程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中的一行數(shù)據(jù)。

v ListViewItem:該成員表示ListView控件中的項。

w SubItems:該屬性用來獲取包含該項的所有子項的集合。

x Add():該方法用來向ListView控件中添加項。

frmSetMonitor窗體加載時,調(diào)用自定義方法lviewBind()對ListView控件進行數(shù)據(jù)綁定,顯示數(shù)據(jù)庫中已經(jīng)存在的用戶。frmSetMonitor窗體的Load事件的代碼如下:

例程31  代碼位置:光盤\TM\01\VWMS\VWMS\frmSetMonitor.cs

private void frmSetMonitor_Load(object sender, EventArgs e)

{

    lviewBind();

}

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號