張標(biāo)漢
(三明學(xué)院信息工程學(xué)院,福建三明365004)
基于MVC的程序設(shè)計(jì)課程慕課平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
張標(biāo)漢
(三明學(xué)院信息工程學(xué)院,福建三明365004)
針對(duì)課程教學(xué)與改革的需要,開(kāi)發(fā)了一套類慕課在線學(xué)習(xí)與測(cè)試系統(tǒng)。該系統(tǒng)采用.NETMVC模式進(jìn)行開(kāi)發(fā),設(shè)計(jì)了模型類、控制器類和相應(yīng)的視圖頁(yè)面來(lái)實(shí)現(xiàn)該系統(tǒng)。系統(tǒng)提供了課程的維護(hù)、學(xué)習(xí)的監(jiān)督、作業(yè)的布置、測(cè)試的判定等基本的功能,為課程教學(xué)與改革提供了基礎(chǔ)平臺(tái)和技術(shù)支持。
程序設(shè)計(jì);慕課;HUSTOJ;MVC
程序設(shè)計(jì)課程是計(jì)算機(jī)相關(guān)專業(yè)的基礎(chǔ)課,為了提高該課程的教學(xué)質(zhì)量,諸多高校針對(duì)該課程進(jìn)行了不同方向的教學(xué)改革實(shí)踐與探索,提出了案例教學(xué)法、理論與實(shí)踐一體化等改革措施,這些改革都一定程度上提高了程序設(shè)計(jì)課程的教學(xué)質(zhì)量[1-3]。此外,程序在線測(cè)試平臺(tái)(online judge,OJ)在課程改革中也被寄予厚望,很多高校都在探索利用OJ平臺(tái)激發(fā)學(xué)生的學(xué)習(xí)興趣、提高學(xué)生的編程能力和綜合實(shí)踐能力[4-5],這些學(xué)校正是在OJ系統(tǒng)的輔助下提高了本校程序設(shè)計(jì)課程的教學(xué)效果。
正是看到了OJ系統(tǒng)對(duì)程序設(shè)計(jì)課程教學(xué)的較大作用,國(guó)內(nèi)不少知名大學(xué)都開(kāi)發(fā)了自己的OJ系統(tǒng)為本校的程序設(shè)計(jì)課程教學(xué)和競(jìng)賽服務(wù)[6],但這些OJ系統(tǒng)對(duì)其他學(xué)校來(lái)說(shuō)不是免費(fèi)的。限于技術(shù)力量不夠許多學(xué)校沒(méi)能自己開(kāi)發(fā)OJ系統(tǒng),因此,這些學(xué)校轉(zhuǎn)向?qū)ふ议_(kāi)源的系統(tǒng),HUSTOJ是目前國(guó)內(nèi)許多高校正在使用的開(kāi)源OJ系統(tǒng)。但該OJ系統(tǒng)僅支持程序的在線測(cè)評(píng),尚不支持課程的在線學(xué)習(xí),在有些方面難以滿足不同學(xué)校的個(gè)性化需求。本文針對(duì)程序設(shè)計(jì)在線學(xué)習(xí)平臺(tái)建設(shè)的需要,在HUSTOJ的判題核心的基礎(chǔ)上對(duì)在線學(xué)習(xí)平臺(tái)進(jìn)行了設(shè)計(jì),并利用.NETMVC編程實(shí)現(xiàn)了一個(gè)類慕課系統(tǒng)。
1.1 慕課平臺(tái)的基本功能
慕課(massive open online course,MOOC),即“大規(guī)模開(kāi)放的在線課程”,是一種在線課程模式[7]。慕課具有在線視頻學(xué)習(xí)、在線作業(yè)、在線輔導(dǎo)答疑、在線測(cè)評(píng)和考試等基本功能。設(shè)計(jì)和開(kāi)發(fā)本慕課平臺(tái)系統(tǒng)的最初目的實(shí)際上是為了在程序設(shè)計(jì)課程教學(xué)過(guò)程中實(shí)踐翻轉(zhuǎn)課堂教學(xué)模式,作為課堂教學(xué)的輔助平臺(tái)供本校學(xué)生使用。學(xué)生在平臺(tái)的學(xué)習(xí)與程序設(shè)計(jì)課程的課堂教學(xué)同步進(jìn)行,教學(xué)過(guò)程中學(xué)生先按照教師布置的任務(wù)進(jìn)行教學(xué)視頻的學(xué)習(xí),并完成一定的課前練習(xí);然后在課堂上教師主要進(jìn)行答疑解惑,講解習(xí)題;學(xué)生課后再完成平臺(tái)上的課后練習(xí)和測(cè)試。
本慕課平臺(tái)主要有課程視頻管理、課程拓展資料管理、課程題庫(kù)管理、作業(yè)與測(cè)試管理、成績(jī)管理和輔導(dǎo)答疑(論壇)等主要功能。其中課程視頻管理主要是課程視頻的創(chuàng)建、上傳、更新和刪除;課程拓展資料管理主要是課程相關(guān)的參考資料、授課PPT等文件的上傳、更新等操作。課程題庫(kù)管理主要是維護(hù)課程相關(guān)的題目,系統(tǒng)中的題目主要有兩類,一類是客觀題,一類是編程題,客觀題的判斷依據(jù)預(yù)設(shè)的標(biāo)準(zhǔn)答案,而編程題的判斷則依托HUSTOJ判題核心。
1.2 系統(tǒng)判題核心簡(jiǎn)介
本系統(tǒng)采用的編程題的判題核心是HUSTOJ,該系統(tǒng)是由華中科技大學(xué)畢業(yè)生開(kāi)發(fā)的一個(gè)遵循GPL協(xié)議開(kāi)源的程序在線測(cè)評(píng)系統(tǒng),后來(lái)張浩斌對(duì)該系統(tǒng)進(jìn)行了大量改進(jìn),使得系統(tǒng)功能更加完善[8]。目前已知國(guó)內(nèi)有50多家高校、科研機(jī)構(gòu)采用HUSTOJ搭建了自己的OJ系統(tǒng)。HUSTOJ基于Linux平臺(tái),采用MySQL和PHP開(kāi)發(fā),系統(tǒng)包括判題核心Judged和Web界面兩個(gè)部分。由于原系統(tǒng)的Web界面部分不適用于本慕課系統(tǒng),因此本慕課系統(tǒng)主要使用了HUSTOJ系統(tǒng)的判題核心Judged,將該判題核心Judged部署在Ubuntu Linux平臺(tái)上。對(duì)于Web界面部分,本系統(tǒng)采用.NETMVC(Model-View-Controller)進(jìn)行開(kāi)發(fā),使用的是C#語(yǔ)言。系統(tǒng)的基本架構(gòu)如下圖1所示:
圖1 系統(tǒng)基本架構(gòu)Figure 1 The system basic structure
1.3.NET MVC簡(jiǎn)介
本系統(tǒng)采用.NETMVC技術(shù)進(jìn)行慕課系統(tǒng)的開(kāi)發(fā)。MVC是一種軟件開(kāi)發(fā)架構(gòu)模式,它把軟件系統(tǒng)分為三個(gè)基本部分:Model(模型)、View(視圖)和Controller(控制器),這三個(gè)部分相對(duì)獨(dú)立,職責(zé)單一。Model負(fù)責(zé)與應(yīng)用程序業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)處理,包括數(shù)據(jù)的驗(yàn)證、對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的存取。View負(fù)責(zé)與用戶的交互,通常是Web頁(yè)面,用戶通過(guò)視圖向系統(tǒng)輸入數(shù)據(jù),發(fā)出數(shù)據(jù)請(qǐng)求,系統(tǒng)通過(guò)視圖向用戶顯示請(qǐng)求的數(shù)據(jù)。Controller主要負(fù)責(zé)邏輯處理,處理用戶的請(qǐng)求并負(fù)責(zé)與Model進(jìn)行數(shù)據(jù)的交互,并控制應(yīng)用程序的流程??傊贛VC模式中,用戶通過(guò)視圖向服務(wù)器提交請(qǐng)求,控制器處理用戶的請(qǐng)求并負(fù)責(zé)與模型進(jìn)行數(shù)據(jù)的存取,并將處理的結(jié)果返回給視圖,由視圖向用戶展示結(jié)果,.NETMVC的運(yùn)行機(jī)制如下圖2所示:
圖2 MVC運(yùn)行機(jī)制Figure 2 Operatingmechanism ofMVC
2.1 系統(tǒng)功能模塊
系統(tǒng)主要包含課程管理、學(xué)習(xí)管理、作業(yè)與測(cè)試管理等模塊。課程管理包括課程的創(chuàng)建、課程資料的維護(hù),由授課教師申請(qǐng)創(chuàng)建一門(mén)課程,在申請(qǐng)通過(guò)審核后,授課教師上傳該課程相關(guān)的資料,比如PPT課件、授課視頻、拓展資料等,課程資料由授課教師自行維護(hù)。學(xué)習(xí)管理包括學(xué)員的學(xué)習(xí)行為的記錄(包括學(xué)習(xí)進(jìn)度、作業(yè)完成情況、參與討論情況等)、監(jiān)督學(xué)員的學(xué)習(xí)并在必要時(shí)提醒學(xué)員繼續(xù)課程的學(xué)習(xí)(包括提醒學(xué)員及時(shí)完成課程作業(yè)、準(zhǔn)時(shí)參加課程測(cè)試等)。作業(yè)與測(cè)試管理包括作業(yè)的布置、批改,測(cè)試的創(chuàng)建和維護(hù),其中測(cè)試維護(hù)包括課程題庫(kù)的維護(hù)。各功能模塊如下圖3所示:
圖3 系統(tǒng)功能模塊Figure 3 System functionmodule
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
系統(tǒng)由于采用.NETMVC進(jìn)行開(kāi)發(fā),因此在數(shù)據(jù)庫(kù)方面選擇了Microsoft SQL Server 2008來(lái)存儲(chǔ)系統(tǒng)的數(shù)據(jù)。根據(jù)系統(tǒng)功能模塊的設(shè)計(jì),數(shù)據(jù)庫(kù)中主要有如下一些數(shù)據(jù)表:
表1 課程表Table 1 Course
課程表主要存儲(chǔ)了慕課系統(tǒng)中的課程信息。
表2 學(xué)員選修課程表Table 2 User course
學(xué)員選修課程表存儲(chǔ)了學(xué)員所選修的課程的信息。
表3 課程資料表Table 3 Course document
課程資料表存儲(chǔ)了課程的所有資料的信息,包括課程視頻、課程PPT、參考文獻(xiàn)等。
表4 課程視頻學(xué)習(xí)進(jìn)度表Table 4 Course video process
課程視頻學(xué)習(xí)進(jìn)度表存儲(chǔ)了某一位學(xué)員學(xué)習(xí)課程時(shí)觀看某個(gè)視頻的進(jìn)度。
在.NETMVC程序設(shè)計(jì)中通過(guò)定義模型(Model)類來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的存取,定義控制器(Controller)類來(lái)實(shí)現(xiàn)程序流程的控制,定義視圖(View)來(lái)與用戶進(jìn)行交互,接受用戶的數(shù)據(jù)請(qǐng)求并轉(zhuǎn)交給控制器類來(lái)處理。
3.1 模型(Model)類
系統(tǒng)定義了若干的模型類來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中表的操作,通常對(duì)于數(shù)據(jù)庫(kù)中的每一個(gè)表都會(huì)定義一個(gè)模型類與之映射,通過(guò)這種一一映射實(shí)現(xiàn)數(shù)據(jù)的存取操作。系統(tǒng)定義的模型類主要有4類。
(1)Course類:與數(shù)據(jù)庫(kù)中的Course表相對(duì)應(yīng)。
(2)UserCourse類:與數(shù)據(jù)庫(kù)中的UserCourse表相對(duì)應(yīng)。
(3)CourseDocument類:與數(shù)據(jù)庫(kù)中的Course-Document表相對(duì)應(yīng)。
(4)CourseVideoProcess類:與數(shù)據(jù)庫(kù)中的Course-VideoProcess表相對(duì)應(yīng)。
其中Course類的定義如下:
public partial class Course
{
public int ID{get;set;}
public string CourseName{get;set;}
public int CourseWeek{get;set;}
public int TeacherID{get;set;}
public string Description{get;set;}
}
其余幾個(gè)模型類的定義與此類似。
3.2 控制器(Controller)類
控制器類主要用于處理用戶的請(qǐng)求,并與模型類進(jìn)行交互實(shí)現(xiàn)數(shù)據(jù)的存取操作,并將處理結(jié)果反饋給視圖。系統(tǒng)定義的控制器類主要有3類。
(1)HomeController類:主要用于系統(tǒng)前臺(tái)頁(yè)面的處理。
(2)CourseController類:主要用于課程管理。
(3)StudentController類:主要用于學(xué)員的課程學(xué)習(xí)和管理。
其中CourseController控制器類的定義如下:
public class CourseController:Controller
{
SMCIESEntities db=new SMCIESEntities();//數(shù)據(jù)庫(kù)
///〈summary〉
///課程的創(chuàng)建頁(yè)面
///〈/summary〉
///〈returns〉〈/returns〉
[SysAdminAuthorize]
public ActionResult InsertCourse()
{
…
return View();
}
///〈summary〉
///處理課程的創(chuàng)建請(qǐng)求
///〈/summary〉
///〈returns〉〈/returns〉
[SysAdminAuthorize]
[HttpPost]
public ActionResult InsertCourse(Course c)
{
…
return View();
}
…
}
3.3 視圖(View)
視圖主要用于與用戶進(jìn)行交互,接受用戶的輸入并由用戶發(fā)起數(shù)據(jù)操作的請(qǐng)求(插入數(shù)據(jù)、查詢數(shù)據(jù)等)。視圖的請(qǐng)求通常提交給某一個(gè)控制器的某一個(gè)Action進(jìn)行處理。視圖的編寫(xiě)使用HTML語(yǔ)言結(jié)合CSS、JavaScript、JQuery、AJax等技術(shù)來(lái)實(shí)現(xiàn)。在視圖的設(shè)計(jì)過(guò)程中通常會(huì)使用布局頁(yè)或母版頁(yè)。
系統(tǒng)為了滿足課程教學(xué)的需要,實(shí)現(xiàn)了一個(gè)類慕課系統(tǒng)。在該系統(tǒng)中教師可以創(chuàng)建課程并維護(hù)課程資料、布置作業(yè)、組織課程測(cè)試并評(píng)定學(xué)生的學(xué)習(xí)成績(jī)。學(xué)生通過(guò)該選修某門(mén)課程,觀看課程視頻、完成課程作業(yè)、參加課程測(cè)試并最后獲得系統(tǒng)評(píng)定的課程成績(jī)。在該系統(tǒng)的開(kāi)發(fā)過(guò)程中采用了.NETMVC開(kāi)發(fā)模式進(jìn)行開(kāi)發(fā),通過(guò)設(shè)計(jì)模型類、控制器類和相應(yīng)的視圖頁(yè)面實(shí)現(xiàn)了整個(gè)系統(tǒng)。該系統(tǒng)的投入使用將為《C語(yǔ)言程序設(shè)計(jì)》課程的教學(xué),尤其是該課程的翻轉(zhuǎn)課堂教學(xué)改革與探索提供技術(shù)支持。
[1]胡楓.C語(yǔ)言程序設(shè)計(jì)的案例式教學(xué)的設(shè)計(jì)[J].青海師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2010(4):48-51.
[2]謝競(jìng)博.C語(yǔ)言程序設(shè)計(jì)教學(xué)中的問(wèn)題及改革建議[J].重慶郵電大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2008,20(2):137-140.
[3]儲(chǔ)岳中.C語(yǔ)言程序設(shè)計(jì)理論與實(shí)踐一體化教學(xué)的幾點(diǎn)實(shí)踐[J].計(jì)算機(jī)教育,2012(12):22-25.
[4]朱月秀.基于ACM競(jìng)賽的C程序設(shè)計(jì)課程教學(xué)改革[J].漳州師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2012(1):96-99.
[5]廖雪花,厲蘭潔,唐思娩.基于OnlineJudge的C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)課教學(xué)改革研究[J].計(jì)算機(jī)教育,2016(6):130-132.
[6]陳榮欽,胡永良,應(yīng)建健,等.在線評(píng)測(cè)系統(tǒng)中的源碼相似度檢測(cè)研究與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2014,31(4):109-111,149.
[7]百度百科.慕課[EB/OL].(2015-11-14)[2016-07-29].http://baike.baidu.com/view/10629886.htm.
[8]張浩斌.基于開(kāi)放式云平臺(tái)的開(kāi)源在線評(píng)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2012,39(11):339-343,348.
(責(zé)任編輯:葉麗娜)
Design and ImplementofMOOCSSystem for Programming Coursebased on MVC
ZHANG Biaohan
(School of Information and Engineering,Sanming University,Sanming,Fujian 365004)
A software system is designed for the online learning and testing.It like a MOOC system.The system is developed by.NET MVCmodel.In the system,the Model class,Controller class are designed,and the view pages are also designed to show the data for users.The system provides the basic functions,such as themaintenance of the curriculum,the supervision of the study,the arrangementof the homework,the judgmentof the testand so on,which provides the basic platform and technical support for the course teaching and reform.
programming;MOOCS;HUSTOJ;MVC
TP311.5
A
1674-2109(2017)03-0102-04
2016-09-12
福建省高等學(xué)校教學(xué)改革研究項(xiàng)目(JAS14765)。
張標(biāo)漢(1977-),男,漢族,講師,主要從事計(jì)算機(jī)應(yīng)用的研究。