任喜偉,杜豐怡,李兆允,侯佳蕾
(陜西科技大學 電子信息與人工智能學院,陜西 西安 710021)
隨著高等教育改革深入推行,專業(yè)間的界限逐漸淡化,學科交叉融合發(fā)展已成為新的趨勢。傳統(tǒng)的按計劃招生、按專業(yè)培養(yǎng)的人才培養(yǎng)模式已不能完全適應經(jīng)濟社會的發(fā)展要求,“大類招生、分流培養(yǎng)”作為一種新的人才培養(yǎng)模式逐漸被眾多高校采用[1-2]。該模式允許學生在高考結(jié)束后,按照大類填報志愿,后經(jīng)一段時間基礎課的通識培養(yǎng),再根據(jù)學生志愿、成績排名、教學資源等情況綜合考慮,將學生分流至大類內(nèi)的各個專業(yè)進行學習[3-4]。
在國外,哈佛大學率先實行“學生自主選擇型”專業(yè)分流模式,允許學生自主選擇專業(yè)方向進行學習,實現(xiàn)專業(yè)分流[5]。此后,世界上其他高校也紛紛對大類分流的模式進行嘗試和探索。而國內(nèi)也在人才培養(yǎng)模式上不斷探索,從建國之初學習蘇聯(lián)的人才培養(yǎng)模式[6],到20世紀80年代后期,由北京大學首先提出“大類招生, 分流培養(yǎng)”模式,隨后被眾多的國內(nèi)高校所采納[7-8]。鑒于傳統(tǒng)紙質(zhì)化分流工作收集學生數(shù)據(jù)復雜度高[9]、耗費大量人力物力、無法對分流數(shù)據(jù)可視化分析等特點,實現(xiàn)高校大類分流、專業(yè)分班信息化改革意義重大。
楊倩[10]提出了一種瀏覽器端采用Angular.js框架的單頁應用系統(tǒng),實現(xiàn)了專業(yè)大類分流;熊凱等人[11]采用B/S架構,Hibernate、Spring等框架進行系統(tǒng)實現(xiàn);宋安玲等人[12]提出一種基于C/S架構、.NET框架、C#語言的分流系統(tǒng),采用志愿分流算法來完成分流工作。上述文獻均采用不同技術開發(fā)相應的軟件系統(tǒng),在一定條件下有效完成了專業(yè)大類分流工作,但還存在由于系統(tǒng)功能單一、開發(fā)代碼繁雜、系統(tǒng)架構陳舊可能導致的分流結(jié)果不準、效率不高、操作不便等問題。
基于此,提出一種基于Vue+SpringBoot框架的高校大類分流系統(tǒng)。系統(tǒng)融合手機端、PC端和服務器端,采用B/S架構,前端使用Vue框架便于數(shù)據(jù)傳輸[13],后端使用SpringBoot+MyBatisPlus框架,增強數(shù)據(jù)安全性[14],同時增加系統(tǒng)功能,高效、準確、便捷地完成專業(yè)大類分流工作。
該系統(tǒng)主要用到以下開發(fā)工具和設計模式。
(1)Web服務器。
系統(tǒng)前端使用Webpack進行構建,Nginx進行部署[15]。后端使用SpringBoot集成的Tomcat服務器,Tomcat是一個免費開源的Web應用服務器,可處理動態(tài)請求。
(2)Vue框架。
Vue框架是一套用于構建用戶界面的漸進式JavaScript框架,采用自底向上增量開發(fā)的設計,提供了豐富的組件庫,解決了當前應用開發(fā)組件不豐富的問題。
(3)SpringBoot框架。
SpringBoot框架是Java平臺上的一種開源應用框架,通過簡化配置來簡化Spring應用的搭建和開發(fā),它提供具有控制反轉(zhuǎn)特性的容器,同時支持面向切面編程。在項目管理方面,SpringBoot通過配置Maven工具來管理項目資源,提高了開發(fā)效率。
(4)MyBatisPlus框架。
MyBatisPlus框架是基于MyBatis框架的增強工具包,它提供了許多簡化MyBatis開發(fā)的注解和工具,如自動注入ID、自動填充、邏輯刪除等,同時還支持多種數(shù)據(jù)庫,能夠幫助開發(fā)人員快速開發(fā)高質(zhì)量的數(shù)據(jù)訪問層。
(5)MySQL數(shù)據(jù)庫。
MySQL是一種開源的關系型數(shù)據(jù)庫管理系統(tǒng),現(xiàn)由Oracle公司維護和支持。它支持多種數(shù)據(jù)類型;具有高度的穩(wěn)定性;并且提供了豐富的安全功能,如訪問控制、加密、認證等,以保證數(shù)據(jù)的安全性和可靠性。
(6)MVC設計模式。
在MVC(Model-View-Controller)的架構下,用戶直接與View頁面進行交互,然后通過數(shù)據(jù)綁定將用戶請求轉(zhuǎn)發(fā)給Controller,Controller篩選合適的Model進行業(yè)務邏輯處理,處理后的結(jié)果再通過Controller傳遞給View,對View渲染更新。MVC設計模式降低了模塊之間的耦合性,方便快速部署,有利于軟件工程化管理。
為了便于系統(tǒng)開發(fā),采用了前后端分離的開發(fā)模式,前端采用Vue框架,后端采用SpringBoot+MyBatisPlus框架。系統(tǒng)的整體架構設計如圖1所示。
圖1 系統(tǒng)總體架構
首先,用戶可以通過PC端、手機端、平板電腦等終端設備使用該系統(tǒng);其次,用戶在終端成功登錄后,前端通過Tomcat應用服務器處理請求,調(diào)用志愿填報、專業(yè)管理、大類分流、專業(yè)分班、學生管理等功能的后端接口,實現(xiàn)功能;而SpringBoot的后端服務通過獲取token數(shù)據(jù)[16]對用戶的角色進行判斷,控制用戶登錄后所能夠使用的功能權限;系統(tǒng)的前后端通過發(fā)送http請求及響應的方式實現(xiàn)數(shù)據(jù)交互,數(shù)據(jù)傳輸?shù)胶笈_后使用SpringBoot框架進行業(yè)務邏輯處理和數(shù)據(jù)安全管理,同時在后臺集成MyBatisPlus框架,建立與MySQL數(shù)據(jù)庫的連接并從數(shù)據(jù)庫中獲取JSON格式的數(shù)據(jù)、執(zhí)行具體功能任務的SQL語句,實現(xiàn)對數(shù)據(jù)庫的操作。
該系統(tǒng)分流設計績點優(yōu)先和志愿優(yōu)先2種核心算法,分流后提供隨機、直線、曲線、折線等4種分班模式,以下主要介紹分流核心算法。
(1)績點優(yōu)先的大類分流算法(以填報三個志愿為例)。
圖2 績點優(yōu)先分流算法流程
績點優(yōu)先分流算法流程如圖2所示。首先,將學生按照績點和志愿兩個維度進行降序排序;其次,從第一個學生的志愿開始獲取,在該生第一志愿的專業(yè)人數(shù)有空缺時,將該生分配入第一志愿的專業(yè),并寫入數(shù)據(jù)庫;如果該生第一志愿的專業(yè)人數(shù)已滿,則依次查詢第二志愿、第三志愿,在人數(shù)有空缺時進行錄取,并將錄取結(jié)果寫入數(shù)據(jù)庫保存;接著,查詢績點排名第二的學生志愿,按照上述步驟依次從學生第一志愿開始進行志愿的分配,循環(huán)往復直到所有學生分流完畢,并將錄取結(jié)果寫入數(shù)據(jù)庫進行保存。
(2)志愿優(yōu)先的大類分流算法(以填報三個志愿為例)。
志愿優(yōu)先分流算法流程如圖3所示。首先,獲取學生填報的志愿數(shù)據(jù),然后將志愿進行降序排序。接著,按照第一志愿的不同將學生分類(即將第一志愿均為A專業(yè)的學生分為A組,第一志愿均為B專業(yè)的學生分為B組,第一志愿均為C專業(yè)的學生分為C組),并在每個類別中將學生按照績點進行降序排序??紤]每個專業(yè)設置的學生容量,如果某志愿填報的學生數(shù)量小于該專業(yè)的學生容量,則將全部學生錄取到該專業(yè),并將錄取結(jié)果保存到數(shù)據(jù)庫中;如果某志愿填報的學生數(shù)量大于該專業(yè)的學生容量,則按照績點降序排序優(yōu)先滿足成績高的學生的志愿,剩余學生在第一志愿初步分配好后,查看其第二志愿專業(yè)人數(shù)是否有空缺,如果有則將該生錄取至第二志愿專業(yè),并將結(jié)果寫入數(shù)據(jù)庫;如果第二專業(yè)人數(shù)無空缺,則將該生錄取至第三志愿專業(yè),并將結(jié)果寫入數(shù)據(jù)庫。錄取流程依次往復,直到將所有學生錄取完畢并將結(jié)果寫入數(shù)據(jù)庫進行保存。
圖3 志愿優(yōu)先分流算法流程
數(shù)據(jù)庫建立了學生信息表、學院表、大類表、專業(yè)表、班級表、志愿表等一系列數(shù)據(jù)表,系統(tǒng)數(shù)據(jù)庫主要E-R關系如圖4所示。
圖4 大類分流系統(tǒng)E-R圖
接口是前后端進行通信的橋梁,系統(tǒng)后端需要設計接口,為前端的頁面展示提供數(shù)據(jù)。系統(tǒng)使用Restful風格的設計接口,結(jié)構清晰明了,方便后續(xù)維護。本節(jié)以志愿填報類對應的接口信息表作為接口設計的示例,如表1所示。
表1 大類分流系統(tǒng)接口描述
(1)登錄驗證實現(xiàn)。
該系統(tǒng)在登錄時需要用到驗證碼的功能,主要依靠Google的開源驗證碼生成器Kaptcha來實現(xiàn)。首先需要導入相關Jar包,然后配置Kaptcha驗證碼的生成規(guī)則,配置好后就可以生成驗證碼。而要驗證驗證碼是否正確,直接對表單中生成的UUID和輸入的驗證碼作為條件查詢數(shù)據(jù)庫,如果可以查出記錄,說明驗證碼正確。
(2)前后端分離實現(xiàn)。
前后端分離的核心是由客戶端請求的身份權限校驗,該系統(tǒng)使用Token機制實現(xiàn)校驗[16]。通過在登錄時生成唯一的Token憑證進行認證,前端在登錄完成后將Token保存在本地,每次請求后端Api時把Token放在Http請求頭中,服務端通過解析Http請求頭中的Token字段,確定用戶身份和權限,從而進行對應的業(yè)務處理。
(3)信息加密實現(xiàn)。
對于該系統(tǒng)而言,學生信息的安全性是首要考慮的問題,其中用戶的密碼更是重中之重。考慮到學生信息數(shù)量龐大的情況,使用MD5加密算法對用戶密碼進行加密,并對用戶密碼進行隨機加鹽(Salt),使得即使可以拿到數(shù)據(jù)庫密文,也無法逆向推導出密碼。
(4)數(shù)據(jù)校驗實現(xiàn)。
后端對于前端的請求數(shù)據(jù)并不是無差別信任,在進行相關業(yè)務處理前,首先根據(jù)Token憑證驗證身份信息,其次對請求的數(shù)據(jù)進行XSS等安全校驗,最后對關鍵字段進行檢測,確保業(yè)務數(shù)據(jù)無臟數(shù)據(jù)、無效數(shù)據(jù)等。
學生端頁面是被訪問次數(shù)最多,關聯(lián)用戶體驗最強的頁面,如圖5所示,學生在登錄頁面輸入自己的學號、密碼以及驗證碼登錄,登錄成功后根據(jù)學生大類顯示該生可填報的志愿和起止時間。
圖5 系統(tǒng)頁面實現(xiàn)
教師端頁面是展示信息最全、功能最復雜的頁面,如圖5所示,教師登錄后可新建大類及其所屬學院;新增專業(yè)的同時設置學生人數(shù)及所屬的年級、大類、學院等關聯(lián)信息。同時該系統(tǒng)提供“志愿優(yōu)先分流”和“績點優(yōu)先分流”兩種分流算法進行大類分流,教師可直接點擊對應按鈕分流。分班時可查看各專業(yè)未分班學生數(shù)及現(xiàn)有班級數(shù),然后一鍵分班。
對角色進行權限分配是管理員最重要的功能,如圖5所示,管理員根據(jù)特定賬號和密碼登錄后,可在角色管理頁面對教師進行志愿、學院、大類等信息的權限管理。
該大類分流系統(tǒng)使用陜西科技大學電子信息與人工智能學院2021級539名學生的大類分流數(shù)據(jù)作為測試數(shù)據(jù),數(shù)據(jù)集中包括電子信息專業(yè)285人,計算機專業(yè)254人。并根據(jù)學院真實情況,新建了計算機、電子信息兩個大類以及計算機科學與技術、電子科學與技術、光電信息科學與工程、物聯(lián)網(wǎng)工程等多個專業(yè)及所屬班級。PC端主要使用IE瀏覽器、Chrome瀏覽器對系統(tǒng)各項功能進行測試,其中包括用戶登錄、志愿填報、結(jié)果查看、專業(yè)管理、專業(yè)推薦、班級管理、績點優(yōu)先分流、志愿優(yōu)先分流、班級分配、權限分配等多種功能。經(jīng)測試所有功能均能準確無誤運行。與文獻[10-12]相比,增加了專業(yè)推薦、班級分配,分流策略比較、權限管理、數(shù)據(jù)分析與導出等功能。
同時,該系統(tǒng)也在測試數(shù)據(jù)的規(guī)模和復雜度、算法在不同規(guī)模數(shù)據(jù)上的運行響應時間、用戶體驗等方面進行了重點測試。其中分流響應時間與文獻[12]相比提升了35%,經(jīng)數(shù)據(jù)增強后將學生數(shù)據(jù)擴充至1 200條和1 500條后,響應時間依舊有明顯提升,故系統(tǒng)性能滿足大多數(shù)學院要求。最后,在測試無誤后請同學、教師試用該系統(tǒng),滿意度較高,無需引導即可上手,滿足學生和教師需求。
針對陜西科技大學電子信息與人工智能學院2021級學生數(shù)據(jù),經(jīng)多次結(jié)果比較,最終選擇“績點優(yōu)先分流”算法進行分流,結(jié)果如表2所示。除“電子科學與技術”“光電信息科學與工程”兩個專業(yè)外,各個專業(yè)錄取人數(shù)相對均衡,符合計劃要求。同時,該系統(tǒng)在規(guī)定各專業(yè)班級數(shù)的情況下選擇按照績點排序Z型折線分班,每個班級績點有高有低,避免了優(yōu)秀生源過度集中。
表2 大類分流、專業(yè)分班結(jié)果
該系統(tǒng)以“大類分流、專業(yè)分班”培養(yǎng)模式為背景,通過走訪學生及教師充分了解對于分流分班系統(tǒng)的需求,整體采用B/S架構前后端分離的模式,后端系統(tǒng)實現(xiàn)采用SpringBoot+MyBatisPlus框架,前端頁面在HTML5、CSS技術上結(jié)合Vue框架,數(shù)據(jù)庫使用MySQL。分為學生端、教師端、管理員端三個模塊,充分照顧到各種角色的需求,方便學生填報志愿,方便教師進行學院、大類、專業(yè)、班級管理以及一鍵完成分流、分班,方便系統(tǒng)管理員對各種功能權限進行管理。測試和應用結(jié)合陜西科技大學電子信息與人工智能學院2021級本科生數(shù)據(jù)進行,頁面清晰明了,響應速度快,分流分班結(jié)果準確合理,有效提高了大類分流、專業(yè)分班過程的效率。后續(xù)將繼續(xù)將該系統(tǒng)推廣至陜西科技大學其他學院及其他高校。