|
系列文章導航:
基于.NET平臺的Windows編程實戰(二)—— 需求分析與數據庫設計
基于.NET平臺的Windows編程實戰(四)—— 數據庫操作類的編寫
基于.NET平臺的Windows編程實戰(五)—— 問卷管理功能的實現
基于.NET平臺的Windows編程實戰(六)—— 題目管理功能的實現
申明:本系列課程是專為新手們寫來入門練習用的,目的是想通過一個完整的問卷調查管理系統的案例開發來讓新手們了解、加深或是熟悉軟件項目的開發流程及在.NET平臺上使用VS2005和C# 進行Windows方面的編程;在整個課程的設計上,我盡量避開或是根本不討論底層的以及性能優化等方面的東西,故高手完全可以無視本系列課程。
今天下班回來前查看了下早上放出去的第五課的課程,看到一朋友的評論,說實話當時不好受,想想自己每晚寫課程到深夜,竟然被人說成白癡文章!于是帶著幾分沖動草草的回復之后,便帶著疑惑與思考回家了。剛才重新看了下昨晚寫的第五課的課程,果真發現了不少“白癡”的地方:概念模糊,思路不明,無整體模型,雜亂無章…… 如此之文章,新手如何看懂?如何練習?……自責、自問、自思之后,我決定改變一下后面課程的寫作方式,即先寫設計思路[流程圖],再動手實驗并講解一些相關的實現原理[挑幾個比較有代表性的地方進行講解],之后再把源碼放出來供大家參考練習;這樣,我想對新手來說應該會更加容易理解一些吧。當然,在這里要感謝一下那位發表評論的朋友,因為是他(她)提醒了我,并使我重新去思考整個課程的設計,在此我向這位朋友說聲:謝謝!同時也希望他(她)以及更多的朋友能在以后的課程中提出更多的建議、指導以及批評 ^_^ 我將萬分感謝!你們的支持是我最大的動力!
本課將帶領大家一起來實現題目管理:添加、編輯、查看、刪除、存入題庫;以及題庫管理:添加、編輯、查看、刪除、插入到問卷等功能。
一、設計思路
我們知道:一份問卷是由若干條不同的題目組合而成的,而這些題目又是由用戶一條一條添加進去的。那么我們來分析一下:假如需要對A區域做一份問卷調查試題,且這份問卷要求包含100條題目,于是我們通過系統[假設這個系統只具有添加/編輯/刪除/預覽問卷及添加題目的功能]創建好一份名為“A區域試題”的問卷,并向此問卷里輸入添加了100條的題目;幾天后,我們發現這份問卷有些地方做的不好,需要進行修改,于是我們為了方便操作,便給系統增加了題目編輯、檢查[查看]、排序、刪除等題目管理功能;再過了幾天后,我們又需要對B區域及C區域各做一份包含100條試題的問卷,于是我們打開原來的系統,并創建了二份名為“B區域試題”與“C區域試題”的問卷,但當我們往里面添加題目的時候,我們發現三份問卷有許多相同或相似的題目,于是我們就會想:如果有一個題庫能將這些相同或相似的題目存起來,那么當我們需要創建新的問卷的時候,我們直接從題庫里面把題目插入進去不就可以了嗎?多方便呀!于是我們就有了建立一個題庫來存放題目的想法了,并且這個題目應該具有編輯、查看、插入到問卷、刪除等功能……
好,現在我們來設計一下流程圖:
圖6-1
簡單的解釋一下添加試題的過程:
用戶向問卷中添加題目時,先在所要添加的問卷中查找是否已經存在了該題,如果存在了則提示,如果不存在,則去題庫中進行查找是否存有該題了,如存在則提示從題庫中插入該題,
否則直接添加進問卷中,并提示是否將該存入到題庫中去。
到這里相信大家應該明白或是大致知道了整個的設計思路了吧!下面我們就來動手做做吧。
二、動手實驗及相關原理講解
下面我挑選添加題目、排序以及窗口間的相互關聯中的部分設置或代碼來進行動手實驗及原理的講解,其余的請大家自行下載本課程源碼參考練習。
首先,我們來創建一個添加題目的窗口(創建方法請參見前面的課程),命名為 “TitleAdd”,并使其繼承于“SurveyWin”母窗口,方法為將:
public partial class TitleAdd :From
改成:
public partial class TitleAdd :SurveryWin
并將其設置成如下圖6-2所示[具體的屬性設置請參見本課程源碼]:
圖6-2
其次,我們給這個窗口中的輸入題目標題文本框添加了一個鼠標離開事件,以便提示用戶所輸入的題目是否已經存在于本問卷或題庫中了。
其實現原理是這樣的:當用戶往標題文本框中輸入標題后,鼠標離開其文本框時,將用戶所輸入的標題作為條件在其問卷與題庫中進行相似題目的查詢,
如查出則給出相關提示,否則作為新題添加進問卷或題庫中。其實現的代碼如下所示:
private void TRichTitleText_MouseLeave(object sender, EventArgs e)
{
if (TRichTitleText.Text.Trim() != "")//判斷是否為空,如不為空,則執行如下操作
{
//在問卷與題庫中分別進行查找,看是否已經存在了?
string stSql = "Select Count(*) From Lj_TitleStorage Where TitleSt_Title like '" + TRichTitleText.Text.Trim() + "'";
string tcontent = TRichTitleText.Text.Trim() + "(" + TCombBtn.SelectedItem.ToString() + ")";
string istSql = "Select Count(*) From Lj_Title Where Title_Content like '" + tcontent + "'";
if (dboperate.ExcuteScrSql(istSql) > 0) //如果已經存在于問卷中了,則執行如下操作
{
IsStorageCoMBox.SelectedIndex = 1;
IsStorageCoMBox.Enabled = false;//將是否存入題庫設為不可選擇
TAddBtn.Enabled = false;//將添加按鈕設為不可用
IsStorageLab.Visible = true;//顯示提示標簽
IsStorageLab.Text = "*該題已在此問卷中存在!請重新輸入!";
}
else if (dboperate.ExcuteScrSql(istSql) == 0 && dboperate.ExcuteScrSql(stSql) > 0)//
如果已經存在于題庫中了,則執行如下操作
{
IsStorageCoMBox.SelectedIndex = 1;
IsStorageCoMBox.Enabled = false;
IsStorageLab.Visible = true;
IsStorageLab.Text = "*題庫中已經存在該題了!";
LookStLinkLab.Enabled = true; //將"點擊查看"按鈕設為可用可見,以便用戶點擊連接到題
庫中題目進行查看或插入操作
LookStLinkLab.Visible = true;
}
else
{
IsStorageCoMBox.SelectedIndex = 0;
IsStorageCoMBox.Enabled = true;
TAddBtn.Enabled = true;
IsStorageLab.Visible = false;
LookStLinkLab.Enabled = false;
LookStLinkLab.Visible = false;
}
}
}
NET技術:基于.NET平臺的Windows編程實戰(六)—— 題目管理功能的實現,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。