劉 琴
(山西省物流技術(shù)學(xué)校,山西 太原 030031)
基于Struts-Hibernate的課程管理信息系統(tǒng)的設(shè)計(jì)研究
劉 琴
(山西省物流技術(shù)學(xué)校,山西 太原 030031)
隨著計(jì)算機(jī)技術(shù)、信息技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,基于網(wǎng)絡(luò)的課程管理信息系統(tǒng)得到廣泛的應(yīng)用。學(xué)校利用本系統(tǒng),使學(xué)生能夠自主選課和自主學(xué)習(xí),以此提高課程的教學(xué)和管理效果,使各項(xiàng)教學(xué)活動(dòng)能夠有條理、順暢地進(jìn)行,為學(xué)校教學(xué)質(zhì)量的提高提供了重要的基礎(chǔ)。
Struts;Hibernate;課程管理信息系統(tǒng);設(shè)計(jì)研究
21世紀(jì)是知識(shí)爆炸的年代,信息和科學(xué)知識(shí)的快速增長(zhǎng)要求人們必須不斷地學(xué)習(xí)新的知識(shí)以適應(yīng)日益激烈的社會(huì)競(jìng)爭(zhēng)。傳統(tǒng)教學(xué)方式是學(xué)校指定某一時(shí)間,要求學(xué)生固定教室,由教師進(jìn)行統(tǒng)一授課。因?yàn)閭鹘y(tǒng)教學(xué)方式對(duì)學(xué)生而言有十分嚴(yán)格的要求,既不能方便學(xué)生隨時(shí)隨地進(jìn)行課程學(xué)習(xí),也不方便教師教學(xué)工作。不同的學(xué)生可能會(huì)有不同的學(xué)習(xí)時(shí)間,很難找到一個(gè)時(shí)段能夠符合所有學(xué)生的作息時(shí)間。而學(xué)生如果想?yún)⒓赢惖亻_(kāi)設(shè)的課程也是很不現(xiàn)實(shí)的。將信息化建設(shè)運(yùn)用于傳統(tǒng)教學(xué)體系,從而誕生的課程管理信息系統(tǒng)(Course Management Information System)成功地解決了這些問(wèn)題。以建設(shè)網(wǎng)站的形式,提供信息化的課程學(xué)習(xí)環(huán)境。
課程管理信息系統(tǒng)(Course Management Information System,CMIS)是指具有組織、跟蹤、評(píng)估、發(fā)送、呈現(xiàn)、管理學(xué)習(xí)內(nèi)容、學(xué)習(xí)活動(dòng),促進(jìn)學(xué)習(xí)者之間交互等一系列功能的管理信息系統(tǒng)。
2.1 Struts技術(shù)
Struts技術(shù)是Apache組織的一個(gè)項(xiàng)目,具有Apache組織項(xiàng)目的共有特性——開(kāi)放源碼。Struts主要是由一組相互協(xié)作的類或組件、Servlet、JSP和自定義標(biāo)簽庫(kù)組成的,它繼承了MVC框架的所有特性,并且提供了對(duì)開(kāi)發(fā)MVC系統(tǒng)的底層支持。
2.2 Hibernate技術(shù)
Hibernate是一個(gè)由Redhat公司負(fù)責(zé)維護(hù)的面向Java環(huán)境的開(kāi)源的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具。對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射(object/relationalmapping(ORM))這個(gè)術(shù)語(yǔ)表示一種技術(shù),用來(lái)把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型結(jié)構(gòu)中去。利用ORM開(kāi)發(fā)人員不必關(guān)心底層的關(guān)系數(shù)據(jù)庫(kù)模型,只需要關(guān)注頂層面向?qū)ο蟮臄?shù)據(jù)模型。
Hibernate是Java應(yīng)用和關(guān)系數(shù)據(jù)庫(kù)之間的橋梁,將應(yīng)用層對(duì)對(duì)象的操作直接轉(zhuǎn)化為作用于關(guān)系數(shù)據(jù)庫(kù)中的表,自身則通過(guò)hibernate.properties配置文件和類映射文件(*.htm.xml)將實(shí)體類映射到數(shù)據(jù)庫(kù)中的表,為應(yīng)用程序提供持久化服務(wù)。
2.3 Spring技術(shù)
Spring是一個(gè)非常優(yōu)秀的輕量級(jí)框架,利用普通Java對(duì)象(POJO)編程,使用依賴注入解析POJO間的依賴性,然后使用面向方面編程(AOP)將服務(wù)與它們相關(guān)聯(lián)。
Spring核心本身是個(gè)容器,管理物件的生命周期、物件的組態(tài)、依賴注入等,并可以控制物件在創(chuàng)建時(shí)是以原型或單例子的方式來(lái)創(chuàng)立。Spring的目標(biāo)是實(shí)現(xiàn)一個(gè)全方位的整合框架,在Spring框架下實(shí)現(xiàn)多個(gè)子框架的組合,這些子框架之間彼此可以獨(dú)立,也可以使用其它的框架方案加以替代。
課程管理信息系統(tǒng)(Course Management Information System)是專門為學(xué)生學(xué)習(xí)課程而建設(shè)的網(wǎng)絡(luò)系統(tǒng)。教師用戶可以在系統(tǒng)中發(fā)布課程大綱、教學(xué)計(jì)劃,以及堂課教學(xué)內(nèi)容,布置作業(yè),批改作業(yè),公布學(xué)生成績(jī)。學(xué)生用戶可以選擇課程學(xué)習(xí),提交作業(yè)。課程管理信息系統(tǒng)往往還為課程提供一些通訊工具為師生之間的交流提供了一個(gè)良好的平臺(tái)。管理信息系統(tǒng)還會(huì)采集學(xué)生學(xué)習(xí)時(shí)的一些數(shù)據(jù)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。教師可以很方便地了解學(xué)生在課程內(nèi)容學(xué)習(xí)當(dāng)中的各種動(dòng)態(tài)信息,比如對(duì)哪些課程比較感興趣,作業(yè)完成情況等。
3.1 功能模型
完善的課程管理信息系統(tǒng)應(yīng)該包括:Communication Tools(交流工具)、Administration Tools(管理工具)、Course Delivery Tools(課程工具)等三個(gè)部分。課程管理信息系統(tǒng)功能有注冊(cè)新賬號(hào)、登錄系統(tǒng)、取回密碼、修改個(gè)人資料、查看用戶信息、修改密碼、注銷登錄、添加新用戶、修改用戶角色、刪除用戶、重置用戶密碼、添加新角色、修改角色信息、刪除角色、創(chuàng)建課程、審批課程、選修/退出課程、學(xué)習(xí)課程等。功能模型如表1所示。
表1 課程管理信息系統(tǒng)結(jié)構(gòu)表
3.2 用戶類別
課程管理信息系統(tǒng)的典型用戶角色有三種,他們分別是:管理員角色、教師角色、學(xué)生角色。課程管理信息系統(tǒng)的用戶角色是可維護(hù)的,也就是說(shuō)并不只有這三種角色。管理信息系統(tǒng)在數(shù)據(jù)庫(kù)中維護(hù)一個(gè)角色表。系統(tǒng)管理員可以動(dòng)態(tài)地創(chuàng)建和修改角色。這樣做的好處是系統(tǒng)能夠?qū)崿F(xiàn)充分的自訂化。在實(shí)際使用中能很方便地控制權(quán)限。課程管理信息系統(tǒng)預(yù)先創(chuàng)建了這三種典型的角色,只是為了使系統(tǒng)使用起來(lái)更加的方便。
3.3 架構(gòu)設(shè)計(jì)
通過(guò)參考學(xué)習(xí)一些流行的Web設(shè)計(jì)框架,對(duì)應(yīng)用分層的好處有了一定的了解。結(jié)合課程管理信息系統(tǒng)的需求,從Struts、Spring所能提供的功能出發(fā),設(shè)計(jì)了如下的Web應(yīng)用框架:
課程管理信息系統(tǒng)Web應(yīng)用分成4層。這四層分別是:表示層(presentation layer),控制層(controller layer),業(yè)務(wù)層(business layer),數(shù)據(jù)庫(kù)操作層(database management layer),實(shí)體模型層(domain model layer)。每個(gè)層在處理程序上都有一項(xiàng)明確的責(zé)任, 不同層上的功能不能混合,每個(gè)層要與其它層分開(kāi),從而降低Web應(yīng)用的耦合度。
系統(tǒng)層次用MVC+Ioc設(shè)計(jì)模式實(shí)現(xiàn),由Struts+Spring+JdbcTemplate來(lái)輔助實(shí)現(xiàn)框架。對(duì)于Struts框架本課程管理信息系統(tǒng)僅使用其MVC部分,對(duì)Spring框架我們僅使用其IoC功能和JdbpTemplate。
表現(xiàn)層有頁(yè)面展示、表單提交、翻頁(yè)。
控制層是MVC的控制器。在Struts框架中通過(guò)Struts.xml配置文件進(jìn)行控制管理。普通的Struts項(xiàng)目要求每個(gè)用戶動(dòng)作都要對(duì)應(yīng)一個(gè)action。理論上這樣做能把所有的控制都放到xml配置文件里,從而提高項(xiàng)目的清晰程度。
在業(yè)務(wù)層中,系統(tǒng)使用了Spring框架的Ioc(Iversion of control)。在每個(gè)具體的Action實(shí)現(xiàn)類中,都會(huì)用到業(yè)務(wù)層的對(duì)象。
在數(shù)據(jù)庫(kù)層封裝了所有的數(shù)據(jù)庫(kù)操作,所有的增刪查改的SQL語(yǔ)句都寫(xiě)在這一層。為了實(shí)現(xiàn)對(duì)不同的DAO實(shí)現(xiàn)類進(jìn)行統(tǒng)一的管理,選課系統(tǒng)的所有DAO實(shí)現(xiàn)類都繼承至BaseDAO,BaseDAO中統(tǒng)一使用Spring框架提供的jdbc Template類操作數(shù)據(jù)庫(kù)。BaseDAO類中僅有一個(gè)org.spring framework.jdbc.core.simple.Simple Jdbc Template型的屬性,和對(duì)這個(gè)屬性的get set方法。使用JdbcTemplate來(lái)執(zhí)行SQL非常方便,jdbc不僅能提供非常豐富的查詢接口,而且封裝了連接池。使用它可以不用考慮連接的獲取和釋放。
實(shí)體模型Bo(Business Object)是真實(shí)世界的抽象模型。每個(gè)Bo都映射到一個(gè)具體的實(shí)體。一個(gè)實(shí)體可以對(duì)應(yīng)好幾張數(shù)據(jù)庫(kù)表。比如課程這個(gè)Bo,它除了有課程的基本信息,還有任課教師的姓名。很明顯的課程的基本信息表是不會(huì)有教師姓名的,因?yàn)檎n程表是通過(guò)教師id而不是通過(guò)教師姓名來(lái)和教師表關(guān)聯(lián)。所以為了實(shí)例化一個(gè)課程,可能需要查詢兩張數(shù)據(jù)庫(kù)表才能實(shí)例化。
對(duì)用戶表的增加、刪除、修改、查詢操作,這是所有用戶概念網(wǎng)站都需要實(shí)現(xiàn)的功能。
系統(tǒng)有很多用戶,如果對(duì)每個(gè)用戶都控制權(quán)限,這樣管理員就非常不好操作。因?yàn)槊啃绿硪粋€(gè)用戶的時(shí)候,都要進(jìn)行大量的設(shè)置。本系統(tǒng)采用角色進(jìn)行權(quán)限控制,用戶對(duì)應(yīng)到角色,同時(shí)享有該角色的權(quán)限。
3.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
用戶管理在數(shù)據(jù)庫(kù)中一共六張表,分別是管理員表、教師表、學(xué)生表和課程表、成績(jī)表、班級(jí)表。整體的數(shù)據(jù)庫(kù)表的物理數(shù)據(jù)模型如圖1所示。
圖1 物理數(shù)據(jù)模型
系統(tǒng)總體的框架設(shè)計(jì)為:第一次啟動(dòng)時(shí),在登錄窗口分別輸入系統(tǒng)默認(rèn)的用戶名和密碼??晒┻x擇的用戶類型有學(xué)生、教師、管理員三種,驗(yàn)證通過(guò)后可進(jìn)入各用戶窗口。系統(tǒng)管理員的權(quán)限最高,可根據(jù)實(shí)際情況為教師添加用戶并進(jìn)行權(quán)限管理。對(duì)于教師開(kāi)設(shè)的課程,班級(jí)和學(xué)生,系統(tǒng)管理員有權(quán)訪問(wèn)考核。教師在教學(xué)活動(dòng)中可以選擇學(xué)生,對(duì)學(xué)生所學(xué)課程錄入成績(jī)并公布。教師可以編寫(xiě)形式多樣、圖文并茂、簡(jiǎn)潔直觀的在線學(xué)習(xí)內(nèi)容,有助于廣大學(xué)生理解和掌握;使學(xué)生在豐富多樣的在線學(xué)習(xí)活動(dòng)
中既能獲得知識(shí),又能提高能力。教師可對(duì)本學(xué)期的所報(bào)該課程的學(xué)生進(jìn)行選擇學(xué)生。當(dāng)一門課程學(xué)習(xí)完畢,教師可以在線進(jìn)行考核,并對(duì)所選課程的學(xué)生進(jìn)行成績(jī)的公布。同時(shí)教師可以進(jìn)行成績(jī)的錄入。學(xué)生登錄后主要可以進(jìn)行課程的選擇及成績(jī)的查看,當(dāng)學(xué)生使用課程管理信息系統(tǒng)進(jìn)入學(xué)生界面就可以看到本學(xué)期可供選擇的課程和開(kāi)課的教師,并查看任課教師給出的成績(jī)。
學(xué)生在選擇課程時(shí)同時(shí)可以查看任課的教師、上課時(shí)間和地點(diǎn),課程選擇。學(xué)期結(jié)束查看成績(jī)可以看到分?jǐn)?shù)和所修學(xué)分。在典型的情景中幫助學(xué)生領(lǐng)會(huì)理論,學(xué)以致用。
基于Struts-Hibernate架構(gòu)的課程管理信息系統(tǒng)具有結(jié)構(gòu)靈活、易于維護(hù)、擴(kuò)展性好、界面友好等優(yōu)點(diǎn)。本文在學(xué)習(xí)Web技術(shù)、Oracle數(shù)據(jù)庫(kù)技術(shù)和Eclipse開(kāi)發(fā)技術(shù)的基礎(chǔ)上,分析了MVC設(shè)計(jì)模式,闡述了Struts框架和Hibernate技術(shù)兩者整合的優(yōu)勢(shì),以此作為本系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的基礎(chǔ),最終設(shè)計(jì)并實(shí)現(xiàn)了為學(xué)校教學(xué)服務(wù)的課程管理信息系統(tǒng),本系統(tǒng)在開(kāi)發(fā)階段就已經(jīng)體現(xiàn)出了一些很大的優(yōu)勢(shì)。
[1] 劉新陽(yáng),王秀芳.建構(gòu)主義的網(wǎng)絡(luò)課程管理信息系統(tǒng)[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006(3):67-69.
[2] 錢忠勝.基于Hibernate的數(shù)據(jù)持久化研究及其應(yīng)用[J].微計(jì)算機(jī)信息,2007,23(24):242-244.
Research and Design on Course Management Information System Based on Struts-Hibernate
Liu Qin
(LogisticsTechnologySchoolofShanxiProvince,TaiyuanShanxi030031,China)
With the rapid development of computer technology, information technology and network technology, web-based course management information system has been widely used. The school uses the system to enable students making self selection and self learning, so as to improve the teaching effect and management, make the teaching activities to be organized and carried out smoothly. It provides an important basis for improving the quality of school teaching.
Struts; Hibernate; curriculum management information system; design and research
2016-12-08
劉 琴(1980- ),女,河北盧龍縣人,講師,碩士,計(jì)算機(jī)應(yīng)用技術(shù)方向。
1674- 4578(2017)01- 0087- 03
TP311.52
A