蘇新梅
(烏魯木齊職業大學 基礎教育部,新疆 烏魯木齊 830001)
網絡選修課程是高校學生文化素質和綜合能力的體現,目前,高等本科院校和高職院校都開設了網絡選修課程,作為綜合教育選修課的重要補充。各互聯網教育運營商,都提供了海量的豐富的網絡課程資源,幫助各高校的學子們實現跨校課程共享和學分互認,完成跨校選課修讀,并獲得學分。網絡選修課的在線學習方式靈活多樣,宿舍、教室、操場、居家等成為重要的選修課學習場所,學生通過學習所選課程視頻完成相應作業、提問、討論、考試等環節便可獲取學分[1-2]。
以烏魯木齊職業大學為例,網絡選修課程2015年開始運行,主要是和超星爾雅和智慧樹在線教育平臺合作,每年的開設課程和選課人數都在增加。現在每名學生在校期間,要求選修課學分不低于8個學分, 2020年上學期開設課程113門,總選課人次數是23 229人次,總選課學生數6 366人。
網絡選修課程是學校教務管理系統的重要組成部分,是全校學生公共任選課程的主要學習方式。每學期完成網絡選修課程,需要統計學期整體情況、課程學習的人數、課程學習成績分數段的人數、按課程統計學生成績的及格率等。針對網絡選修課程的管理,傳統方式是手工完成統計和查詢,很費時費力。為高效、快速地實現網絡選修課情況統計分析,本文設計了該統計分析程序,解決了教務管理老師的困惑,使其可以方便、全面地了解學生網絡選修課課程的學習情況,輕松得到統計數據[3]。
該程序作為高校教務系統的延伸應用,使得學校各學院老師都可以方便、快速、高效地了解每學期網絡選修課的情況。學生在學習中出現“刷課”等現象,公司平臺會反饋不良記錄的成績清單,在系統查詢學生課程信息時,會有“不良記錄”的標注,以示該成績可能不是學生真實學習得到的成績。
網絡選修課程統計分析系統為各網絡平臺上課程的設計提供依據和參考,如改進平臺上課程的成績構成比例,增加課程見面課的內容,課程考試難易程度的調整等。在課程的選擇上,除了學校必須要求的,從選課人數上反映現代大學生的學習興趣和愛好偏向。
高校都使用了功能完善的教務管理系統,烏魯木齊職業大學使用青果教務系統和喜鵲兒手機APP,可以實現成績的查詢打印等功能。網絡選修課成績都導入到教務系統,所以前期不需要再重復建立數據庫,直接用公司平臺的Excel原始數據作為信息源。
本系統是為統計分析網絡選修課而設計開發的,主要包括3項功能:(1)統計全體學生每學期學習整體情況;(2)根據學生學號查詢個人各科成績;(3)統計各科目學生成績情況。
本系統使用Python語言進行開發,并外加PyQt5、Pandas、matPlotlib 3個軟件包。Python語言簡練,外接軟件包豐富,開發效率高。本系統包括注釋等只有600多行程序,可以想象其精煉程度。PyQt5、Pandas、matPlotlib是為Python提供的功能強大的軟件包。PyQt5是開發界面的工具;Pandas是數據分析的工具,為處理報表數據提供了豐富的函數和方法;matPlotlib是繪制二維圖的工具,功能強大,使用方便,本例中只用了10行程序,就繪制了精美的成績分數統計直方圖。系統運行環境:Windows 7,Windows 10及以上版本。
“人生苦短,我要用Python。”;選用該語言的另一個原因是Python語言是目前較為廣泛流行的語言,是世界上使用人員最多的語言,在大數據處理、人工智能開發更是首選語言,并且烏魯木齊職業大學剛開始開設該語言課程,因此選用該語言展示其魅力,以便促進各程序語言的使用者喜愛并熟練使用此語言。
輸入數據文件為Excel文件,可以接受擴展名為(.xls,.xlsx)兩種格式的文件。要求每個學期數據由兩個sheet組成,前一個為學員成績表、后一個為學員不良記錄表,可以存放多個學期的數據。但一個學期的兩個sheet要挨著存放,即使該學期無有不良記錄表,也要存放一個只有表頭而無數據的sheet。每個sheet數據表格的格式可以不受限制,但要求要有如下幾個數據項[‘課程名稱’,‘課程ID’,‘學生姓名’,‘學號/工號’,‘綜合成績’],而且數據項名稱不得改變。
程序的難點是3個軟件包的使用,Pandas是做數據分析使用的,其使用環境更適合于行運行,直接應用于桌面程序中是一嘗試;PyQt5是做界面的,matPlotlib是作圖軟件包有自己的界面。本系統中將matPlotlib封裝為一個類作為Qt的一個控件,嵌套于Qt界面中,具有重復應用性。
烏魯木齊職業大學網絡選修課統計分析如圖1所示,可以看出,界面包括一行簡單的菜單欄和窗口區,菜單欄實現數據表文件的加載,是打開Excel文件的多個工作表。窗口區是實現程序的3項功能:總體評價、學生成績查詢、按課程統計。依次從上到下,每個功能使用的控件包含在一個組合框內,以便于用戶區分。

圖1 烏魯木齊職業大學網絡選修課統計分析
(1)總體評價:使用了一個選擇框,4個單行文本框,5個靜態文本框。選擇框供用戶選擇學期,其內容根據加載的文件自動更新;4個文本框用于顯示統計得到的結果,為了防止用戶在文本框中輸入信息,文本框做了只讀限制;靜態框用于上述控件的標注。
(2)學生成績查詢:輸入的是學號,系統查詢顯示姓名和4門課程信息,使用了文本框和靜態框。其中一個文本框是用于輸入學生號,只允許輸入數字,不能超過12位;其余文本框用于顯示查詢的結果,均已做了只讀處理;用于顯示相應數據是正常還是不良記錄標識使用了靜態框。
(3)按課程統計:使用了3組控件,用于同時3門課程成績的查詢,每組控件包括一個選擇框、兩個文本框、3個靜態框。選擇框用于選擇課程,其內容隨學期選擇而自動改變;兩個文本框用于顯示查詢統計的內容,都做了只讀處理;一個繪圖控件,用于繪制3門成績分數區間的直方圖,圖帶有軸標題、軸標注、圖例與網格。
數據預處理是指數據自文件到內存,是用戶看不到的功能,卻是為后續功能提供支持而不可或缺的。系統將每個季度的兩個sheet的數據,通過處理存儲在一個Pandas的一個DataFrame對象中,為后續的計算提供了方便,盡管數據文件數據項很多,但裝入內存的只是需要的有限的幾列數據,從而節約了內存。
系統功能包括總體評價、學生成績查詢、課程情況查詢3項。雖然Python語言是解釋性語言,執行性能差,但在功能實現上均使用Pandas提供的內部函數,因為其是用C語言實現的,因此系統的執行效率并沒有下降。
2.7.1 總體評價
整體情況統計的數據包括:考試人次、考生數、開設課程門數,還有及格人次數。考試人次數是數據中心的總行數,通過DataFrame的shape屬性完成;選課學生數是學生號不重復的所有行數,學生號不重復數據通過DataFrame的函數unique()提取得到,返回的是一個數列,求取長度即可得到所需要的值;開設課程門數用求取學生數同樣的方法可以得到;及格人次數通過DataFrame條件查找語句DataFrame([‘綜合成績’]>59.99)即可提取到所有及格的數據,在對其統計行數即可得到。
2.7.2 學生成績查詢
本功能是通過學生號找到相應的記錄,通過DataFrame查找條件為[‘學號/工號’] == 輸入的學生號的一個查找語句完成,查找到的結果是包含多個記錄的數據列,對其進行遍歷,將數據寫入相應的控件。
說明:成績狀態是顯示“正常”和“不良記錄”,“不良記錄”是該學號的學生在“不良記錄”表里存在,否則顯示“正常”。
2.7.3 按課程統計
本功能是參加某課程的人數以及及格人數的獲取,上文已詳細介紹。在此重點介紹Pandas提供的數據分割分類功能。假如已經提取了某門課程的所有數據集于data(其為DataFrame結構,是所有數據的一個子集),需要設計分割器數據表,本系統中如下:
cutdata=[-0.01,0.01,9.99,19.99,29.99,39.99,49.99,59.99,69.99,79.99,89.99,101]
這是一個列表,是由數據分割的分割點值組成,其分割采用下邊界開放,上邊界閉合的方式,也就是對于上述設計的分割器所做的結果是(-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段,如此設計是考慮成績分數的特點以及避開浮點數進行等于判斷。實際達到的分割效果如下:
[0],(0,10),[10,20),[20,30),[30,40),[40,50),[50,60),[60,70),[70,80),[80,90),[90,100]準備好了數據及數據分割器,就可以分割:
cj_cut = Pandas.cut(data[‘綜合成績’],bins=self.cutdata )該函數實現了對每一個數據進行分割歸類,分類后對各類數據個數進行統計:
classdata = cj_cut.value_counts(sort=False)對分割分類的數據進行統計,也就是每類有多少個數據,參數為假,表示統計結果不排序,按上述提供的分段區間順序。說明:0分學生大部分是選修了課程,但沒有參加學習的情況,需要單獨統計。
2.7.4 打開文件模塊設計
由于原始Excel文件數據量大,打開文件需要時間等待,考慮增加提示信息狀態欄self.statusBar().showMessage(“正在打開文件!”)。目前,只考慮源文件格式是xls和xlsx,否則,用信息框顯示提示信息“該程序不支持該格式文件!”。本文使用pd.read_excel()函數來讀取Excel文件:data_df =pd.read_excel(filename,sheet_name=None),將數據存入包含sheet表、行、列的三維表中,循環依此處理每個學期的成績數據和對應該學期的不良記錄。
目前,該系統只是單機版的基于Excel表格的統計分析系統。后期可以考慮將每年的數據導入數據庫,建立基于C/S或B/S的網絡版系統軟件,建立有權限控制的網上查詢,給教學秘書、導學教師、學生分配不同的查詢和管理權限。系統可以增加歷年的課程成績比較圖表、以表格形式展現一個班學生的成績、成績的查詢結果實時打印等功能,還可以實現手機端APP查詢功能等。
網絡課程線上資源豐富,通過該平臺,學生可以領略各高校知名學者教授的風采,學習其精心完成的課程內容,對提高各專業教師能力也是很好的平臺。因此,網絡課程可以是全員參與的較好學習方式,建議學校的管理層后期可以考慮學校教務處和各個學院老師溝通,建立專業教師的個人學習發展平臺,督促教師拓展和提高知識和技能。完善學校網上選課系統和公司網絡課程平臺的相互鏈接,建立老師和學生都可以參與的網絡課程學習系統。