楊 皓 許 倩
(北京科技大學機械工程學院 北京 100083)
《機械設(shè)計基礎(chǔ)》是材料、采礦、冶金等非機械類專業(yè)的專業(yè)必修課,它原本是從《機械設(shè)計》課程簡化而來。機械類的學生在學完《機械設(shè)計》后,一般會安排《課程設(shè)計》,這是機械設(shè)計課程的重要實踐教學環(huán)節(jié)。
課程設(shè)計的題目一般是一套簡單的整體設(shè)備設(shè)計,包括電動機、傳動裝置及執(zhí)行機構(gòu)。工科類專業(yè)的學生應(yīng)在本次課程設(shè)計中學習運用標準、規(guī)范、手冊、圖冊,查閱科技文獻,掌握基本的機械設(shè)計技能和獲取相關(guān)信息的能力。
在課程設(shè)計結(jié)束時,要求每個學生完成設(shè)備總裝配圖1張、部件裝配圖1張、零件工作圖若干張,設(shè)計計算說明書1份,學生完成了這些工作后,最后需要參加一個小小的答辯,幫助教師了解學生的機械設(shè)計水平。
一位教師通常帶2-3個班,大約60-90名同學,完成一次課程設(shè)計。因此教師需要準備若干題目,讓同學們參加答辯。答辯時題目應(yīng)從答辯題庫中隨機抽取3-5道,從學生的回答中往往能看出學生對《機械設(shè)計基礎(chǔ)》的掌握情況,堪比期末考試的準確度。
由于答辯往往集中在《課程設(shè)計》的最后兩天,每位同學的答辯時間都不可能很長,題目也不會太多,所以題目的隨機性非常重要。必須避免某位同學剛剛答辯完,下一位或幾位同學答辯時,所采用的題目與前一位同學相同的情形,所以題目的數(shù)量應(yīng)比較多,至少在100道以上。
為了達到這個目標,我專門用ppt中附帶的開發(fā)工具,開發(fā)了一個小程序。這個開發(fā)工具就是office自帶的VB程序設(shè)計功能,只要啟用宏即可使用。一般的office在安裝時都附帶了此功能,所以程序編寫調(diào)試成功后,在任意安裝了Office的電腦上像往常一樣打開ppt文件,就可以運行,唯一需要注意的是運行時,Offiice會給出提示:“是否啟用宏?”單擊“啟用”即可。
圖1:界面的布置
編寫這個程序時,首先要準備好答辯題庫,題庫中的題目可以隨時添加,這里采用了.txt文件類型,因為VB可以直接讀取它,該文件也可以用普通的文本文件編輯器編輯 (當然word也沒問題),非常方便(見圖1)。
接著就是ppt界面的布置。因為這個ppt的內(nèi)容是要展示給學生看的,所以pprt界面上只有三個對象:一個文本框,用于顯示學生要回答的題目,一個按鈕,用于單擊顯示下一題,另一個按鈕,用于啟動小程序。
界面布置好后,就需要先打開答辯題庫,將庫中的題目讀取到一個數(shù)組中。在此之前,需要先聲明一些變量,如下所示:
其中i是用于讀取文件中題目的計數(shù)整型變量,setTemp是用于讀取題目的字符串變量,irnd和n是用于循環(huán)的整型變量。
之后,打開題庫文件,用Do While語句把每一行(即每個問題)讀入setTemp,再將setTemp的內(nèi)容寫入一個全局數(shù)組strWord(i)中,最后給i加1,記錄目前讀入了多少道題。
Do While循環(huán)結(jié)束后,把i的值賦予一個全局變量lLen,表示題庫中一共有多少道題。代碼如下所示:
下面是這個小程序中最重要的部分,即打亂題目順序,讓每位同學看到的都是不同的題目。首先建立一個全局數(shù)組(因為“下一題”按鈕需要使用它),用For循環(huán)給每個數(shù)組元素賦值,該值與數(shù)組的下標相同,該數(shù)組稱為下標數(shù)組a(i),如下所示:
再次建立一個循環(huán),在循環(huán)中先把當前數(shù)組元素的值賦予一個中間整型變量t,再利用隨機函數(shù)給整型變量n生成一個隨機數(shù)并取整Fix(Rnd*lLen),隨機數(shù)的范圍是0-小于等于題目數(shù),所以需要加1,因為第一題的下標是1,而數(shù)組一般從0開始。把隨機數(shù)賦予題目下標數(shù)組a(i)的當前元素,(注意:因為前一個循環(huán)把下標賦予數(shù)組元素本身,所以第i個數(shù)組元素的值就是i),最后把中間整型變量t賦予隨機數(shù)組元素。整個過程相當于把當前數(shù)組元素與隨機數(shù)組元素的值對調(diào),如下所示:
執(zhí)行完這一步后,下標數(shù)組的值就是隨機的,且不會重復(fù)。也就是說,假定題庫中有100道題,程序執(zhí)行到這里,下標數(shù)組a(100)中各元素的值就是1、2、3......100,只是其順序是打亂的,且任何兩個數(shù)組元素的值都不相同。
接著要在單擊“下一題”時,顯示下一題,這比較簡單,先把下標數(shù)組中的最后一個元素賦予中間變量irnd,再從題目數(shù)組中讀取一道題,注意這不一定是最后一題,因為下標數(shù)組的值已經(jīng)被打亂,它可能是(1-題目總數(shù))之間的任何一道題。接著把題目總數(shù)減去1,讀取題目數(shù)組中的下一道題,其下標是下標數(shù)組中的倒數(shù)第二個元素,以此類推,就可以遍歷所有答辯題目。
為了避免題目數(shù)組中的所有題都已讀取出來,但使用者不知道,這里特意加了一個判斷語句,當題目總數(shù)小于等于0,就表示題目都已讀取完畢,此時顯示一個消息框,告知用戶,如圖2所示。
這時,若答辯未完成,可以點擊“確定”,再點擊“啟動”,就可以重新啟動程序,再點擊“下一題”,繼續(xù)答辯,只不過題目會與前面的重復(fù),但考慮到題庫中的題目個數(shù)超過100道,所以即使題目重復(fù)了,學生也看不太出來,因為大多數(shù)同學都沒有耐心從頭看到尾,最多看三五個人的答辯,所以不會影響答辯。
圖2:消息框
由上面的編程過程可知,在這個小程序中,有三個變量需要設(shè)置為全局的,如下所示:
其中strWord(200),是存儲題目的字符串數(shù)組,a(200)是存儲題目下標的數(shù)組,lLen是存儲題目個數(shù)的整型變量。這三個變量搜用于“啟動”和“下一題”按鈕。
今年和去年的《課程設(shè)計》答辯中,我都使用這個小程序給學生答辯,目前來看,程序運轉(zhuǎn)正常,學生回答的問題基本上沒有重復(fù)的。每位同學答辯時,我都允許其他同學在旁邊觀看,而不是把當前不答辯的同學趕出去。甚至今年在答辯時,直接在教室的講臺上進行,參加答辯的同學站在講臺上,在筆記本電腦上查看題目,回答問題;其他同學則坐在自己的座位上忙乎自己的事情,兩不干擾。
從今年的答辯情況來看,我正在考慮進行全班同學的集體答辯。因為題庫中的題目已經(jīng)積累了百多道,某同學可能碰巧知道某道題的答案,但其他題目就不一定知道了,若采用集體答辯的方式,則每位同學都可以聽到所有題目的答案。這對同學們掌握課程設(shè)計的內(nèi)容頗有好處。當然還需要考慮集體答辯的細節(jié),比如如何保證所有同學都有回答問題的機會,而不僅僅是幾個學霸回答問題;如何調(diào)動同學們回答問題的積極主動性等等。