任喜偉,杜豐怡,李兆允,侯佳蕾
(陜西科技大學 電子信息與人工智能學院,陜西 西安 710021)
隨著高等教育改革深入推行,專業間的界限逐漸淡化,學科交叉融合發展已成為新的趨勢。傳統的按計劃招生、按專業培養的人才培養模式已不能完全適應經濟社會的發展要求,“大類招生、分流培養”作為一種新的人才培養模式逐漸被眾多高校采用[1-2]。該模式允許學生在高考結束后,按照大類填報志愿,后經一段時間基礎課的通識培養,再根據學生志愿、成績排名、教學資源等情況綜合考慮,將學生分流至大類內的各個專業進行學習[3-4]。
在國外,哈佛大學率先實行“學生自主選擇型”專業分流模式,允許學生自主選擇專業方向進行學習,實現專業分流[5]。此后,世界上其他高校也紛紛對大類分流的模式進行嘗試和探索。而國內也在人才培養模式上不斷探索,從建國之初學習蘇聯的人才培養模式[6],到20世紀80年代后期,由北京大學首先提出“大類招生, 分流培養”模式,隨后被眾多的國內高校所采納[7-8]。鑒于傳統紙質化分流工作收集學生數據復雜度高[9]、耗費大量人力物力、無法對分流數據可視化分析等特點,實現高校大類分流、專業分班信息化改革意義重大。
楊倩[10]提出了一種瀏覽器端采用Angular.js框架的單頁應用系統,實現了專業大類分流;熊凱等人[11]采用B/S架構,Hibernate、Spring等框架進行系統實現;宋安玲等人[12]提出一種基于C/S架構、.NET框架、C#語言的分流系統,采用志愿分流算法來完成分流工作。上述文獻均采用不同技術開發相應的軟件系統,在一定條件下有效完成了專業大類分流工作,但還存在由于系統功能單一、開發代碼繁雜、系統架構陳舊可能導致的分流結果不準、效率不高、操作不便等問題。
基于此,提出一種基于Vue+SpringBoot框架的高校大類分流系統。系統融合手機端、PC端和服務器端,采用B/S架構,前端使用Vue框架便于數據傳輸[13],后端使用SpringBoot+MyBatisPlus框架,增強數據安全性[14],同時增加系統功能,高效、準確、便捷地完成專業大類分流工作。
該系統主要用到以下開發工具和設計模式。
(1)Web服務器。
系統前端使用Webpack進行構建,Nginx進行部署[15]。后端使用SpringBoot集成的Tomcat服務器,Tomcat是一個免費開源的Web應用服務器,可處理動態請求。
(2)Vue框架。
Vue框架是一套用于構建用戶界面的漸進式JavaScript框架,采用自底向上增量開發的設計,提供了豐富的組件庫,解決了當前應用開發組件不豐富的問題。
(3)SpringBoot框架。
SpringBoot框架是Java平臺上的一種開源應用框架,通過簡化配置來簡化Spring應用的搭建和開發,它提供具有控制反轉特性的容器,同時支持面向切面編程。在項目管理方面,SpringBoot通過配置Maven工具來管理項目資源,提高了開發效率。
(4)MyBatisPlus框架。
MyBatisPlus框架是基于MyBatis框架的增強工具包,它提供了許多簡化MyBatis開發的注解和工具,如自動注入ID、自動填充、邏輯刪除等,同時還支持多種數據庫,能夠幫助開發人員快速開發高質量的數據訪問層。
(5)MySQL數據庫。
MySQL是一種開源的關系型數據庫管理系統,現由Oracle公司維護和支持。它支持多種數據類型;具有高度的穩定性;并且提供了豐富的安全功能,如訪問控制、加密、認證等,以保證數據的安全性和可靠性。
(6)MVC設計模式。
在MVC(Model-View-Controller)的架構下,用戶直接與View頁面進行交互,然后通過數據綁定將用戶請求轉發給Controller,Controller篩選合適的Model進行業務邏輯處理,處理后的結果再通過Controller傳遞給View,對View渲染更新。MVC設計模式降低了模塊之間的耦合性,方便快速部署,有利于軟件工程化管理。
為了便于系統開發,采用了前后端分離的開發模式,前端采用Vue框架,后端采用SpringBoot+MyBatisPlus框架。系統的整體架構設計如圖1所示。

圖1 系統總體架構
首先,用戶可以通過PC端、手機端、平板電腦等終端設備使用該系統;其次,用戶在終端成功登錄后,前端通過Tomcat應用服務器處理請求,調用志愿填報、專業管理、大類分流、專業分班、學生管理等功能的后端接口,實現功能;而SpringBoot的后端服務通過獲取token數據[16]對用戶的角色進行判斷,控制用戶登錄后所能夠使用的功能權限;系統的前后端通過發送http請求及響應的方式實現數據交互,數據傳輸到后臺后使用SpringBoot框架進行業務邏輯處理和數據安全管理,同時在后臺集成MyBatisPlus框架,建立與MySQL數據庫的連接并從數據庫中獲取JSON格式的數據、執行具體功能任務的SQL語句,實現對數據庫的操作。
該系統分流設計績點優先和志愿優先2種核心算法,分流后提供隨機、直線、曲線、折線等4種分班模式,以下主要介紹分流核心算法。
(1)績點優先的大類分流算法(以填報三個志愿為例)。

圖2 績點優先分流算法流程
績點優先分流算法流程如圖2所示。首先,將學生按照績點和志愿兩個維度進行降序排序;其次,從第一個學生的志愿開始獲取,在該生第一志愿的專業人數有空缺時,將該生分配入第一志愿的專業,并寫入數據庫;如果該生第一志愿的專業人數已滿,則依次查詢第二志愿、第三志愿,在人數有空缺時進行錄取,并將錄取結果寫入數據庫保存;接著,查詢績點排名第二的學生志愿,按照上述步驟依次從學生第一志愿開始進行志愿的分配,循環往復直到所有學生分流完畢,并將錄取結果寫入數據庫進行保存。
(2)志愿優先的大類分流算法(以填報三個志愿為例)。
志愿優先分流算法流程如圖3所示。首先,獲取學生填報的志愿數據,然后將志愿進行降序排序。接著,按照第一志愿的不同將學生分類(即將第一志愿均為A專業的學生分為A組,第一志愿均為B專業的學生分為B組,第一志愿均為C專業的學生分為C組),并在每個類別中將學生按照績點進行降序排序。考慮每個專業設置的學生容量,如果某志愿填報的學生數量小于該專業的學生容量,則將全部學生錄取到該專業,并將錄取結果保存到數據庫中;如果某志愿填報的學生數量大于該專業的學生容量,則按照績點降序排序優先滿足成績高的學生的志愿,剩余學生在第一志愿初步分配好后,查看其第二志愿專業人數是否有空缺,如果有則將該生錄取至第二志愿專業,并將結果寫入數據庫;如果第二專業人數無空缺,則將該生錄取至第三志愿專業,并將結果寫入數據庫。錄取流程依次往復,直到將所有學生錄取完畢并將結果寫入數據庫進行保存。

圖3 志愿優先分流算法流程
數據庫建立了學生信息表、學院表、大類表、專業表、班級表、志愿表等一系列數據表,系統數據庫主要E-R關系如圖4所示。

圖4 大類分流系統E-R圖
接口是前后端進行通信的橋梁,系統后端需要設計接口,為前端的頁面展示提供數據。系統使用Restful風格的設計接口,結構清晰明了,方便后續維護。本節以志愿填報類對應的接口信息表作為接口設計的示例,如表1所示。

表1 大類分流系統接口描述
(1)登錄驗證實現。
該系統在登錄時需要用到驗證碼的功能,主要依靠Google的開源驗證碼生成器Kaptcha來實現。首先需要導入相關Jar包,然后配置Kaptcha驗證碼的生成規則,配置好后就可以生成驗證碼。而要驗證驗證碼是否正確,直接對表單中生成的UUID和輸入的驗證碼作為條件查詢數據庫,如果可以查出記錄,說明驗證碼正確。
(2)前后端分離實現。
前后端分離的核心是由客戶端請求的身份權限校驗,該系統使用Token機制實現校驗[16]。通過在登錄時生成唯一的Token憑證進行認證,前端在登錄完成后將Token保存在本地,每次請求后端Api時把Token放在Http請求頭中,服務端通過解析Http請求頭中的Token字段,確定用戶身份和權限,從而進行對應的業務處理。
(3)信息加密實現。
對于該系統而言,學生信息的安全性是首要考慮的問題,其中用戶的密碼更是重中之重。考慮到學生信息數量龐大的情況,使用MD5加密算法對用戶密碼進行加密,并對用戶密碼進行隨機加鹽(Salt),使得即使可以拿到數據庫密文,也無法逆向推導出密碼。
(4)數據校驗實現。
后端對于前端的請求數據并不是無差別信任,在進行相關業務處理前,首先根據Token憑證驗證身份信息,其次對請求的數據進行XSS等安全校驗,最后對關鍵字段進行檢測,確保業務數據無臟數據、無效數據等。
學生端頁面是被訪問次數最多,關聯用戶體驗最強的頁面,如圖5所示,學生在登錄頁面輸入自己的學號、密碼以及驗證碼登錄,登錄成功后根據學生大類顯示該生可填報的志愿和起止時間。

圖5 系統頁面實現
教師端頁面是展示信息最全、功能最復雜的頁面,如圖5所示,教師登錄后可新建大類及其所屬學院;新增專業的同時設置學生人數及所屬的年級、大類、學院等關聯信息。同時該系統提供“志愿優先分流”和“績點優先分流”兩種分流算法進行大類分流,教師可直接點擊對應按鈕分流。分班時可查看各專業未分班學生數及現有班級數,然后一鍵分班。
對角色進行權限分配是管理員最重要的功能,如圖5所示,管理員根據特定賬號和密碼登錄后,可在角色管理頁面對教師進行志愿、學院、大類等信息的權限管理。
該大類分流系統使用陜西科技大學電子信息與人工智能學院2021級539名學生的大類分流數據作為測試數據,數據集中包括電子信息專業285人,計算機專業254人。并根據學院真實情況,新建了計算機、電子信息兩個大類以及計算機科學與技術、電子科學與技術、光電信息科學與工程、物聯網工程等多個專業及所屬班級。PC端主要使用IE瀏覽器、Chrome瀏覽器對系統各項功能進行測試,其中包括用戶登錄、志愿填報、結果查看、專業管理、專業推薦、班級管理、績點優先分流、志愿優先分流、班級分配、權限分配等多種功能。經測試所有功能均能準確無誤運行。與文獻[10-12]相比,增加了專業推薦、班級分配,分流策略比較、權限管理、數據分析與導出等功能。
同時,該系統也在測試數據的規模和復雜度、算法在不同規模數據上的運行響應時間、用戶體驗等方面進行了重點測試。其中分流響應時間與文獻[12]相比提升了35%,經數據增強后將學生數據擴充至1 200條和1 500條后,響應時間依舊有明顯提升,故系統性能滿足大多數學院要求。最后,在測試無誤后請同學、教師試用該系統,滿意度較高,無需引導即可上手,滿足學生和教師需求。
針對陜西科技大學電子信息與人工智能學院2021級學生數據,經多次結果比較,最終選擇“績點優先分流”算法進行分流,結果如表2所示。除“電子科學與技術”“光電信息科學與工程”兩個專業外,各個專業錄取人數相對均衡,符合計劃要求。同時,該系統在規定各專業班級數的情況下選擇按照績點排序Z型折線分班,每個班級績點有高有低,避免了優秀生源過度集中。

表2 大類分流、專業分班結果
該系統以“大類分流、專業分班”培養模式為背景,通過走訪學生及教師充分了解對于分流分班系統的需求,整體采用B/S架構前后端分離的模式,后端系統實現采用SpringBoot+MyBatisPlus框架,前端頁面在HTML5、CSS技術上結合Vue框架,數據庫使用MySQL。分為學生端、教師端、管理員端三個模塊,充分照顧到各種角色的需求,方便學生填報志愿,方便教師進行學院、大類、專業、班級管理以及一鍵完成分流、分班,方便系統管理員對各種功能權限進行管理。測試和應用結合陜西科技大學電子信息與人工智能學院2021級本科生數據進行,頁面清晰明了,響應速度快,分流分班結果準確合理,有效提高了大類分流、專業分班過程的效率。后續將繼續將該系統推廣至陜西科技大學其他學院及其他高校。