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

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

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