戴雯惠
摘要:隨著教育體制的不斷完善,學(xué)校教學(xué)規(guī)模日益強大,在校學(xué)生和教師的數(shù)量逐年增加,也增加了學(xué)校對教務(wù)管理的挑戰(zhàn)。因此,有必要利用新技術(shù)開發(fā)適合現(xiàn)代需求的教務(wù)管理系統(tǒng)。本文從使用者的角度出發(fā),使用當(dāng)前流行的Python的Django框架,研究并開發(fā)一款高效的教務(wù)管理系統(tǒng),滿足師生的日常教學(xué)需求。
Abstract: With the continuous improvement of the educational system, the scale of school teaching is becoming more and more powerful, The number of students and teachers in school is increasing year by year. Increasing the school's challenge to the management of educational affairs. So, It is necessary to develop the educational administration system suitable for modern needs with new technology. This article starts from the user's point of view, using the current popular Django framework, research and develop an efficient educational administration system to meet the daily teaching needs of teachers and students.
關(guān)鍵詞:教務(wù)管理系統(tǒng);Python;MySQL數(shù)據(jù)庫
Key words: educational administration management system;Python;MySQL Data Base
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1006-4311(2018)27-0237-03
0 引言
在新時代背景下,我國的綜合國力日益強大,主要從人民的教育事業(yè)開始,讓每個人都能接受良好的教育。在教育事業(yè)領(lǐng)導(dǎo)全國經(jīng)濟發(fā)展的同時,也加重了各大院校對教務(wù)管理的負擔(dān),不僅增加了教務(wù)管理人員的工作量,也增加了工作難度和復(fù)雜度。如果繼續(xù)采用因循守舊,照搬照抄的人工管理教務(wù)信息模式,只會加大各大院校對教務(wù)管理信息的壓力,所以一款高效的教務(wù)管理系統(tǒng)已經(jīng)成為各大院校推進教育現(xiàn)代化的一個重要舉措。
Internet的發(fā)展使我們的教育逐步走向現(xiàn)代化,在網(wǎng)絡(luò)上進行信息管理與查詢是當(dāng)今教育中的一個熱點?,F(xiàn)在,教師和學(xué)生之間的信息傳遞非常方便,有很多不同的途徑可以選擇,但都存在安全性與便捷性方面的問題,數(shù)據(jù)難以整合決定了數(shù)據(jù)難以共享。在管理者建立的系統(tǒng)中,數(shù)據(jù)取決于管理者的認知,相反,真正的使用者不容易掌握。由于Internet具有影響力范圍廣,傳遞信息效率高,交互性強大優(yōu)點,所以開發(fā)一個適合使用者的教務(wù)管理系統(tǒng)可以提高學(xué)校對教務(wù)信息的有效管理。本文論述的教務(wù)管理系統(tǒng)的主要目的就是取代傳統(tǒng)的教務(wù)管理系統(tǒng),簡化教師和教務(wù)管理人員的工作量,將教務(wù)管理由線下放到線上,實現(xiàn)各大院校網(wǎng)絡(luò)化的教務(wù)管理,使教務(wù)部門能更有效、更便捷地管理各院系的重大事件,使后臺管理人員及時而充分地獲取自己的工作日程、通知等,也方便學(xué)生能更高效的得到自己所需要的課程信息、成績信息,同時方便教師完成各類信息的錄入和統(tǒng)計。
1 系統(tǒng)功能需求分析
結(jié)合學(xué)院實際教務(wù)情況,教務(wù)管理系統(tǒng)的主要功能包括學(xué)生成績和課表的查詢;教師可以在系統(tǒng)中查看自身的課程分布、不同年級或者不同班級學(xué)生的基本信息以及學(xué)生相關(guān)專業(yè)的信息;后臺管理員用用所有功能權(quán)限,包括教師信息、學(xué)生信息的添加、重置用戶的注冊及登錄密碼等。結(jié)合實際,本系統(tǒng)的實現(xiàn)功能如下:
①成績錄入:成績信息是教務(wù)管理系統(tǒng)的核心要素之一,而成績的特點又是多而雜,既有科目的分類、涉及學(xué)生數(shù)量大、又分成各個學(xué)期。因此,讓教師的工作變得簡單是本系統(tǒng)實現(xiàn)的首要目標(biāo)。
②課程信息的錄入:課程是教務(wù)管理系統(tǒng)中的重要部分。課表面向的是教師和學(xué)生。管理員通過教務(wù)管理系統(tǒng),可以安排班級及教師的課表,方便師生查詢。
③學(xué)院、專業(yè)及班級的添加管理:每個學(xué)校涉及多個子學(xué)院、子學(xué)院中包含多個專業(yè),專業(yè)下面對應(yīng)不同的班級,理清它們之間的關(guān)系,方便對他們進行添加、刪除等各類操作。
④課表與成績的查詢:系統(tǒng)的用戶包括教師和學(xué)生。教師可以在系統(tǒng)中查詢課表;學(xué)生可以在系統(tǒng)中查詢課表和成績。
⑤權(quán)限管理:系統(tǒng)的用戶包括管理員、教師和學(xué)生。在進入系統(tǒng)后,系統(tǒng)判斷當(dāng)前用戶的身份,給別給予不同的權(quán)限。其系統(tǒng)功能示意圖如圖1所示。
2 開發(fā)環(huán)境分析
本系統(tǒng)基于Python3開發(fā),首要任務(wù)是配置Python環(huán)境。Python的環(huán)境配置需要將Python的安裝包安裝完畢,并且將Python的安裝路徑添加到系統(tǒng)環(huán)境變量(Path)中。Python環(huán)境安裝好以后,需要安裝Django庫,這在Python3下需要執(zhí)行一句“pip install django”即可完成。
在開發(fā)IDE的選擇上,本系統(tǒng)選擇PyCharm,此IDE帶有一系列可以幫助用戶提高Python開發(fā)效率的功能。此外,PyCharm的一些高級功能也可以用于支持Django框架下的高效率開發(fā)。
在部署項目時,選擇直接使用服務(wù)器進行項目部署,首先要在服務(wù)器端配置好數(shù)據(jù)庫軟件和Web服務(wù)器。數(shù)據(jù)等信息存放在MySQL數(shù)據(jù)庫中。在配置Nginx時,可以方便的使用uWSGI和Nginx的配合,快速的完成服務(wù)器部署。這樣,在正式部署項目時,又可以方便的使用uWSGI實現(xiàn)Django的wsgi協(xié)議,從而快速完成整個項目的部署。
3 數(shù)據(jù)庫模型設(shè)計
教務(wù)管理系統(tǒng)中的角色分為教師和學(xué)生兩種身份。需要在人員表中添加一個身份字段。在數(shù)據(jù)庫模型中,一個班級對應(yīng)本班級的學(xué)生,一個專業(yè)將分布不同的班級,一個學(xué)院又有多個專業(yè)。成績表和學(xué)生表表示為一對一關(guān)系,由于一個學(xué)生在各自的專業(yè)里可以有很多門課的成績, 一個學(xué)生可以對應(yīng)成績課表中的多條記錄,而成績表中的額一跳記錄智能對應(yīng)一個學(xué)生。由于課程分為考試課、考查課和實訓(xùn)課,它們對應(yīng)的字段不一樣,所以單獨建表。數(shù)據(jù)表之間的聯(lián)系,使用外鍵(Foreignkey)實現(xiàn)連接。教務(wù)管理系統(tǒng)的數(shù)據(jù)庫模型圖如圖2所示。
4 系統(tǒng)功能模塊設(shè)計與實現(xiàn)
4.1 登錄模塊
該模塊功能實現(xiàn)用戶在教務(wù)管理系統(tǒng)中登錄的功能,主要核心任務(wù)是將訪問者的用戶名和密碼與數(shù)據(jù)庫中的用戶名和密碼進行遍歷和比對,如果找到相符的就登錄成功,反之則登錄失敗。登錄頁面需要一個登錄表單,關(guān)鍵代碼如下:
定義好表單,就可以調(diào)用表單數(shù)據(jù),并在視圖層進行登錄業(yè)務(wù)邏輯的編寫,核心代碼如下:
定義登陸頁面視圖層函數(shù),判斷是否接受POST信息,如果沒有,則直接將定義好的表單類發(fā)送到模板層,并在模板層中渲染表單元素。如果接收到POST數(shù)據(jù),表明有用戶正在試圖登錄,首先讀取POST數(shù)據(jù),并嘗試驗證能否得到一個用戶對象,如果得不到則表示登錄失敗,若得到的user不為None,則登錄成功,并跳轉(zhuǎn)至“/info”頁面。其功能界面如圖3所示。
4.2 登錄狀態(tài)權(quán)限控制
教務(wù)管理系統(tǒng)的用戶由學(xué)生、教師和管理員,即為多種用戶,必須考慮登錄狀態(tài)問題,登錄與否分別對應(yīng)不同的權(quán)限。權(quán)限控制的第一步是判斷是否登錄并返回不同的權(quán)限頁面,這是全局的,所以利用Django的中間件實現(xiàn),關(guān)鍵代碼如下:
這里定義一個DaasAuthenticationMiddleware類來控制登錄后的行為,登錄后半段當(dāng)前用戶是否燈具,如果登錄則直接跳轉(zhuǎn)到“/info”頁面,即首頁。如果發(fā)現(xiàn)未登錄用戶嘗試訪問“/info”頁面,則直接跳轉(zhuǎn)至登錄頁面。
4.3 成績管理模塊
在教務(wù)管理系統(tǒng)中,成績是教務(wù)管理系統(tǒng)的核心數(shù)據(jù)之一。在本系統(tǒng)中,成績類型分為三種,分別是考試課成績、考查課成績和實訓(xùn)課成績,其中考查課成績和考試課成績在數(shù)據(jù)庫中的字段一致,但期末總評成績的測算方法不一致(考試課程的總評成績=平時成績*0.3+期末成績*0.7,考查課程的總評成績=平時成績*0.4+期末成績*0.6),實訓(xùn)課程需要一個等第(rank)字段表示。因此,將三種不同類型的成績表分別放在三張數(shù)據(jù)表中。每一條成績的記錄都和用戶是一對一的關(guān)系,當(dāng)需要查詢某學(xué)生的考試課成績信息時,只需要查詢到考試課表中用戶字段為這個學(xué)生的記錄即可。
成績的導(dǎo)入是教師需要完成的主要工作之一。本系統(tǒng)中采用一系列的下拉框,可以精確定位到哪個學(xué)院哪個專業(yè)哪門課程,這些操作通過AJAX異步加載完成,無需刷新整個頁面。系統(tǒng)自動生成一個表單,將這個班級所有學(xué)生的姓名與學(xué)號填入表中。教師只需要輸入對應(yīng)分值,總評成績由系統(tǒng)自動計算得出結(jié)果。教師在后臺進行對學(xué)生成績的添加,學(xué)生則可以登錄系統(tǒng)查詢自己的考試成績。
4.4 課表查詢模塊
課表查詢即為當(dāng)前用戶顯示一周課程信息,也可以在課表右上角顯示的下拉列表框中選擇對應(yīng)的學(xué)期以便查詢該用戶以往學(xué)期的課程信息。課表設(shè)計為一張HTML中的table表格。教務(wù)管理系統(tǒng)的課表查詢頁面如圖4所示。
4.5 學(xué)院、專業(yè)、班級管理模塊
教務(wù)管理系統(tǒng)中,學(xué)院、專業(yè)和班級的管理模塊功能類似,主要實現(xiàn)記錄的添加、修改和刪除操作。界面分為3列,分別為學(xué)院、專業(yè)和班級,當(dāng)選擇學(xué)院以后,會分別在第二列和第三列自動顯示當(dāng)前學(xué)院開設(shè)的專業(yè)和班級,教務(wù)管理系統(tǒng)中的學(xué)院、專業(yè)和班級管理界面如圖5所示。
5 總結(jié)
高校教務(wù)管理系統(tǒng)的根本目的是通過系統(tǒng)服務(wù)于廣大教師和學(xué)生,為用戶提供經(jīng)過整合和加工的信息,并清晰的展現(xiàn)給用戶。提高學(xué)校對教務(wù)管理效率,從而更好地促進開發(fā)者和使用者之間的交流。本文從教務(wù)管理系統(tǒng)的設(shè)計目標(biāo)出發(fā),詳細闡述了使用Phthon和MySQL相結(jié)合的開發(fā)思路,均使用PyCharm工具進行代碼編寫,最大限度地提高了開發(fā)效率和代碼質(zhì)量,實現(xiàn)高校教務(wù)管理系統(tǒng)的主要功能。
參考文獻:
[1]Swaroop,C.H. 簡明Python教程[M].2005.
[2]Django documentation https://docs.djangoproject.com/en/1.10/.
[3]SegmentFault社區(qū) https://segmentfault.com/.
[4]Magnus Lie Hetland. Python基礎(chǔ)教程[M].人民郵電出版社,2010.
[5]Jeff Forcier,Paul Bissex. Django Web開發(fā)指南[M].機械工業(yè)出版社,2009.