楊 倩
(重慶理工大學(xué) 電子信息與自動化學(xué)院, 重慶 400054)
?
大類招生專業(yè)自動分流在線管理系統(tǒng)
楊倩
(重慶理工大學(xué) 電子信息與自動化學(xué)院, 重慶400054)
摘要:近年來,“大類招生、分流培養(yǎng)”模式被越來越多的高校所采用,在這種新的培養(yǎng)模式下,專業(yè)分流是一個(gè)重要的環(huán)節(jié),手工進(jìn)行專業(yè)分流模式已經(jīng)不能適應(yīng)當(dāng)前的學(xué)生規(guī)模,研發(fā)一套符合實(shí)際需求的分流管理系統(tǒng)非常必要。通過研究和比較,解決了數(shù)據(jù)轉(zhuǎn)換、自動錄取算法等難點(diǎn),成功地開發(fā)出了一套基于B/S結(jié)構(gòu),并采用Clojure、Angular.js、HTML5、Incanter等關(guān)鍵技術(shù)的完整解決方案。
關(guān)鍵詞:大類分流;管理系統(tǒng);自動化;B/S;Clojure
隨著高等教育的深化改革,本科教育正在從傳統(tǒng)的“專業(yè)招生、專業(yè)培養(yǎng)”教育模式向“大類招生、分流培養(yǎng)”模式轉(zhuǎn)變。根據(jù)這種模式,高校按照院系進(jìn)行大類招生,大學(xué)開始1~2年時(shí)間進(jìn)行通識教育、學(xué)習(xí)基本課程,通過這段時(shí)間的基礎(chǔ)學(xué)習(xí),學(xué)生對院系各個(gè)專業(yè)有了更加深入的了解,再根據(jù)自己的興趣和特長選擇適合的專業(yè)。這種模式已經(jīng)被我國大多數(shù)高校所采用,“學(xué)生選擇自己的意向?qū)I(yè),學(xué)校進(jìn)行擇優(yōu)錄取”這個(gè)過程就稱為專業(yè)分流[1-8]。專業(yè)分流影響到學(xué)生的未來以及學(xué)校的教學(xué)質(zhì)量,重要性不言而喻。專業(yè)分流一般周期比較短,具有相當(dāng)?shù)臅r(shí)效性,在這個(gè)過程中,需要充分考慮學(xué)生的基礎(chǔ)課程成績綜合排名、各類特長加分、專業(yè)志愿順序、院系各專業(yè)能夠容納的人數(shù)等因素,因此專業(yè)分流也具有相當(dāng)大的工作量和復(fù)雜性。再加之近年來高校的辦學(xué)規(guī)模不斷擴(kuò)大,學(xué)生人數(shù)增多,如果采用傳統(tǒng)的人工操作方式進(jìn)行專業(yè)分流,不但耗費(fèi)人力,而且出錯的概率大。因此,要想準(zhǔn)確、高效地完成專業(yè)分流,就有必要引入新的技術(shù)實(shí)現(xiàn)整個(gè)過程的自動化和信息化。
1需求分析
考慮到學(xué)院實(shí)際情況,經(jīng)過與各種類型的使用者進(jìn)行溝通,總結(jié)出了以下一些實(shí)際需求:
1) 原始數(shù)據(jù)來自教務(wù)處,是以Excel表格文件形式下發(fā)的,數(shù)據(jù)的每一行記錄包含一組“學(xué)生-課程-成績信息”之間的對應(yīng)關(guān)系。
2) 學(xué)生成績中有的課程成績以數(shù)字形式記錄,有的考查課以“優(yōu)秀”“良好”等的等級方式記錄,后者在處理過程中需要根據(jù)特定的對應(yīng)關(guān)系轉(zhuǎn)換成數(shù)字形式進(jìn)行計(jì)算處理。
3) 由于學(xué)生的補(bǔ)考、重考等情況,特定課程成績記錄有可能不是唯一的一行,處理過程中需要根據(jù)特定的算法計(jì)算出本門課程的唯一結(jié)果分?jǐn)?shù)。
4) 學(xué)生除了各個(gè)課程成績以外,還會根據(jù)在校期間的一些其他活動進(jìn)行獎懲,獎懲會以分?jǐn)?shù)形式計(jì)入總績點(diǎn),獎懲條目和對應(yīng)的分?jǐn)?shù)是在選擇專業(yè)過程中由管理學(xué)生工作的教師在系統(tǒng)中添加;
5) 待選的專業(yè)有人數(shù)限制,根據(jù)學(xué)生總績點(diǎn)排名進(jìn)行自動錄取。如果第1志愿已經(jīng)滿員,就將總績點(diǎn)減少3分,再次排名去競爭第2志愿專業(yè)。如果第2志愿落選,需要再減3分,去競爭第3志愿,依此類推;
6) 在學(xué)生選擇專業(yè)階段,管理員可以實(shí)時(shí)查看學(xué)生的選課情況統(tǒng)計(jì),以直觀的圖表給出統(tǒng)計(jì)結(jié)果。
7) 管理員能對系統(tǒng)的自動錄取結(jié)果進(jìn)行調(diào)整。
8) 系統(tǒng)必須能對分流結(jié)果以Excel形式打印,用于學(xué)生對結(jié)果進(jìn)行簽字確認(rèn)。
通過對以上需求的分析,設(shè)計(jì)出的業(yè)務(wù)模型見圖1。

圖1 業(yè)務(wù)模型
本系統(tǒng)設(shè)計(jì)3類用戶:第1類是管理員用戶,可以導(dǎo)入數(shù)據(jù),設(shè)置進(jìn)程,添加教師用戶,修改其他用戶密碼,設(shè)置專業(yè)信息,修改錄取結(jié)果和導(dǎo)出錄取結(jié)果;第2類是教師用戶,可以查看專業(yè)信息,查看學(xué)生列表,設(shè)置基礎(chǔ)課程學(xué)分,增刪獎懲條目,錄入專業(yè)情況,修改本用戶密碼;第3類是學(xué)生用戶,可以修改自己的用戶名和密碼,查看專業(yè)情況,選擇專業(yè)志愿和查看錄取情況。這三類用戶各自有不同的權(quán)限,其中:管理員有且只有1個(gè);教師可以有多個(gè),需要由管理員添加;學(xué)生名單和信息由已有數(shù)據(jù)導(dǎo)入到系統(tǒng)中,使用學(xué)號登錄系統(tǒng)。
2設(shè)計(jì)與實(shí)現(xiàn)
2.1專業(yè)分流生命周期設(shè)計(jì)
2.3.2實(shí)際產(chǎn)量實(shí)際產(chǎn)量是處理1(CK)最低,為205.82公斤/畝。依次居第5位的是處理2為209.23公斤/畝,每畝比CK增加小麥3.41公斤,增產(chǎn)1.66%;居第4位的是處理3為220.09公斤/畝,每畝比CK增加小麥15.08公斤,增產(chǎn)7.33%;居第3位的是處理4為235.83公斤/畝,每畝比對照增加小麥30.01公斤,增產(chǎn)14.58%;居第2位的是處理5為262.78公斤/畝,每畝比CK增加小麥56.96公斤,增產(chǎn)27.67%;居第1位的是處理6為283.55公斤/畝,每畝比CK增加小麥77.73公斤/畝,增產(chǎn)37.77%。
考慮到數(shù)據(jù)的一致性和完整性,本系統(tǒng)分為5個(gè)處理階段,見圖2。

圖2 系統(tǒng)處理的5個(gè)階段
部分處理需要依賴其他處理結(jié)果作為輸入,比如,計(jì)算學(xué)生總成績需要必修課列表和考查課等級所對應(yīng)的分?jǐn)?shù)信息,這些信息在“系統(tǒng)配置”階段設(shè)置,在從“系統(tǒng)配置”跳轉(zhuǎn)到“專業(yè)選擇”的過程中進(jìn)行所有學(xué)生的總成績運(yùn)算,到專業(yè)選擇階段,學(xué)生打開頁面可以直接得到自己的總成績和排名,不用每次重新運(yùn)算。采用這種分階段設(shè)計(jì),可以在不同階段可以啟用或者禁用部分系統(tǒng)功能。在系統(tǒng)階段的跳轉(zhuǎn)過程中,將前面階段產(chǎn)生的數(shù)據(jù)統(tǒng)一運(yùn)算處理,不僅大大簡化了系統(tǒng)設(shè)計(jì),而且能將一些復(fù)雜的計(jì)算或者大量數(shù)據(jù)庫查詢集中到階段跳轉(zhuǎn)的過程中,不需要在用戶每一次操作時(shí)都在后臺對數(shù)據(jù)全集進(jìn)行掃描,提高了系統(tǒng)的響應(yīng)速度。
2.2自動錄取算法
自動錄取算法是本系統(tǒng)較關(guān)鍵的部分,采用與待選專業(yè)數(shù)量一致的多級隊(duì)列選擇算法進(jìn)行錄取,基本思想如圖3所示。

圖3 自動錄取算法基本思路
處理流程:
1) 首先根據(jù)總分從高到低排序,作為第1志愿隊(duì)列。第1次開始運(yùn)算時(shí),第2志愿隊(duì)列以及后續(xù)隊(duì)列為空。作為初始條件,所有專業(yè)錄取限制人數(shù)之和必須大于或者等于學(xué)生人數(shù);
2) 取出所有隊(duì)列(如果有隊(duì)列為空則忽略)頭部節(jié)點(diǎn)的最高分節(jié)點(diǎn),如果所有隊(duì)列為空,表示完成自動錄取過程。
3) 將最高分節(jié)點(diǎn)從所取隊(duì)列中刪除,根據(jù)其所取隊(duì)列的等級,記錄為變量L,檢查所取出節(jié)點(diǎn)第L志愿對應(yīng)的容器數(shù)量是否已滿,即是否達(dá)到了錄取上限。
4) 如果未達(dá)到上限,則將節(jié)點(diǎn)所對應(yīng)的學(xué)生放入該學(xué)生第L志愿的容器,重復(fù)第2步。
5) 如果該節(jié)點(diǎn)所對應(yīng)學(xué)生第L志愿的容器已經(jīng)達(dá)到上限,則將該節(jié)點(diǎn)總分減去3分,插入到第L+1級的隊(duì)列尾部,重復(fù)第2步。
6) 進(jìn)行依次取出學(xué)生插入其第1志愿對應(yīng)專業(yè)的容器,如果發(fā)現(xiàn)其第1志愿專業(yè)容器裝滿,即達(dá)到了專業(yè)的錄取限制,就將當(dāng)前學(xué)生總分減去3分放入第2志愿隊(duì)列尾部。下一次取出所有隊(duì)列頭部中分?jǐn)?shù)最高者,查看其當(dāng)前專業(yè)。
該算法采用多級隊(duì)列,進(jìn)入下一級隊(duì)列默認(rèn)是排好順序的狀態(tài),從各個(gè)隊(duì)列頭部取出即為各自最大值,不用重復(fù)掃描隊(duì)列,并且運(yùn)算過程全程都在內(nèi)存中完成,最后再將結(jié)果一并寫入數(shù)據(jù)庫,整個(gè)過程具有非常高的效率。
2.3前后端通信設(shè)計(jì)
本系統(tǒng)采用B/S(瀏覽器/服務(wù)器)架構(gòu)設(shè)計(jì)。瀏覽器端是基于Angular.js框架開發(fā)的單頁應(yīng)用。服務(wù)端采用Clojure語言開發(fā),基于http-kit嵌入式HTTP服務(wù)器和H2嵌入式關(guān)系數(shù)據(jù)庫,整個(gè)服務(wù)端應(yīng)用靜態(tài)編譯成java字節(jié)碼,運(yùn)行于jvm虛擬機(jī)之上。
Angular.js是google公司使用javascript開發(fā)的前端MVC框架,基于Angular.js框架可以非常容易地開發(fā)出單頁Web程序。本系統(tǒng)瀏覽器端采用Angular.js框架,整個(gè)運(yùn)行周期只需要在登錄階段下載頁面和javascript腳本等內(nèi)容。中間過程前端和后端根據(jù)需要采用AJAX技術(shù)進(jìn)行JSON數(shù)據(jù)的交互,頁面進(jìn)行局部更新,避免了頁面整頁重復(fù)刷新,大大減少了數(shù)據(jù)流量。
Clojure語言于2007年發(fā)布,是LISP語言的一種方言,運(yùn)行于java虛擬機(jī)之上,所以Clojure既具有LISP的高擴(kuò)展性和高并發(fā)性,又能良好地和java語言進(jìn)行互操作,以便充分利用java生態(tài)系統(tǒng)。近年來,Clojure在服務(wù)端開發(fā)中被廣泛采用。本系統(tǒng)服務(wù)端框架主要業(yè)務(wù)邏輯采用Clojure語言開發(fā),充分利用了Clojure語法簡潔高效的特性,并且采用了成熟的java組件http-kit和H2,分別處理HTTP協(xié)議和數(shù)據(jù)的持久存儲,發(fā)揮了Clojure和java良好的交互性。
前端和后端通信采用JSON格式。JSON格式數(shù)據(jù)設(shè)計(jì)的初衷是為了方便瀏覽器前端的javascript進(jìn)行處理,目前被廣泛用于數(shù)據(jù)交互協(xié)議。Clojure內(nèi)置了高效的JSON處理模塊,能將內(nèi)部的hashmap格式數(shù)據(jù)與JSON數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換,既方便后臺數(shù)據(jù)處理,又方便數(shù)據(jù)的傳輸和前端處理。
2.4統(tǒng)計(jì)功能
該功能用于學(xué)生專業(yè)選擇階段和后續(xù)階段,實(shí)時(shí)顯示當(dāng)前完成選擇的學(xué)生人數(shù)、比例、各個(gè)志愿的填報(bào)比例以及各個(gè)專業(yè)的錄取結(jié)果等,能夠從可視化的數(shù)據(jù)界面上得到各個(gè)專業(yè)的受歡迎情況,以及學(xué)生的成績分布等信息,為后續(xù)教學(xué)和專業(yè)設(shè)置提供直觀的依據(jù)。
統(tǒng)計(jì)功能采用HTML5Canvas接口,以JSON格式將學(xué)生選擇專業(yè)以及錄取情況數(shù)據(jù)獲取到瀏覽器端,通過2D圖形方式以餅狀圖、柱狀圖等形式在網(wǎng)頁上展示。圖4、圖5是重慶理工大學(xué)電子信息與自動化學(xué)院在2014年秋季大類分流環(huán)節(jié)中使用本系統(tǒng)進(jìn)行專業(yè)分流的部分實(shí)時(shí)截圖。
2.5數(shù)據(jù)導(dǎo)入和導(dǎo)出
考慮到實(shí)際情況,本系統(tǒng)不直接接入教務(wù)系統(tǒng)數(shù)據(jù)庫,需要獨(dú)立運(yùn)行。教務(wù)處以Excel格式導(dǎo)出學(xué)生名單和成績等原始數(shù)據(jù),這里就需要系統(tǒng)有Excel數(shù)據(jù)的導(dǎo)入功能。由于在分流結(jié)束后需要打印結(jié)果供學(xué)生確認(rèn),就需要有Excel導(dǎo)出功能。本系統(tǒng)集成了使用Clojure語言編寫的Incanter數(shù)據(jù)統(tǒng)計(jì)和分析庫,該庫既能完成Excel文件的讀寫,同時(shí)還能對讀入數(shù)據(jù)進(jìn)行分組、篩選、轉(zhuǎn)換、統(tǒng)計(jì)等操作,解決了該獨(dú)立系統(tǒng)的輸入輸出問題。

圖4 志愿選擇情況統(tǒng)計(jì)截圖

圖5 錄取情況統(tǒng)計(jì)截圖
2.6程序調(diào)試
服務(wù)端程序使用Clojure語言開發(fā)。得益于Clojure語言的JIT(JustInTime)編譯特性,一般靜態(tài)編程語言調(diào)試需要重復(fù)進(jìn)行“編輯-編譯-重新加載運(yùn)行”這種比較低效的流程。而在Clojure語言中,利用其交互式編程環(huán)境REPL(Read-Eval-PrintLoop),不用中斷當(dāng)前運(yùn)行的進(jìn)程,動態(tài)添加和修改函數(shù)進(jìn)行在線編譯調(diào)試,這樣,算法各個(gè)部分編輯完成后可以立即進(jìn)行手工調(diào)用測試和觀察結(jié)果,節(jié)省了編譯、重新加載運(yùn)行的等待時(shí)間,極大地提高了調(diào)試效率。
調(diào)試完成后的程序在上線運(yùn)行之前又可以利用Clojure語言的AOT(AheadOfTime)編譯特性,將Clojure代碼編譯為Java字節(jié)碼,然后部署到服務(wù)器,使用java虛擬機(jī)來加載運(yùn)行,這樣可以獲得良好的運(yùn)行效率。通過JIT和AOT編譯特性的靈活運(yùn)用做到了開發(fā)效率和產(chǎn)品運(yùn)行效率兩不誤。
在開發(fā)過程中,一般使用cURL命令行工具模擬向服務(wù)端發(fā)送HTTP請求以及得到JSON結(jié)果返回,調(diào)試客戶端與服務(wù)端的數(shù)據(jù)交互。客戶端代碼運(yùn)行于瀏覽器,調(diào)試主要利用Chrome瀏覽器的DevTool。除了斷點(diǎn)調(diào)試、控制臺打印輸出、網(wǎng)絡(luò)請求數(shù)據(jù)Dump等常用的手段外,UI調(diào)試可以在線編輯DOM以及CSS屬性,實(shí)時(shí)查看UI布局的變化。這些手段都體現(xiàn)了現(xiàn)代Web標(biāo)準(zhǔn)化帶來的開發(fā)高效性和靈活性,極大地降低了開發(fā)的復(fù)雜度,縮短了開發(fā)周期。
本系統(tǒng)的開發(fā)調(diào)試工作主要在MacOSX系統(tǒng)上完成,并最終部署到UbuntuLinuxserver上運(yùn)行。得益于Clojure和Java虛擬機(jī)的可移植性,開發(fā)和部署并不局限于這些系統(tǒng),通常通過運(yùn)行Oraclejava的平臺即可以進(jìn)行該系統(tǒng)的開發(fā)和部署。除了提到的MacOSX、Linux,也可以使用Windows等系統(tǒng)進(jìn)行調(diào)試和部署。
3結(jié)束語
本文所闡述的分流管理系統(tǒng)解決了當(dāng)前大類分流環(huán)節(jié)的實(shí)際難題,采用當(dāng)下成熟的Web技術(shù),整合了行業(yè)內(nèi)一些優(yōu)秀的技術(shù)和組件,最終完成了一套切實(shí)可行的軟件解決方案,該方案在重慶理工大學(xué)電子信息與自動化學(xué)院2014年秋季大類分流環(huán)節(jié)中成功部署和實(shí)施,大約400名師生使用了該系統(tǒng)并完成了大類專業(yè)分流工作,功能完整性和系統(tǒng)穩(wěn)定性都經(jīng)受住了考驗(yàn)。該方案對于國內(nèi)其他高校的大類分流工作具有借鑒作用,軟件系統(tǒng)具有一定的推廣價(jià)值。
參考文獻(xiàn):
[1]ERICR.ClojureDataAnalysisCookbook[M].[S.l.]:PacktPublishingLtd,2013.
[2]DMITRIS.WebDevelopmentwithClojure.[S.l.]:PragmaticBookshelf,2014.
[3]SHYAMS.AngularJS:UpandRunning:EnhancedProductivitywithStructuredWebApps[M].[S.l.]:O’ReillyMediaInc,2014.
[4]MUSCIANOC,KENNEDYB,WEYLE.HTML5-UpandRunning[M].[S.l.]:O’ReillyMediaInc,2010.
[5]汪毅能,盛志琴.多學(xué)科工科院系大類招生分流培養(yǎng)模式初探[J].中國電力教育,2014(8):12-13.
[6]汪筱蘭,沈耀良.淺談大類招生培養(yǎng)中的專業(yè)分流[J].赤峰學(xué)院學(xué)報(bào),2011,3(11):208-209.
[7]尤玲玲.大類招生、分流培養(yǎng)——對本科院校計(jì)算機(jī)專業(yè)學(xué)生采取的思考[J].保山學(xué)院學(xué)報(bào),2013(5):61-63.
[8]張鵬,王強(qiáng)強(qiáng),甄東龍,等.“大類招生,分流培養(yǎng)”招生培養(yǎng)模式的利弊探析[J].現(xiàn)代商貿(mào)工業(yè),2012(7):155.
(責(zé)任編輯楊文青)
Research and Implementation on Web Management SystemforSpecialtyClassification
YANG Qian
(College of Electronic Engineering and Automation,
ChongqingUniversityofTechnology,Chongqing400054,China)
Abstract:Inrecentyears,specialty-freerecruitmentmodehasbeenmoreandmorepoupularincollegesanduniversities,andmanualspecialtyclassificationwouldunabletomeetincreasingstudentscale,soitisverynecessarytodevelopasetoftoolstofullfilltherequirement.Throughdeepstudyandcomparison,thedifficultiessuchasdataconversionandautomaticextractionalgorithmetcwereresolved.AcompletesolutionforthisworkbasedonB/SstructurewiththeadoptionofkeytehnologiessuchasClojure、Angular.js、HTML5、Incanterwasrealizedsuccessfully.
Keywords:specialty-freerecruitment;managementsystem;automation;B/S;Clojure
收稿日期:2016-04-12
基金項(xiàng)目:重慶理工大學(xué)2013年高等教育教學(xué)改革研究課題(2013YB17)
作者簡介:楊倩(1984—),女,浙江諸暨人,碩士,講師,主要從事嵌入式系統(tǒng)研究。
doi:10.3969/j.issn.1674-8425(z).2016.06.022
中圖分類號:TP39
文獻(xiàn)標(biāo)識碼:A
文章編號:1674-8425(2016)06-0130-05
引用格式:楊倩.大類招生專業(yè)自動分流在線管理系統(tǒng)[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)),2016(6):130-134.
Citationformat:YANGQian.ResearchandImplementationonWebManagementSystemforSpecialtyClassification[J].JournalofChongqingUniversityofTechnology(NaturalScience),2016(6):130-134.