摘 要:為了阻止學生在上計算機實驗課時做與學習無關的事情,本文設計出計算機實驗教學監控系統,它可以自動對學生上機行為進行監控,提高學生的學習效率。經過試驗對比,在應用該監控系統后,學生的上機行為得到了有效的限制,機房產生的流量大幅減少,學生對計算機操作的能力有顯著的提高。
關鍵詞:實驗教學 行為監控 機房流量 監控系統
中圖分類號:G71文獻標識碼:A 文章編號:1674-098X(2013)04(b)-0177-03
隨著計算機及互聯網的快速發展和普及,為了適應社會需求,幾乎所有的高校都將計算機基礎課作為全校各專業學生必修的公共課。由于計算機是一門實踐性很強的學科,所以計算機實驗教學部分就成為計算機基礎教學中的重點,其教學效果直接影響著學生對計算機的應用。在實驗教學過程中,部分學生往往不按照要求進行練習,經常做與實驗無關的事情,如看視頻、聊QQ、打游戲等,既影響了學生對計算機知識的掌握、分散教師上課的精力,又給校園網絡帶來很大的負擔。針對這種狀況,該文設計出計算機實驗教學監控系統,它可以自動對學生上機行為進行監控,提高學生的學習效率。
1 需求分析
學生的需求:在上機實驗過程中,部分學生的自我控制力差,他們有學習的意愿,但控制不住自己去做與學習無關的事,甚至有的學生在無法上網的情況下玩紙牌等單機版游戲。這就需要一個監控系統對學生在上機過程中用到的進程進行監控,發現游戲、視頻播放等進程就自動將其強制關閉[1]。
老師的需求:教師在上課過程中,對學生進行上機指導的同時,還要花費很大的精力監督學生的上機行為,這影響了教學效果。目前已有的監控系統大都通過教師機監控學生的上機情況,教師查看后采取相應處理,雖然能起到一定的作用,但是仍不能保證教師將全部精力放到對學生的實驗指導上。這就需要一個監控系統在上課過程中不需要教師的參與,就能夠自動地對學生的上機行為進行監控,只需要該系統在課前進行簡單地設置。
網絡管理的需求:在學生實驗操作過程中,不可避免地用到網絡,如果不對學生的上網行為進行控制,學生就會做與學習無關的事情,如看視頻、打游戲等,而這些應用都是非常消耗網絡帶寬資源的。據統計,我校的機房在同時使用的情況下,機房占用的帶寬達到學校總帶寬的70%,嚴重影響了學校教職工正常的網絡辦公。針對這種情況,如果僅限制流量,又會導致機房網速過慢,達不到教學的效果,這就需要對占用帶寬大的進程進行監控。
2 設計實現
2.1 功能分析
針對以上需求,監控系統應具有以下功能:
①監控進程設置 教師對需要監控的進程進行設置,包括進程名、運行的時間段等。并通過增加和刪除實現對多個進程的管理。
②進程監控 對教師設置的進程進行監控,一旦發現有設置的進程運行,立即將其關閉。
③自我保護 保證進程監控系統能夠正常地運行,不被學生關閉。
2.2 設計實現
考慮到便于教師的管理,我們采用c/s模式的系統結構,如圖1所示。
由圖1可知,整個系統分為教師機端程序和學生機端程序兩部分,這兩部分程序都是建立在網絡通信技術基礎上。教師機端程序主要實現對要監控的進程進行設置,并向學生機端程序發送相關進程的信息。學生機端程序主要是接收教師機端程序發送的相關進程信息,運行自身的監控功能,同時保證自身程序不被學生關閉。
2.2.1 教師機端部分
教師機端部分主要負責對學生機運行的進程進行設置,如圖2所示。
設置完成后,利用winsock網絡通信技術將進程信息發送給學生機端程序[2-3]。
Winsock編程主要有以下步驟:
(1)初始化winsock 主要是利用WSAStartup函數對winsock資源進行初始化。
(2)建立套接字并綁定。
(3)建立socket連接。
(4)通過套接字進行網絡通信。
(5)關閉套接字 調用WSACleanun函數釋放Winsock資源。
2.2.2 學生機端部分
在學生機端部分,程序隨電腦主機的啟動而啟動,主要是通過注冊表編程來實現。系統啟動后不斷地監聽教師機端程序發來的進程信息,如果收到信息,立即將信息寫入到數據表中。
進程監控
系統運行后監控進程立即工作,它不斷地檢測非法進程的運行狀況,一旦發現非法進程,就立即關閉。學生機端部分功能如圖3所示。
執行過程如下:
(1)定時獲取計算機系統中進程的快照[4-6],同時獲取系統快照中的第一個進程信息。
(2)判斷獲取的信息中的進程名是否等于要監控的進程名,如果等于,轉步驟(3);否則,轉步驟(4)。
(3)關閉進程。
(4)獲得系統快照中的下一個進程的信息,轉步驟(2)。
主要源代碼如下:
bStatus=Process32First(hSnapShot,prosInfo);
while (bStatus)
{
if(prosInfo.szExeFile==thunder.exe)
{
dwProcessID=prosInfo.th32ProcessID;
hProcess=
::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);
::TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
MessageBox(L”該進程已被禁止運行,將立刻被關閉!\");
}
bStatus = Process32Next(hSnapShot, prosInfo);
}
進程保護
學生端程序自我保護主要有兩個功能,一是保護監控進程不被關閉,是通過看守進程來實現。二是保護看守進程不被關閉,此功能類似于木馬,具有很強的生存能力,除非開發者留后門,否則用戶無法將其關閉。
看守進程具體實現代碼如下:
szCommandLine[]=TEXT(\"D:\\Process\\debug\\Process.exe\");
do{
if(!CreateProcess( NULL,szCommandLine,NULL,NULL,FALSE,0,NULL,NULL,si,pi)){
MessageBox(L\"進程創建失敗!\");
}
WaitForSingleObject( pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}while(TRUE);
3 測試
3.1 功能測試
以監控迅雷應用程序(thunder.exe)和qq應用程序(qq.exe)為例,首先,在教師機端設置需要監控的程序,如圖4所示:
設置完成后,學生機端收到進程信息,開始監控禁止運行的程序,如果發現有禁止運行的程序,將立即關閉。如圖5所示。
3.2 效果測試
為了驗證本系統在計算機實驗教學中起到的效果,我們以2012級康復1班為例,將該班分兩組,每組25人,分組1使用該監控系統,分組2不使用監控系統。這兩組均采用相同的教學方法和教學過程,兩組的實驗考核成績對比如表1所示。
Word、excel、ppt是計算機實驗教學中的重點,因此,我們以這三個實驗為例進行對比,從上表中可知,采用本監控系統的分組1的通過率明顯高于沒有采用監控系統的分組2,分組1所在的機房產生的流量明顯低于分組2產生的流量,該系統達到了預期的目的。
4 結語
為了提高計算機實驗教學的教學效率,本文研究并實現了計算機實驗教學監控系統,主要從以下幾個方面進行研究:(1)分析了現有的監控系統,針對我校計算機教學的實際情況,提出了本監控系統的主要功能及系統結構;(2)認真研究了實現本系統所需要的技術,包括c++、定時器、鉤子、網絡編程等。(3)實現了本系統的主要功能,并通過測試。并將該系統應用到實際教學中,從應用效果看,該系統在實驗教學過程中不需要教師的參與即可有效地對學生的上機行為進行監控,大大提高了學生的學習效率,具有較強的實用性和較高的推廣價值。
參考文獻
[1] 王明福,齊治文.多媒體網絡教學監控系統的設計與實現[J].計算機工程,2010,36(7):291-293.
[2] 顧尚杰.計算機通信網基礎[M].北京:電子工業出版社,2001:135-138.
[3] 甘波,蘭柏.語音室監控系統關鍵技術研究[J].信息與電腦,2012,6(2):38-39.
[4] 張安琳,黃道穎,李潢琦.Windows程序的基本框架和消息機制[J].電腦開發與應用,2001,14(8):27-30.
[5]Jeffrey Richter,Christophe Nasarre.Windows via C/C++[M]. Washington:Microsoft Press ,2007:56-70.
[6]楊曉鵬.Visual C++7.0使用編程技術[M].北京:中國水利水電出版社,2002:38-40.