劉一山,魏佳佳,鄒銳標(biāo)
(湖南農(nóng)業(yè)大學(xué) 理學(xué)院,湖南 長沙 410128)
隨著高校擴招,在校學(xué)生規(guī)模越來越大,而各高校實踐教學(xué)硬件資源的增長遠遠落后于學(xué)生人數(shù)的增加,造成實踐教學(xué)資源相對緊張。通過調(diào)查我們發(fā)現(xiàn),在實驗室資源緊張的同時,實驗室的利用效率還有待提高。因此,開發(fā)一個基于Web的多功能的實驗選修課程預(yù)約系統(tǒng),以提高實驗室的使用和管理效率,具有十分重要的意義。
以行政班為教學(xué)單元安排實驗課程,學(xué)生在規(guī)定的時間、規(guī)定的地點,有規(guī)定的教師上規(guī)定的實驗課程,這種傳統(tǒng)的實驗教學(xué)模式已成為實驗教學(xué)改革的瓶頸。目前絕大多數(shù)高校的公共選修課只有理論課而沒有實驗課程,究其原因主要是因為目前的排課系統(tǒng)只能對以行政班為教學(xué)單元的必修實驗課程進行安排,而對實驗選修課程的安排十分困難[1-3]。為充分利用學(xué)校教學(xué)資源(師資、實驗設(shè)備和場地),使實驗教學(xué)有條不紊的進行,讓學(xué)生有更多的動手實踐的機會,開發(fā)一個面向全校學(xué)生的公共實驗選修課程預(yù)約系統(tǒng),對于彌補目前排課系統(tǒng)的不足,加強教務(wù)管理,進一步推進高校實驗教學(xué)改革,促進學(xué)生動手能力的培養(yǎng)具有重要的現(xiàn)實意義[4]。
本系統(tǒng)的目的是將所有的實驗室資源在系統(tǒng)中整合,在專業(yè)必修實驗課排定之后,將所??障緯r間段安排實驗選修課,面向全校開放,學(xué)生不再以專業(yè)、班級為單位,而是根據(jù)自己的興趣和時間自主預(yù)約實驗選修課,從而使學(xué)生的空閑時間和實驗室資源得到最大限度的利用。
系統(tǒng)可以在任何JavaEE主流Web容器上進行部署,可以使用所有Hibernate支持的數(shù)據(jù)庫進行數(shù)據(jù)存儲。對表現(xiàn)層代碼進行多次優(yōu)化,對IE內(nèi)核和非IE內(nèi)核的瀏覽器都支持。
本系統(tǒng)采用B/S結(jié)構(gòu)(Browser/Server結(jié)構(gòu))設(shè)計,在這種結(jié)構(gòu)下,用戶工作界面通過瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn)。
系統(tǒng)基JavaEE平臺開發(fā),Java的跨平臺性使得本系統(tǒng)可以在支持Java的任何平臺上使用。系統(tǒng)使用了現(xiàn)今最流行的開源框架 Struts2、Hibernate、Spring。 Struts2是一個 MVC 框架,它提供了一個系統(tǒng)分層解決方案,提高了加載速度,保證了系統(tǒng)的易維護性和可擴展性。自帶的數(shù)據(jù)校驗、類型轉(zhuǎn)換、標(biāo)簽庫大大減少開發(fā)所需要編寫的代碼量。Hibernate是一個orm框架,它對數(shù)據(jù)庫的訪問進行了一個輕量級的封裝,可以讓程序員以面向?qū)ο蟮姆绞綄?shù)據(jù)進行存儲,同時對不同數(shù)據(jù)庫之間的差異進行了屏蔽,程序員不必針對某一具體數(shù)據(jù)庫編程。Spring是一個容器管理框架,它負責(zé)對整個系統(tǒng)進行整合和管理,他有兩個核心IOC和AOP。
系統(tǒng)共有5層,其中表現(xiàn)層使用的主要技術(shù)有JSP、CSS、JavaScript、AJAX等。 JSP技術(shù)是在傳統(tǒng)的網(wǎng)頁 HTML文件( *.htm, *.html)中插入 Java程序段(Scriptlet)和 JSP 標(biāo)記(tag),從而形成 JSP文件(*.jsp)。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。XHTML(可擴展超文本置標(biāo)語言),是一種置標(biāo)語言,表現(xiàn)方式與HTML(超文本置標(biāo)語言)類似,不過語法上更加嚴(yán)格。它是一個過渡技術(shù),結(jié)合了XML的強大功能及HTML的簡單特性,使網(wǎng)頁具有很好的可擴展性、互用性和可攜帶性。JavaScript是一種基于對象和事件驅(qū)動并具有安全性能的腳本語言,解決了服務(wù)器端語言遺留的速度問題,增加了網(wǎng)頁互動性,能及時響應(yīng)用戶的操作,對提交表單做即時的檢查,無需浪費時間交由CGI驗證,并對有規(guī)律的重復(fù)的XHTML文段進行了簡化,減少了下載時間,為用戶提供了更流暢的瀏覽效果。
系統(tǒng)采用了分層的設(shè)計思想,如圖1所示。將數(shù)據(jù)訪問、數(shù)據(jù)校驗、業(yè)務(wù)邏輯、頁面跳轉(zhuǎn)等代碼抽取出來,形成獨立的層次,實現(xiàn)逐層封裝,避免了將所有實現(xiàn)代碼放到一個jsp文件中的情況。這種設(shè)計思想增強了系統(tǒng)的擴展性,使得代碼清晰易讀,便于后期的維護。
圖1 系統(tǒng)層次Fig.1 Layer of system
1)Model層:使用JavaBean對業(yè)務(wù)實體信息進行封裝,通過orm框架Hibernate的關(guān)系映射使JavaBean與數(shù)據(jù)庫中的表一一對應(yīng)。將數(shù)據(jù)庫中的關(guān)系轉(zhuǎn)化為Java中的對象,在上層業(yè)務(wù)代碼中只需操作Java對象,而不再需要關(guān)心數(shù)據(jù)庫中表的字段和關(guān)系。
2)Dao(data access object)層:這一層主要封裝對數(shù)據(jù)的訪問,所有對數(shù)據(jù)的增加、刪除、修改、查詢的操作都會被封裝為相應(yīng)的接口方法,并對其一一實現(xiàn)。在進行數(shù)據(jù)庫的連接上,使用了開源的連接池技術(shù)dbcp,當(dāng)頁面被頻繁訪問時,系統(tǒng)不必頻繁地進行數(shù)據(jù)庫連接,從而大大提高了系統(tǒng)的效率。
3)Service層:調(diào)用Dao層方法,將具體操作封裝成對應(yīng)的方法,供Control層調(diào)用。同時使用Spring框架的AOP(aspact-oriented programming)在方法的切面加上事務(wù),利用事務(wù)的原子性保證操作的完整進行。
4)Control層:由于系統(tǒng)使用了Struts2框架,這一層的主體就是action類。系統(tǒng)收到請求后,由Struts2默認的攔截器對數(shù)據(jù)進行校驗,并以Java的反射機制將數(shù)據(jù)注入到action中,在action中調(diào)用service層方法以完成業(yè)務(wù)邏輯,并將結(jié)果轉(zhuǎn)發(fā)到j(luò)sp頁面中進行展示。
5)表現(xiàn)層:使用jsp進行業(yè)務(wù)表現(xiàn),為了使代碼清晰易讀,系統(tǒng)舍棄了傳統(tǒng)的內(nèi)嵌Java代碼的邏輯方式,使用最新的JSTL(JSP Sta-ndard Tag Library)配合ognl完成內(nèi)容的展示,而頁面的樣式布局和動作則由外部的CSS和JavaScript完成。
為了讓系統(tǒng)更便捷的服務(wù)于用戶,系統(tǒng)劃分成了以下幾個部分[5-7],系統(tǒng)組成如圖2所示。
圖2 系統(tǒng)功能模塊Fig.2 Function module diagram of the system
1)安裝模塊:提供一個jsp頁面,進行數(shù)據(jù)庫和管理員信息的設(shè)置。系統(tǒng)的數(shù)據(jù)庫信息和管理員信息并沒有在代碼中固定,而是配置在xml文件中。完成設(shè)置之后,系統(tǒng)會自動修改xml配置文件,無需修改代碼,實現(xiàn)簡單安裝。
2)系統(tǒng)模塊:主要實現(xiàn)了系統(tǒng)角色和權(quán)限的劃分。系統(tǒng)共有3個角色,包括系統(tǒng)管理員、教師、學(xué)生。用戶登錄后,系統(tǒng)會根據(jù)用戶角色給與相應(yīng)的權(quán)限。在系統(tǒng)中注冊的用戶都為學(xué)生,教師用戶由系統(tǒng)管理員創(chuàng)建,系統(tǒng)管理員則在安裝模塊設(shè)置。
3)課程預(yù)約模塊:系統(tǒng)核心模塊。系統(tǒng)管理員可以添加課程和實驗班、查看預(yù)約情況、對已經(jīng)達到預(yù)約人數(shù)的班級進行開課確認、對預(yù)約人數(shù)不足的班級進行合班或取消開課等。教師可以查看被指定的教學(xué)班級預(yù)約情況、查看學(xué)生信息、查看教學(xué)任務(wù)等。學(xué)生則可以查看可預(yù)約的課程信息、查看預(yù)約情況。
4)信息管理模塊:系統(tǒng)管理員對實驗室、教師、實驗設(shè)備等教學(xué)資源進行管理,并實現(xiàn)對資源信息的增加、刪除、查詢、修改功能;對系統(tǒng)內(nèi)注冊的學(xué)生信息進行管理,可以按學(xué)院、專業(yè)、所選課程、課程成績等進行查詢。同時提供信息統(tǒng)計和報表打印功能。
5)教學(xué)管理模塊:教師對每次上課的情況進行登記,并給予相應(yīng)的成績,學(xué)生可以對課程成績進行查看。期末時,系統(tǒng)會綜合學(xué)生上課情況按指定的規(guī)則給予最終的成績。
系統(tǒng)的預(yù)約流程,如圖3所示,方便快捷,且靈活度高,大大提升了高校實驗室管理工作的效率和質(zhì)量。
圖3 預(yù)約流程Fig.3 Business process of reservation
以數(shù)學(xué)實驗為例進行說明:
1)管理員開設(shè)數(shù)學(xué)實驗選修課。課程由8個獨立的實驗組成,8個實驗將在16周內(nèi)完成。每個實驗持續(xù)兩周,將在實驗室空閑時間段開設(shè)課程。
2)學(xué)生在系統(tǒng)中對實驗課程進行預(yù)約。
3)預(yù)約人數(shù)達到要求,則確認開班。人數(shù)不足則由系統(tǒng)管理員決定合班或取消開課。
4)系統(tǒng)根據(jù)開班信息通知學(xué)生去上課,如果是合入其他教學(xué)班,則學(xué)生可以決定是否去上課。
5)系統(tǒng)根據(jù)學(xué)生上課情況給予相應(yīng)成績。
該實驗選修課程預(yù)約系統(tǒng)的設(shè)計順應(yīng)高等院校實踐教學(xué)改革的要求,能滿足學(xué)生進行實驗預(yù)約、老師進行管理等各個方面的需求,具有網(wǎng)絡(luò)化、智能化、高性能、低維護、界面友好、操作簡單、功能強大、管理方便、平臺優(yōu)秀等一系列優(yōu)點,能夠完全按照開發(fā)設(shè)計的初衷,穩(wěn)定、安全、快速地運行于校園網(wǎng)之上,使得實驗課程選修面向全校師生開放。實驗選修課程的開放豐富了學(xué)生的課余生活,拓寬了學(xué)生的知識面,培養(yǎng)了學(xué)生的學(xué)習(xí)興趣和動手實踐能力,促進了學(xué)生自主學(xué)習(xí)能力的培養(yǎng),極大地提高了實驗室資源的使用效率,擴大了實驗室的開放力度。
[1]鄒銳標(biāo).地方農(nóng)林院校數(shù)學(xué)基礎(chǔ)課程教學(xué)改革研究與實踐[J].中國大學(xué)教學(xué),2012(10):59-61.ZOU Rui-biao.Teaching reform research and practice of mathematical foundation courses of the local agricultural and forestry colleges[J].China University Teaching,2012(10):59-61.
[2]霍文蘭.高校實行開放式實驗教學(xué)存在的問題及對策[J].榆林學(xué)院學(xué)報,2010(2):105-107.HUO Wen-lan.On the problems and strategies of open experiment teaching methodology in colleges[J].Journal of Yulin University,2010(2):105-107.
[3]潘以峰.高校智能排課系統(tǒng)的算法[J].上海師范大學(xué)學(xué)報:自然科學(xué)版,2006(5):4-7.PAN Yi-feng.Algorithm of intelleigent course arranging system[J].Journal of Shanghai Normal University:Natural Sciences,2006(5):4-7.
[4]田淑娟,劉榮.大型儀器設(shè)備共享及預(yù)約系統(tǒng)設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2011(11):103-105.TIAN Shu-juan,LIU Rong.Design and realization of largescale instruments and equipments cooperation sharing and booking system[J].Electronic Design Engineering,2011(11):103-105.
[5]楊章偉,張婉婉.開放性實驗室的網(wǎng)上預(yù)約系統(tǒng)探索與實踐[J].實驗室研究與探索,2010(10):384-386.YANG Zhang-wei,ZHANG Wan-wan.Research and practise on reservation system for opening laboratory[J].Research and Exploration in Laboratory,2010(10):384-386.
[6]楊爽,霍藝偉.基于Web的實踐教學(xué)預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2010(14):93-95.YANG Shuang,HUO Yi-wei.Design and implementation of booking system of practice teaching based on web[J].Modern Electronics Technique,2010(14):93-95.
[7]杜博.高校實驗室管理系統(tǒng)的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2011(15):36-39.DU Bo.Design and implementation of university laboratory management system[J].Electronic Design Engineering,2011(15):36-39.