李留青,張瑩瑩
(1.黃淮學院,河南駐馬店,463000;2.駐馬店市衛生學校,河南,463000)
隨著計算機網絡技術與數據庫技術的發展,使人們的生活與工作方式發生了巨大的改觀。從而使得工作更高效地進行。學生成績管理應該能夠提供真實可靠的信息以及快捷方便的方法供學生、老師以及管理者進行查詢或管理。利用計算機技術可以有效且便捷的進行學生成績的管理,使高校向科學化、正規化、信息化管理邁出的重要一步。
學生成績管理系統一直采用人工管理方式。一直以來,這種管理方式已經為大多的師生所接受,但隨著科技進步和信息時代的到來,師生們對信息的需求越來越大,對信息處理的各種要求也越來越高,學生成績管理的人工模式已經難以滿足需求。解決這些問題最好的辦法就是實現學生成績管理自動化,用計算機處理來代替人工操作。
本系統主要分三個部分:學生模塊、教師模塊、管理員模塊。不同的角色登錄成功后將會有不同的權限和功能。其中管理員可以管理學生和教師以及其他所有和該系統有關的設置;教師可以管理學生;而學生只能查看成績和選課。依據功能設計原則,將整個系統進行模塊劃分,得到了如下圖所示的功能模塊,如圖1所示。

圖1 系統功能模塊圖
系統設計主要對系統的總體功能如何設計,如何劃分模塊,系統的數據庫如何設計進行研究,它為系統的實現做鋪墊。在系統的設計過程中起著非常重要的作用。
本項目涉及關系數據庫理論的規范化,以解決函數依賴和數據依賴問題。整個系統基于SSH2(Struts2 + Spring+ Hibernate)技術,不但可以有效提高系統開發效率,而且在系統安全性、穩定性和健壯性上都有良好的改進。用戶密碼使用MD5加密,以增加系統的安全性。使用Apache的HSSFWorkbook方便數據生成Excel文件供用戶下載。
表現層使用了Struts2框架,實現了視圖控制分離。Struts2的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts2的標記庫,靈活使用能大大提高開發效率。關于頁面導航,將是今后的一個發展方向,事實上這樣做,可以使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有著很多的好處。
業務層使用了Spring框架。Service層需要處理業務邏輯和交叉業務邏輯、處理事務、日志、安全等,而這些與Spring的IoC,AOP等不謀而合,完美的實現了業務代碼的高效分離。
Hibernate框架是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate的強大緩存機制能一定程度上的緩解服務器端頻繁讀取數據庫的壓力,這也是Hibernate被廣泛使用的重要原因之一。而且Hibernate高效的權衡了運行效率、內存消耗和、開發效率,并自動封裝了事務控制和安全性代碼等重要功能。
2.2.1 驗證用戶登錄流程
服務器首先通過驗證驗證碼是否正確,然后在通過角色判斷用戶名是否存在于相應的表中,因為這樣可以盡量減少對數據庫不必要的訪問次數。當找到用戶名后,取出該用戶對象的密碼字段與表單中提交過來經客戶端MD5加密的密碼再次被服務器端MD5加密的密碼進行對比,如果相同將會進入相應的用戶角色的管理頁面,否則返回該登錄頁面。
2.2.2 學生總成績計算流程
由于直接在學生的成績單上只填入考試成績,這樣做是很不符合實際情況的,綜合考慮黃淮學院的學生成績統計情況,設計出了以下成績計算流程,更方便教師對學生的成績管理。首先系統會按照學生上機單個成績計算出上機成績總和,然后將教師手動輸入的考試成績、平時成績、教師授課比率、上機成績總和按照規定的法則進行數學運算,最終得到成績總和。
2.2.3 關鍵技術設計
(1)頁面設計
要實現系統的界面的全面國際化,包括文字,標題,JavaScript提示信息、圖片和Flash的國際化就要從Struts2的國際化入手,將“global_zh_CN.properties”和“global_en_US.properties”進行中英文的配置。然后將JavaScript文件、圖片、Flash先準備中英文兩個版本,分別取不同的文件名。將“global_zh_CN.properties”和“global_en_US.properties”中的vlaue設置不同版本的路徑。最后在網頁資源的URL中引用其name,即可實現頁面元素的國際化。
(2)防止地址欄URL的非法跳轉
所有受保護的頁面都放入WEB-INF目錄中,用戶如果想要通過瀏覽器地址欄中輸入該URL直接訪問本目錄中的資源是不可能的,因為WEB-INF目錄是受Tomcat服務器所保護的,所以在此只能通過Struts2中的Action跳轉來實現訪問。如果用戶自己輸入Action的URL依然能訪問到這些受保護的文件,此時就需要使用Struts2中的攔截器,首先要判斷對應用戶的Session是否為null,如果為null則意味著是用戶的非法訪問,直接跳轉至登錄頁面,以此來實現用戶登錄后才能訪問所對應的資源。最后再在“struts.xml”文件中配置,對應受保護Action所在的package,以及普通Action所在的package。如果用戶在瀏覽器地址欄中亂輸入地址,一旦Struts2找不到,它就會直接跳轉至登錄頁面。
(3)將Log4j日志存入數據庫
只需在“log4j.properties”文件中配置如下信息,即可以實現將Log4j日志存入數據庫,方便管理員直接在網頁中查看Log4j日志如圖2所示。

圖2 將Log4j日志存入數據庫的配置
(4)MySQL與JSP網頁中文亂碼解決
以UTF-8字符集創建數據庫和表:用Navicat工具來創建MySQL的數據庫及表。創建數據庫時,單擊鼠標右鍵Navicat菜單“新建數據庫”,建立數據庫。字符集選“utf8 --UTF-8 Unicode”。另外每個JSP頁面都要聲明該“utf-8”字符集,這樣才能保證頁面中的文字的正常顯示。
構造最優的數據庫模式,建立數據庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求。數據庫設計應該與應用系統設計相結合,結構(數據)設計:設計數據庫框架或數據庫結構,行為(處理)設計:設計應用程序、事務處理等,結構和行為分離的設計。
主要設計管理員表、課程表、授課表、Log4j日志表、機構表、班級-教師關聯表、成績表、學生表、學生上傳文件表、教師表、教師上傳文件表。
學生成績管理系統,涉及學生信息、教師信息等等多種保密信息,系統的安全性就顯得尤為重要。本系統的安全主要包括以下三個方面:數據庫關鍵數據加密、數據在網絡加密傳遞和用戶權限的分配。數據庫關鍵數據加密主要為了防止數據庫的泄密從而導致用戶信息直接被非法獲取,而數據在網絡加密傳遞主要是為了防止不法分子通過抓包工具獲取用戶的密碼,用戶權限的分配主要是為了不同用戶角色對應不同的權限,防止越權訪問造成系統的混亂。
以添加學生為例,首先將學生的密碼在客戶端經過MD5第一次加密,在網絡上傳輸到服務器端,從而確保了數據在網絡上傳輸的安全性。傳輸到服務器端后,通過MD5加密方式,進一步在服務器端加密,在服務器端將客戶端傳過來的學生姓名,通過密鑰進行DES加密,這樣做的目的就是學生姓名在數據庫的記錄是加密后的數據,而在網頁上體現的數據是服務器通過密鑰進行DES解密的學生真實姓名。最終在數據庫中數據的體現就是雙重MD5密碼加密和一次DES姓名加密,這樣做的目的就是即使數據庫被盜,那么數據庫中的關鍵數據還是以密文的形式體現,為系統的安全提供最后一層防線。
[1]羅時遠,等.高校學生成績管理系統的分析探討[J].辦公自動化,2009,(12):31-33.
[2]姜承堯.MySQL技術內幕:SQL編程[M].北京:機械工業出版社,2012:103-109.