李琴,崔名揚,錢奕文,劉晶晶
(鄭州航空工業管理學院,河南鄭州 450046)
近年來,研究生招生規模逐步增加,導致高校研究生管理工作也愈加復雜,研究生在校期間所取得的學術成果總量也有著跨越式增長。雖然高校也建設有研究生信息管理系統,但其功能覆蓋范圍廣泛,未有效針對學術檔案管理的特點進行開發,從而導致學術檔案管理功能缺失或不適應當前研究生管理工作[1]。本文針對上述問題,使用Java 和前端語言開發一套研究生學術檔案管理系統,以便對研究生在校期間的學術檔案進行全流程管理。
根據學術檔案管理系統的基本功能需求,系統可以把角色分為管理員和學生兩個角色,基本功能有:填寫學術檔案、上傳文件、查看審核狀態、添加學生、審批申請、查閱檔案等。
系統業務如圖1所示。

圖1 研究生學術檔案管理系統功能框架
學生的賬號信息會提前通過管理員頁面添加進數據庫。在學生第一次登錄時會有彈窗提示及時修改密碼。登錄成功后學生只能查詢或修改自己的檔案信息。在上傳或者查詢學術檔案時,學生可以在管理系統的不同的模塊下進行查詢或者上傳[2]。上傳完學術檔案后該條數據會顯示提交時間和審核狀態等,方便學生及時查看審核進度或者及時進行修正,學生還可以通過該記錄的預覽圖標查看該文件,防止出現上傳時文件受損等情況。在學術檔案提交并未進行審核時,學生可以對申請進行修改和刪除,當學術檔案申請不通過時,學生可在審核信息里查看駁回原因。
管理員擁有系統的全部權限,其賬號信息在管理員數據庫中預設,在學生管理界面可以對學生賬號進行增加、刪除、修改、查詢。在學術檔案的不同模塊下顯示所有學生的檔案信息,可以通過審核狀態進行分類,然后對其進行審核。
SpringBoot 是基于Spring 開發的一種全新的輕量級框架,繼承了原有的優秀特點,其中核心內容是Spring MVC,作為Web 的請求模塊來為SpringBoot 提供數據的請求和響應,而且還通過各種配置來簡化整個系統的搭建和開發過程。根據SpringBoot框架的特性結合此研究生檔案管理系統,可以將系統的架構分為三層:基本功能層、業務邏輯層、數據交換層[3]。
此層是整個系統的表現層,集成系統的各個功能模塊,這些模塊包括:用戶登錄模塊、用戶管理模塊、檔案查詢模塊、文件上傳模塊等[4]。這些模塊中產生的數據會通過SpringBoot框架的表現層進行請求的接收和轉發,將請求進一步傳遞給下一層架構并進行返回數據的接收,實現基本功能的正常運行,保證用戶的體驗。
業務邏輯層是檔案管理系統的核心部分,負責整體系統的業務邏輯,通過面向對象的方式來封裝業務組件。此層是接受基本功能的請求并作進一步的處理,首先進行請求的校驗,查看是否已經超出權限范圍,是否讓其進入下一步處理;其次請求通過攜帶的請求頭找到對應的Controller接口,進入Spring框架的Controller層中進行數據邏輯的處理,在數據邏輯的處理時需要對數據的數據原型進行驗證防止出現數據沖突,接著就進入了核心業務區,與數據交換層進行數據的交換。數據進入到底層邏輯架構時,具體的業務非常清晰,其中包括,查詢:用戶可以通過調用service接口查詢到需要的信息、刪除:對已經完成的各種操作進行刪除處理、增加:用戶可以將需要的數據存入到數據庫中、修改:當用戶的數據出錯時通過基本邏輯層進行更改傳入到此處,再調用數據庫的接口進行數據的修改。
數據交換層是本系統的底層,負責與數據庫進行交互。與數據庫交互是通過SQL代碼來實現,但是原生的SQL 代碼過于復雜,進行編寫時較為固定,修改時非常復雜,不利于后期的維護和修改。本系統采用MyBatis-plus 插件來簡化工作量,當業務邏輯層將要增刪改查的請求發送到這里時,直接可以使用已經封裝好的updateService、saveService、deleteService等來進行數據與數據庫信息的交換,保證數據的完整性,和快速數據交換。
通過研究該學術檔案管理系統的應用環境,來構造一個最優的數據模型,使其能夠有效地存儲和滿足對管理檔案數據的需求。進行數據庫的設計時采用了一對一設計原則,獨特命名原則,能夠盡可能地減少維護時問題的出現,保證數據維護工作順利開展的同時降低了維護工作的難度,能夠產生實體間的必然聯系,提高應用程序的可靠性、科學性,以及自身的性能,減少數據的冗雜,維護數據的一致性,保持各關鍵詞之間存在的必然相對應聯系[5]。
1)數據一致性
在設計數據庫時,需要定義數據表之間的關系、屬性以及數據類型等細節確保數據的一致性。在不同的表中存儲相同的數據時保持同步,避免重復數據和錯誤數據。如果不能保證數據的一致性和連續性,將會對系統造成不可預知的后果。
2)數據安全性
數據庫里的數據非常重要,涵蓋了每個學生的學術檔案信息,這些檔案中不乏存在一些敏感性信息,一旦泄露將會對學生的日常生活產生不良影響,所以數據庫必須經過高度安全化設計和保護,以確保它們不會被非法請求竊取或者篡改。
3)數據操作的效率性
良好的數據庫設計可以高效地支持數據操作,包括數據的增加、查詢、更新、刪除等操作。通過優化數據操作流程和檢索方式,可以為系統大大節省時間和資源,提高系統的性能。
4)數據的可擴展性
在設計數據庫時,應該預測到未來的數據庫擴展需求。不斷增加的數據需要有良好的設計來支持,如果數據庫沒有經過良好的設計來處理擴展需求的話,維護和管理這些數據庫將成為系統的一個巨大挑戰。
在學生檔案管理系統設計時把握好數據庫設計的重要性,盡量設計出一個優良的數據模型,使系統減少資源的浪費、保證數據的完整性、提高查詢效率、加快計算速度、減少資源的占用、加快后期的編碼速度。
為了便于用戶對系統進行操作,對檔案管理系統進行數據分析時,需要設計賬號表和檔案申請表。其中賬戶表根據姓名、賬號、密碼等字段進行設計并劃分為兩種,學生表和管理員表,為他們的登錄修改密碼等提供信息檢索、修改和刪除服務;檔案申請表根據名稱、時間、申請人、狀態等字段進行劃分為七個不同類型的數據表,學科競賽申請表、學術交流申請表、科研獎勵申請表、學術論文申請表、科研項目申請表、知識產權申請表、學術著作申請表。為學生的申請和管理員的審核提供檢索、修改和刪除服務[6]。
用戶登錄功能界面上提供了兩種不同的方式來實現用戶登錄:管理員登錄和用戶登錄,都是通過其登錄界面輸入賬號和密碼進入系統。
在登錄賬號信息數據采集時,登錄頁面采用的是Element-UI的表單組件收集數據,然后進行數據的綁定,并且會對輸入的數據進行校驗,如果校驗不通過,用戶將無法點擊登錄按鈕,保證數據的完整性和安全性,反之用戶點擊登錄時將符合條件的數據通過登錄api 接口把數據傳輸到后端,進行下一步的數據校驗和查詢并且等待返回結果。
當登錄信息經過前端接口傳輸到后端時,首先會對數據中的密碼進行md5加密,防止密碼明文造成嚴重的后果,其次獲取到賬號在數據庫進行查詢,如果沒有該賬號信息,后端會直接返回false 發送給前端,前端檢測到錯誤信息后,就會彈出登錄失敗的信息提示;如果查詢到該用戶名則會獲取到該用戶名下的密碼,與提前加密的密碼進行比對,如果匹配失敗則返回false,匹配成功則返回true,前端接收到成功信息后,將進行頁面的跳轉,進入到管理主頁。
對于學生的檔案管理系統,權限的分配顯得尤為重要。如果不進行權限的分配,就會造成查詢、修改、刪除的功能紊亂,用戶可以隨時查看和修改別人的檔案信息,甚至可能刪除數據庫里全部的檔案信息,這將對數據庫信息造成不可逆的影響。另一方面,為了防止某些用戶的惡意請求,系統的后端添加了一個攔截插件,將對系統內的所有請求進行攔截,查看其是否登錄系統,如果未登錄系統將自動跳轉到登錄界面;反之不對此請求進行攔截。在用戶登錄進系統后,系統的權限分配是通過用戶的線程id 來進行判斷:
1)如果檢測到是管理員,根據api請求的不同,調用不同的數據庫表,獲取到該數據庫表內的全部信息,通過json數組返回給前端呈現數據。
2)如果是學生,根據api的請求的不同,調用不同的數據庫表,并且將學生的賬號作為限制條件,檢索到該學生的數據信息,反饋到前端呈現數據。
該功能分為七個模塊,分別是:學科競賽申請,學術交流申請,科研獎勵申請,學術論文申請,科研項目申請,知識產權申請,學術著作申請。通過分析系統需求和申請需要填寫的內容,對表單勾選和填充的內容進行限制,申請表單由Vue框架和Element-UI 組件庫進行編寫,進行數據綁定,通過調用不同的api接口將數據傳輸到后端,然后再由后端的不同接口接收,通過獲取線程id得到提交的賬號信息,和提交的數據合并儲存到對應的數據庫表里。
1)傳統的MyBatis
當數據庫中的數據表字段和關聯的表較多時,進行SQL 語句的編寫時消耗的時間精力較大。SQL 的語句的編寫太過于依賴數據庫,這就導致了數據庫變得不可移植,不能夠隨隨便便地更換數據庫。拼接復雜的SQL 語句時較為復雜,不夠靈活,不能夠使用變通的方式來應對復雜的語句編寫。
2)新型插件MyBatis-Plus
系統采用新型的無侵入插件MyBatis-plus來簡化代碼,在原來的基礎上只做出了增強但沒有做出改變,不會對整體的架構產生任何的影響。此插件的損耗極小,直接面向對象進行操作,性能基本沒有損耗,還支持代碼的生成,可以迅速地生成Mapper、Service、Controller 層代碼,能夠避免開發重復的代碼,不但內置了全局攔截插件,為系統提供delete、update 等操縱的智能攔截,防止對于數據表的誤操作,而且還有內置分頁的插件,可以輸出SQL 語句和執行時間,能夠有效地解決查詢較慢的問題等[7]。
3)系統采用的功能
此系統通過使用該插件中的條件構造器和分頁插件對數據進行檢索和分頁等,如:在大量的學生中通過限制學號和姓名查找某個學生,在大量的檔案中通過限制檔案名去查找某個申請記錄。當數據較多時在單一界面就會造成堆積,審閱數據就會變得更加困難,而且非常不美觀。
在學生申請學術檔案時,通常需要證明自己檔案記錄的真實性,此時就需要通過附件去上傳證明材料,對于七個申請模塊來說可以將文件的上傳和下載功能統一接口和對于文件的校驗,前端文件上傳頁面引用了Element-UI組件庫中的上傳組件,并且進行修改使其更加貼合系統。
學生上傳文件時,首先進行文件的校驗,對文件的類型和大小進行判斷,如果不符合預先設置的規則時返回錯誤信息,提醒用戶上傳正確的格式,反之則通過統一的api接口將文件傳送到后端。當文件傳輸到后端時,首先獲取到文件名使用UUID 重新生成文件名,防止文件名稱重復造成文件覆蓋,再將文件轉存到預設好的資源位置,最后返回正確信息和新生成的文件名,以便于學生提交正確的表單信息時,將文件名存入數據庫,便于在主界面預覽和下載。
為了保證系統高質量的運行,發現系統中的缺陷,找出解決方法,以減少用戶的損失,就需要對系統整體進行測試。由于通過啟動網站在每個頁面提交數據來查看系統的各個功能的運行情況,這種測試方式效率低下,需要消耗大量的時間和精力,那么就需要找到系統存在的共性,進行統一批次的測試。此系統都是采用api 接口接收和傳遞數據,此時就需要采用專業的接口請求軟件postman 針對此系統的所有api接口發送請求,查看返回值情況,來判斷系統各個功能是否正常運行。
此系統可對研究生的不同學術檔案進行收集,解決了人工收集時出現各種問題和其他平臺收集時數據不適配等問題,實現了大數據背景下學生檔案數據的在線收集,平臺的后續還將進行系統功能的添加,使其能夠可視化展示數據,便于此系統檔案管理人員能夠分析出學術檔案的數量、類型、趨勢等情況,為管理檔案提供便利。