龍其黨
摘要:隨著信息技術(shù)的發(fā)展,學(xué)校的信息技術(shù)設(shè)施越來越完善,很多學(xué)校都建成了校園網(wǎng)絡(luò)并連接到互聯(lián)網(wǎng)上。但校園網(wǎng)絡(luò)設(shè)備的利用率并不高,軟件資源缺乏,大多數(shù)計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用還只是停留在上網(wǎng)查資料、相互間共享文件等初級(jí)應(yīng)用上,很少建設(shè)符合本校實(shí)際情況的軟件資源。本文作者結(jié)合所在學(xué)校在建設(shè)軟件資源方面的一些體會(huì)、經(jīng)驗(yàn),提出了“成績管理系統(tǒng)”建設(shè)問題,探討在建設(shè)中需要注意的一些問題、細(xì)節(jié)。
關(guān)鍵詞:MVC模式;AJAX;成績管理系統(tǒng);數(shù)據(jù)庫;軟件開發(fā)
中圖分類號(hào):G434 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號(hào):1674-2117(2018)21-0085-03
軟件建設(shè)需求
成績管理、分析是一所學(xué)校進(jìn)行教學(xué)質(zhì)量檢測、評(píng)價(jià)、分析、再提高的基礎(chǔ),現(xiàn)階段,大多數(shù)學(xué)校使用Excel軟件對(duì)成績進(jìn)行管理,其不足之處在于,信息的查詢、共享不方便;統(tǒng)計(jì)、分析對(duì)教師技術(shù)水平的要求比較高。而建立基于MVC模式的成績管理系統(tǒng),由服務(wù)器統(tǒng)一管理數(shù)據(jù),教師端可隨時(shí)查詢?nèi)K袑W(xué)生的成績,并根據(jù)系統(tǒng)提供的分析、統(tǒng)計(jì)為自己的教學(xué)提供決策依據(jù)。
軟件模式選擇
網(wǎng)絡(luò)特別是互聯(lián)網(wǎng)的發(fā)展,使B/S模式(瀏覽器/服務(wù)器模式)的軟件系統(tǒng)越來越流行。它有著瘦客戶機(jī)優(yōu)點(diǎn),即客戶機(jī)不需安裝軟件,打開瀏覽器就可以使用。這樣對(duì)教師的技術(shù)要求就降低許多,不需要復(fù)雜的安裝和設(shè)置??蛻舳伺c服務(wù)器端交互采用AJAX方式,讓服務(wù)器專注數(shù)據(jù)處理,客戶端專注顯示及交互。這一方面減輕了服務(wù)器負(fù)載,使其可以更快做出響應(yīng);另一方面使得交互數(shù)據(jù)量變得極少,網(wǎng)絡(luò)傳輸量降低。
軟件開發(fā)、運(yùn)行環(huán)境
服務(wù)器端的運(yùn)行環(huán)境:服務(wù)器——TOMCAT8;數(shù)據(jù)庫系統(tǒng)——SQL SERVER2012??蛻舳诉\(yùn)行環(huán)境:瀏覽器——chrome、Firefox、Edge。系統(tǒng)開發(fā)軟件:Eclipse、Photoshop、Java。
軟件系統(tǒng)架構(gòu)及模塊說明
成績管理系統(tǒng)主要模塊如圖1:成績管理系統(tǒng)中,各個(gè)頁面作為一個(gè)功能存在,在模塊設(shè)置中自由地把各個(gè)功能組合在一起成為一個(gè)菜單,實(shí)現(xiàn)根據(jù)需要定義菜單。
關(guān)鍵技術(shù)探索
1.數(shù)據(jù)庫規(guī)劃
系統(tǒng)使用的數(shù)據(jù)表較多,在系統(tǒng)規(guī)劃時(shí)需要全盤考慮,避免出現(xiàn)需要改動(dòng)數(shù)據(jù)結(jié)構(gòu)的情況。比如在設(shè)計(jì)學(xué)生成績表時(shí),考慮到它的數(shù)據(jù)量大,一次考試就產(chǎn)生幾萬條記錄,筆者認(rèn)為可有兩種設(shè)計(jì)方式:
(1)為每屆學(xué)生建立一個(gè)數(shù)據(jù)表,存儲(chǔ)該屆學(xué)生在校期間的所有成績,其數(shù)據(jù)表結(jié)構(gòu)可設(shè)計(jì)如圖2(為方便描述,字段名用中文表示,但在應(yīng)用中最好避免使用中文字段名)。(2)為每學(xué)年建立一個(gè)數(shù)據(jù)表,存儲(chǔ)該學(xué)年所有學(xué)生成績,其數(shù)據(jù)表結(jié)構(gòu)可設(shè)計(jì)如圖3。
兩者差別并不大,主要根據(jù)系統(tǒng)應(yīng)用偏向來決定,第一種方式可以很方便地查詢到某屆學(xué)生在校期間的所有成績,第二種方式可以方便地對(duì)當(dāng)前在校生成績進(jìn)行查詢、統(tǒng)計(jì),本系統(tǒng)選擇第二種方式。無論使用何種方式,都不可只用一個(gè)數(shù)據(jù)表保存所有學(xué)生的成績數(shù)據(jù),否則日積月累,多年的學(xué)生數(shù)據(jù)都存在一個(gè)表中,會(huì)出現(xiàn)如下問題:一方面已畢業(yè)學(xué)生的數(shù)據(jù)很少用到,另一方面表中數(shù)據(jù)多了影響查詢、統(tǒng)計(jì)性能。
針對(duì)數(shù)據(jù)表中科目的設(shè)計(jì),上面的方式固定了每個(gè)表的科目,不夠靈活,不同年級(jí)開設(shè)科目不盡相同,因此可對(duì)上面數(shù)據(jù)表進(jìn)行優(yōu)化,如圖4。
使用這種方式比較靈活,統(tǒng)計(jì)方便;沒有參加考試的科目不必記錄,節(jié)省空間,只是在查詢時(shí)需要行列轉(zhuǎn)置。如果需要保留更詳細(xì)數(shù)據(jù),可繼續(xù)增加一些列,方便以后統(tǒng)計(jì)使用,如圖5。
2.在需要的數(shù)據(jù)字段上設(shè)立索引
索引有利于提高查詢速度,但在插入或修改時(shí)卻會(huì)影響操作效率,因此需要考慮如何定義索引。但對(duì)于成績管理系統(tǒng)這類查詢多于更新的系統(tǒng)來說,可以側(cè)重考慮查詢需求,一般來說需要聯(lián)合查詢的聯(lián)合字段、查詢時(shí)的條件字段,這些是要重點(diǎn)考慮索引的字段,筆者在使用過程中曾經(jīng)遇到過一個(gè)統(tǒng)計(jì)需要花費(fèi)差不多十秒鐘,但在關(guān)鍵字段加了索引后,只需要一秒左右就完成的情況。因此在出現(xiàn)此類問題時(shí),除了檢查代碼,不要忽視索引的作用。
3.系統(tǒng)權(quán)限設(shè)置
要使系統(tǒng)穩(wěn)定有序運(yùn)行,必須要分配各教師的使用權(quán)限。教師權(quán)限指派的好處是:一方面保證成績管理系統(tǒng)有序運(yùn)行,另一方面可以簡化教師界面,讓教師清晰知道自己該做哪些工作。我們在權(quán)限分配規(guī)劃時(shí)使用了“角色與權(quán)限”的方法,即先定義一些角色,如管理員、校長、教學(xué)處、班主任、科任教師等;再定義這些角色具有哪些權(quán)限,如“管理員”應(yīng)該具有一切管理權(quán)限,“班主任”具有可管理本班學(xué)生信息的權(quán)限,“科任教師”具有可錄入成績權(quán)限等;最后為每個(gè)教師定義各自具有哪些角色,一個(gè)教師可以是多重角色,如班主任可以具有“班主任”和“科任教師”兩種角色。每次請求都驗(yàn)證權(quán)限,權(quán)限設(shè)置是系統(tǒng)良好運(yùn)行的基礎(chǔ),保證了在修改數(shù)據(jù)時(shí)不會(huì)產(chǎn)生沖突、混亂。
4.系統(tǒng)安全性措施
在“成績管理系統(tǒng)”中,系統(tǒng)安全主要指數(shù)據(jù)安全,為保障數(shù)據(jù)信息不被非法修改、刪除,我們在使用中應(yīng)用了如下措施:
(1)對(duì)用戶密碼進(jìn)行加密。采用某種加密方法對(duì)所有用戶密碼進(jìn)行加密,增強(qiáng)用戶密碼的保護(hù)。(2)登錄時(shí)使用驗(yàn)證碼。使用驗(yàn)證碼,可防止用自動(dòng)登錄的方法破解密碼。(3)IP地址限制。指定可使用IP地址范圍,保證數(shù)據(jù)更加安全。(4)做好日志登記工作。將教師、學(xué)生每次請求操作的時(shí)間、請求頁面、主機(jī)IP地址等信息都登記下來,有需要時(shí)可以查看記錄。同時(shí)還可被用于統(tǒng)計(jì)哪些模塊最常使用、用戶最關(guān)心哪些功能等。(5)數(shù)據(jù)庫備份。充分利用SQL SERVER2012的備份功能,可在數(shù)據(jù)受到破壞時(shí)恢復(fù)到指定位置;利用數(shù)據(jù)庫的自動(dòng)備份功能,設(shè)置每星期一次增量備份、每月一次完整備份。
5.系統(tǒng)穩(wěn)定性措施
良好的系統(tǒng)在進(jìn)行時(shí)有一定的健壯性,并有良好的提示。即使發(fā)生錯(cuò)誤,也可以保證數(shù)據(jù)完整以及系統(tǒng)狀態(tài)恢復(fù)。提高系統(tǒng)穩(wěn)定性可以從以下幾方面考慮:
(1)對(duì)數(shù)據(jù)進(jìn)行修改、增加、刪除,需要兩個(gè)或兩個(gè)以上的一組命令時(shí),將這些操作放在事務(wù)處理范圍內(nèi),保證操作要么就整批完成,要么就整批撤消,以確保數(shù)據(jù)的完整性。(2)頁面存在輸入時(shí),一定要對(duì)輸入數(shù)據(jù)進(jìn)行合法性驗(yàn)證,保證數(shù)據(jù)在提交到數(shù)據(jù)庫時(shí)符合業(yè)務(wù)要求。對(duì)輸入數(shù)據(jù)驗(yàn)證應(yīng)在客戶端進(jìn)行,減少數(shù)據(jù)傳輸次數(shù)。(3)在輸入成績等需要較長時(shí)間完成的場合,使用間隔自動(dòng)保存,避免偶發(fā)原因造成錄入丟失。(4)對(duì)所有的錯(cuò)誤都應(yīng)給出詳細(xì)提示,讓客戶端知道在錯(cuò)誤發(fā)生時(shí)應(yīng)該如何改正。對(duì)不可預(yù)知的錯(cuò)誤也要進(jìn)行處理,提供原始錯(cuò)誤信息。(5)數(shù)據(jù)庫連接采用連接池,并根據(jù)實(shí)際使用用戶數(shù)量設(shè)置合適數(shù)值。(6)做好測試工作,每個(gè)功能開發(fā)好后,必須進(jìn)行全面測試,特別是涉及到輸入的,需要輸入各種數(shù)據(jù)進(jìn)行測試,除了測試正常的業(yè)務(wù)過程是否正確,還要測試對(duì)錯(cuò)誤輸入數(shù)據(jù)的檢測。
6.系統(tǒng)可擴(kuò)展性、易維護(hù)性
系統(tǒng)開發(fā)采用MVC架構(gòu),將業(yè)務(wù)、邏輯、數(shù)據(jù)模塊分別獨(dú)立,并把相同業(yè)務(wù)代碼抽象出來。開發(fā)過程中要隨時(shí)預(yù)見可能出現(xiàn)的新情況,發(fā)現(xiàn)有更好的優(yōu)化方法,要及時(shí)處理。自始至終要考慮如何提高開發(fā)效率,如何便于維護(hù)和更新。
以上是我們在開發(fā)學(xué)校成績管理系統(tǒng)過程中的一些體會(huì)、經(jīng)驗(yàn),系統(tǒng)在開發(fā)以及后期的維護(hù)過程中都在不斷出現(xiàn)新的問題,尤其是系統(tǒng)與其他管理系統(tǒng)的連接問題讓我們深感統(tǒng)一規(guī)劃的重要性和必要性。系統(tǒng)經(jīng)過多年的運(yùn)行,得到不斷的更新與增強(qiáng),為學(xué)校的教學(xué)管理提供了科學(xué)依據(jù)和數(shù)據(jù)。同時(shí),數(shù)據(jù)庫中的教師、學(xué)生信息也作為基礎(chǔ)數(shù)據(jù)應(yīng)用到了其他系統(tǒng)上,提高了學(xué)校教育教學(xué)管理的信息化發(fā)展水平。