蘇新梅
(烏魯木齊職業(yè)大學(xué) 基礎(chǔ)教育部,新疆 烏魯木齊 830001)
網(wǎng)絡(luò)選修課程是高校學(xué)生文化素質(zhì)和綜合能力的體現(xiàn),目前,高等本科院校和高職院校都開設(shè)了網(wǎng)絡(luò)選修課程,作為綜合教育選修課的重要補(bǔ)充。各互聯(lián)網(wǎng)教育運(yùn)營(yíng)商,都提供了海量的豐富的網(wǎng)絡(luò)課程資源,幫助各高校的學(xué)子們實(shí)現(xiàn)跨校課程共享和學(xué)分互認(rèn),完成跨校選課修讀,并獲得學(xué)分。網(wǎng)絡(luò)選修課的在線學(xué)習(xí)方式靈活多樣,宿舍、教室、操場(chǎng)、居家等成為重要的選修課學(xué)習(xí)場(chǎng)所,學(xué)生通過學(xué)習(xí)所選課程視頻完成相應(yīng)作業(yè)、提問、討論、考試等環(huán)節(jié)便可獲取學(xué)分[1-2]。
以烏魯木齊職業(yè)大學(xué)為例,網(wǎng)絡(luò)選修課程2015年開始運(yùn)行,主要是和超星爾雅和智慧樹在線教育平臺(tái)合作,每年的開設(shè)課程和選課人數(shù)都在增加?,F(xiàn)在每名學(xué)生在校期間,要求選修課學(xué)分不低于8個(gè)學(xué)分, 2020年上學(xué)期開設(shè)課程113門,總選課人次數(shù)是23 229人次,總選課學(xué)生數(shù)6 366人。
網(wǎng)絡(luò)選修課程是學(xué)校教務(wù)管理系統(tǒng)的重要組成部分,是全校學(xué)生公共任選課程的主要學(xué)習(xí)方式。每學(xué)期完成網(wǎng)絡(luò)選修課程,需要統(tǒng)計(jì)學(xué)期整體情況、課程學(xué)習(xí)的人數(shù)、課程學(xué)習(xí)成績(jī)分?jǐn)?shù)段的人數(shù)、按課程統(tǒng)計(jì)學(xué)生成績(jī)的及格率等。針對(duì)網(wǎng)絡(luò)選修課程的管理,傳統(tǒng)方式是手工完成統(tǒng)計(jì)和查詢,很費(fèi)時(shí)費(fèi)力。為高效、快速地實(shí)現(xiàn)網(wǎng)絡(luò)選修課情況統(tǒng)計(jì)分析,本文設(shè)計(jì)了該統(tǒng)計(jì)分析程序,解決了教務(wù)管理老師的困惑,使其可以方便、全面地了解學(xué)生網(wǎng)絡(luò)選修課課程的學(xué)習(xí)情況,輕松得到統(tǒng)計(jì)數(shù)據(jù)[3]。
該程序作為高校教務(wù)系統(tǒng)的延伸應(yīng)用,使得學(xué)校各學(xué)院老師都可以方便、快速、高效地了解每學(xué)期網(wǎng)絡(luò)選修課的情況。學(xué)生在學(xué)習(xí)中出現(xiàn)“刷課”等現(xiàn)象,公司平臺(tái)會(huì)反饋不良記錄的成績(jī)清單,在系統(tǒng)查詢學(xué)生課程信息時(shí),會(huì)有“不良記錄”的標(biāo)注,以示該成績(jī)可能不是學(xué)生真實(shí)學(xué)習(xí)得到的成績(jī)。
網(wǎng)絡(luò)選修課程統(tǒng)計(jì)分析系統(tǒng)為各網(wǎng)絡(luò)平臺(tái)上課程的設(shè)計(jì)提供依據(jù)和參考,如改進(jìn)平臺(tái)上課程的成績(jī)構(gòu)成比例,增加課程見面課的內(nèi)容,課程考試難易程度的調(diào)整等。在課程的選擇上,除了學(xué)校必須要求的,從選課人數(shù)上反映現(xiàn)代大學(xué)生的學(xué)習(xí)興趣和愛好偏向。
高校都使用了功能完善的教務(wù)管理系統(tǒng),烏魯木齊職業(yè)大學(xué)使用青果教務(wù)系統(tǒng)和喜鵲兒手機(jī)APP,可以實(shí)現(xiàn)成績(jī)的查詢打印等功能。網(wǎng)絡(luò)選修課成績(jī)都導(dǎo)入到教務(wù)系統(tǒng),所以前期不需要再重復(fù)建立數(shù)據(jù)庫(kù),直接用公司平臺(tái)的Excel原始數(shù)據(jù)作為信息源。
本系統(tǒng)是為統(tǒng)計(jì)分析網(wǎng)絡(luò)選修課而設(shè)計(jì)開發(fā)的,主要包括3項(xiàng)功能:(1)統(tǒng)計(jì)全體學(xué)生每學(xué)期學(xué)習(xí)整體情況;(2)根據(jù)學(xué)生學(xué)號(hào)查詢個(gè)人各科成績(jī);(3)統(tǒng)計(jì)各科目學(xué)生成績(jī)情況。
本系統(tǒng)使用Python語(yǔ)言進(jìn)行開發(fā),并外加PyQt5、Pandas、matPlotlib 3個(gè)軟件包。Python語(yǔ)言簡(jiǎn)練,外接軟件包豐富,開發(fā)效率高。本系統(tǒng)包括注釋等只有600多行程序,可以想象其精煉程度。PyQt5、Pandas、matPlotlib是為Python提供的功能強(qiáng)大的軟件包。PyQt5是開發(fā)界面的工具;Pandas是數(shù)據(jù)分析的工具,為處理報(bào)表數(shù)據(jù)提供了豐富的函數(shù)和方法;matPlotlib是繪制二維圖的工具,功能強(qiáng)大,使用方便,本例中只用了10行程序,就繪制了精美的成績(jī)分?jǐn)?shù)統(tǒng)計(jì)直方圖。系統(tǒng)運(yùn)行環(huán)境:Windows 7,Windows 10及以上版本。
“人生苦短,我要用Python?!保贿x用該語(yǔ)言的另一個(gè)原因是Python語(yǔ)言是目前較為廣泛流行的語(yǔ)言,是世界上使用人員最多的語(yǔ)言,在大數(shù)據(jù)處理、人工智能開發(fā)更是首選語(yǔ)言,并且烏魯木齊職業(yè)大學(xué)剛開始開設(shè)該語(yǔ)言課程,因此選用該語(yǔ)言展示其魅力,以便促進(jìn)各程序語(yǔ)言的使用者喜愛并熟練使用此語(yǔ)言。
輸入數(shù)據(jù)文件為Excel文件,可以接受擴(kuò)展名為(.xls,.xlsx)兩種格式的文件。要求每個(gè)學(xué)期數(shù)據(jù)由兩個(gè)sheet組成,前一個(gè)為學(xué)員成績(jī)表、后一個(gè)為學(xué)員不良記錄表,可以存放多個(gè)學(xué)期的數(shù)據(jù)。但一個(gè)學(xué)期的兩個(gè)sheet要挨著存放,即使該學(xué)期無(wú)有不良記錄表,也要存放一個(gè)只有表頭而無(wú)數(shù)據(jù)的sheet。每個(gè)sheet數(shù)據(jù)表格的格式可以不受限制,但要求要有如下幾個(gè)數(shù)據(jù)項(xiàng)[‘課程名稱’,‘課程ID’,‘學(xué)生姓名’,‘學(xué)號(hào)/工號(hào)’,‘綜合成績(jī)’],而且數(shù)據(jù)項(xiàng)名稱不得改變。
程序的難點(diǎn)是3個(gè)軟件包的使用,Pandas是做數(shù)據(jù)分析使用的,其使用環(huán)境更適合于行運(yùn)行,直接應(yīng)用于桌面程序中是一嘗試;PyQt5是做界面的,matPlotlib是作圖軟件包有自己的界面。本系統(tǒng)中將matPlotlib封裝為一個(gè)類作為Qt的一個(gè)控件,嵌套于Qt界面中,具有重復(fù)應(yīng)用性。
烏魯木齊職業(yè)大學(xué)網(wǎng)絡(luò)選修課統(tǒng)計(jì)分析如圖1所示,可以看出,界面包括一行簡(jiǎn)單的菜單欄和窗口區(qū),菜單欄實(shí)現(xiàn)數(shù)據(jù)表文件的加載,是打開Excel文件的多個(gè)工作表。窗口區(qū)是實(shí)現(xiàn)程序的3項(xiàng)功能:總體評(píng)價(jià)、學(xué)生成績(jī)查詢、按課程統(tǒng)計(jì)。依次從上到下,每個(gè)功能使用的控件包含在一個(gè)組合框內(nèi),以便于用戶區(qū)分。
圖1 烏魯木齊職業(yè)大學(xué)網(wǎng)絡(luò)選修課統(tǒng)計(jì)分析
(1)總體評(píng)價(jià):使用了一個(gè)選擇框,4個(gè)單行文本框,5個(gè)靜態(tài)文本框。選擇框供用戶選擇學(xué)期,其內(nèi)容根據(jù)加載的文件自動(dòng)更新;4個(gè)文本框用于顯示統(tǒng)計(jì)得到的結(jié)果,為了防止用戶在文本框中輸入信息,文本框做了只讀限制;靜態(tài)框用于上述控件的標(biāo)注。
(2)學(xué)生成績(jī)查詢:輸入的是學(xué)號(hào),系統(tǒng)查詢顯示姓名和4門課程信息,使用了文本框和靜態(tài)框。其中一個(gè)文本框是用于輸入學(xué)生號(hào),只允許輸入數(shù)字,不能超過12位;其余文本框用于顯示查詢的結(jié)果,均已做了只讀處理;用于顯示相應(yīng)數(shù)據(jù)是正常還是不良記錄標(biāo)識(shí)使用了靜態(tài)框。
(3)按課程統(tǒng)計(jì):使用了3組控件,用于同時(shí)3門課程成績(jī)的查詢,每組控件包括一個(gè)選擇框、兩個(gè)文本框、3個(gè)靜態(tài)框。選擇框用于選擇課程,其內(nèi)容隨學(xué)期選擇而自動(dòng)改變;兩個(gè)文本框用于顯示查詢統(tǒng)計(jì)的內(nèi)容,都做了只讀處理;一個(gè)繪圖控件,用于繪制3門成績(jī)分?jǐn)?shù)區(qū)間的直方圖,圖帶有軸標(biāo)題、軸標(biāo)注、圖例與網(wǎng)格。
數(shù)據(jù)預(yù)處理是指數(shù)據(jù)自文件到內(nèi)存,是用戶看不到的功能,卻是為后續(xù)功能提供支持而不可或缺的。系統(tǒng)將每個(gè)季度的兩個(gè)sheet的數(shù)據(jù),通過處理存儲(chǔ)在一個(gè)Pandas的一個(gè)DataFrame對(duì)象中,為后續(xù)的計(jì)算提供了方便,盡管數(shù)據(jù)文件數(shù)據(jù)項(xiàng)很多,但裝入內(nèi)存的只是需要的有限的幾列數(shù)據(jù),從而節(jié)約了內(nèi)存。
系統(tǒng)功能包括總體評(píng)價(jià)、學(xué)生成績(jī)查詢、課程情況查詢3項(xiàng)。雖然Python語(yǔ)言是解釋性語(yǔ)言,執(zhí)行性能差,但在功能實(shí)現(xiàn)上均使用Pandas提供的內(nèi)部函數(shù),因?yàn)槠涫怯肅語(yǔ)言實(shí)現(xiàn)的,因此系統(tǒng)的執(zhí)行效率并沒有下降。
2.7.1 總體評(píng)價(jià)
整體情況統(tǒng)計(jì)的數(shù)據(jù)包括:考試人次、考生數(shù)、開設(shè)課程門數(shù),還有及格人次數(shù)??荚嚾舜螖?shù)是數(shù)據(jù)中心的總行數(shù),通過DataFrame的shape屬性完成;選課學(xué)生數(shù)是學(xué)生號(hào)不重復(fù)的所有行數(shù),學(xué)生號(hào)不重復(fù)數(shù)據(jù)通過DataFrame的函數(shù)unique()提取得到,返回的是一個(gè)數(shù)列,求取長(zhǎng)度即可得到所需要的值;開設(shè)課程門數(shù)用求取學(xué)生數(shù)同樣的方法可以得到;及格人次數(shù)通過DataFrame條件查找語(yǔ)句DataFrame([‘綜合成績(jī)’]>59.99)即可提取到所有及格的數(shù)據(jù),在對(duì)其統(tǒng)計(jì)行數(shù)即可得到。
2.7.2 學(xué)生成績(jī)查詢
本功能是通過學(xué)生號(hào)找到相應(yīng)的記錄,通過DataFrame查找條件為[‘學(xué)號(hào)/工號(hào)’] == 輸入的學(xué)生號(hào)的一個(gè)查找語(yǔ)句完成,查找到的結(jié)果是包含多個(gè)記錄的數(shù)據(jù)列,對(duì)其進(jìn)行遍歷,將數(shù)據(jù)寫入相應(yīng)的控件。
說明:成績(jī)狀態(tài)是顯示“正?!焙汀安涣加涗洝?,“不良記錄”是該學(xué)號(hào)的學(xué)生在“不良記錄”表里存在,否則顯示“正?!?。
2.7.3 按課程統(tǒng)計(jì)
本功能是參加某課程的人數(shù)以及及格人數(shù)的獲取,上文已詳細(xì)介紹。在此重點(diǎn)介紹Pandas提供的數(shù)據(jù)分割分類功能。假如已經(jīng)提取了某門課程的所有數(shù)據(jù)集于data(其為DataFrame結(jié)構(gòu),是所有數(shù)據(jù)的一個(gè)子集),需要設(shè)計(jì)分割器數(shù)據(jù)表,本系統(tǒng)中如下:
cutdata=[-0.01,0.01,9.99,19.99,29.99,39.99,49.99,59.99,69.99,79.99,89.99,101]
這是一個(gè)列表,是由數(shù)據(jù)分割的分割點(diǎn)值組成,其分割采用下邊界開放,上邊界閉合的方式,也就是對(duì)于上述設(shè)計(jì)的分割器所做的結(jié)果是(-0.01,0.01],(0.01,9.99],(9.99,19.99],(19.99,29.99],(29.99,39.99],(39.99,49.99],(49.99,59.99],(59.99,69.99],(69.99,79.99],(79.99,89.99],(89.99,101]]共11段,如此設(shè)計(jì)是考慮成績(jī)分?jǐn)?shù)的特點(diǎn)以及避開浮點(diǎn)數(shù)進(jìn)行等于判斷。實(shí)際達(dá)到的分割效果如下:
[0],(0,10),[10,20),[20,30),[30,40),[40,50),[50,60),[60,70),[70,80),[80,90),[90,100]準(zhǔn)備好了數(shù)據(jù)及數(shù)據(jù)分割器,就可以分割:
cj_cut = Pandas.cut(data[‘綜合成績(jī)’],bins=self.cutdata )該函數(shù)實(shí)現(xiàn)了對(duì)每一個(gè)數(shù)據(jù)進(jìn)行分割歸類,分類后對(duì)各類數(shù)據(jù)個(gè)數(shù)進(jìn)行統(tǒng)計(jì):
classdata = cj_cut.value_counts(sort=False)對(duì)分割分類的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),也就是每類有多少個(gè)數(shù)據(jù),參數(shù)為假,表示統(tǒng)計(jì)結(jié)果不排序,按上述提供的分段區(qū)間順序。說明:0分學(xué)生大部分是選修了課程,但沒有參加學(xué)習(xí)的情況,需要單獨(dú)統(tǒng)計(jì)。
2.7.4 打開文件模塊設(shè)計(jì)
由于原始Excel文件數(shù)據(jù)量大,打開文件需要時(shí)間等待,考慮增加提示信息狀態(tài)欄self.statusBar().showMessage(“正在打開文件!”)。目前,只考慮源文件格式是xls和xlsx,否則,用信息框顯示提示信息“該程序不支持該格式文件!”。本文使用pd.read_excel()函數(shù)來(lái)讀取Excel文件:data_df =pd.read_excel(filename,sheet_name=None),將數(shù)據(jù)存入包含sheet表、行、列的三維表中,循環(huán)依此處理每個(gè)學(xué)期的成績(jī)數(shù)據(jù)和對(duì)應(yīng)該學(xué)期的不良記錄。
目前,該系統(tǒng)只是單機(jī)版的基于Excel表格的統(tǒng)計(jì)分析系統(tǒng)。后期可以考慮將每年的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),建立基于C/S或B/S的網(wǎng)絡(luò)版系統(tǒng)軟件,建立有權(quán)限控制的網(wǎng)上查詢,給教學(xué)秘書、導(dǎo)學(xué)教師、學(xué)生分配不同的查詢和管理權(quán)限。系統(tǒng)可以增加歷年的課程成績(jī)比較圖表、以表格形式展現(xiàn)一個(gè)班學(xué)生的成績(jī)、成績(jī)的查詢結(jié)果實(shí)時(shí)打印等功能,還可以實(shí)現(xiàn)手機(jī)端APP查詢功能等。
網(wǎng)絡(luò)課程線上資源豐富,通過該平臺(tái),學(xué)生可以領(lǐng)略各高校知名學(xué)者教授的風(fēng)采,學(xué)習(xí)其精心完成的課程內(nèi)容,對(duì)提高各專業(yè)教師能力也是很好的平臺(tái)。因此,網(wǎng)絡(luò)課程可以是全員參與的較好學(xué)習(xí)方式,建議學(xué)校的管理層后期可以考慮學(xué)校教務(wù)處和各個(gè)學(xué)院老師溝通,建立專業(yè)教師的個(gè)人學(xué)習(xí)發(fā)展平臺(tái),督促教師拓展和提高知識(shí)和技能。完善學(xué)校網(wǎng)上選課系統(tǒng)和公司網(wǎng)絡(luò)課程平臺(tái)的相互鏈接,建立老師和學(xué)生都可以參與的網(wǎng)絡(luò)課程學(xué)習(xí)系統(tǒng)。