譚佩知
引言:本文論述了在.NET平臺上搭建基于WinForm形式的通用精品課程開發(fā)平臺的設(shè)計思想和實現(xiàn)技術(shù),并就如何構(gòu)建一個實際的精品課程開發(fā)平臺作了深入的分析與探討,其中包括系統(tǒng)框架設(shè)計、模板規(guī)范定義、工程目錄文件結(jié)構(gòu)定義、網(wǎng)頁合成規(guī)則定義等一系列平臺約束規(guī)則,重點論述了基于微軟COM組件—DHTML Edit Control for IE5 編寫HTML網(wǎng)頁編輯器的主要實現(xiàn)技術(shù)和原理。建成的平臺可以使非專業(yè)人員方便的進行規(guī)范的精品課程開發(fā),具有一定的實用價值。
一、引言
目前,精品課程建設(shè)已經(jīng)受到人們的高度重視,但因為承擔精品課程的教師一般并不具備開發(fā)精品課程所需的計算機知識。所以,往往花費了大量人力、物力、財力,還不能得到滿意的效果。另外,已開發(fā)的精品課程課件形式單一,功能簡單,難以更新,所以亟待一個滿足精品課程建設(shè)需要的輔助工具。
二、系統(tǒng)總體設(shè)計
系統(tǒng)主要由新建工程模塊、打開工程模塊、編輯工程模塊、合成網(wǎng)頁模塊等功能模塊構(gòu)成。其中,新建工程模塊可以新建立一個精品課程開發(fā)工程,直接采用向?qū)搅鞒?,簡單的幾步操作就可以完成,最后生成的目錄里存放了此工程的所有信息,包括用戶編輯工程后已?jīng)更改的信息,當用戶下次需要編輯此課程時只需啟動此工程的工程文件既可繼續(xù)編輯。
打開工程模塊可以打開以前建立的或者編輯過的工程,軟件會自動檢測工程信息的完整性并讀取、維護工程信息。
編輯工程模塊,是系統(tǒng)的核心模塊里面嵌入了網(wǎng)頁編輯器可以使用戶用最簡單的操作制作出精美的網(wǎng)頁。
節(jié)點移動模塊內(nèi)包括節(jié)點上移和節(jié)點下移兩大功能,它主要是改變目錄樹中各節(jié)點的順序,此操作將永久保留在工程文件中,下次啟動此工程時將會出現(xiàn)的是最后一次保存的操作,而且此操作也將體現(xiàn)在后來合成的網(wǎng)站的目錄樹中,軟件內(nèi)的目錄樹的節(jié)點順序和網(wǎng)站中的目錄樹順序是一一對應(yīng)生成的,軟件內(nèi)改變了順序網(wǎng)站中也會隨之改變。
合成網(wǎng)頁模塊封裝了強大的網(wǎng)頁合成功能,用戶只需選擇網(wǎng)站合成路徑,然后點“確定”一鍵就可以合成一個精美的網(wǎng)站,該模塊為用戶完成了許多復(fù)雜的操作,直接把零散的網(wǎng)頁經(jīng)過加工合成網(wǎng)站,使用起來特別方便簡單。
三、系統(tǒng)實現(xiàn)
3.1 新建工程模塊的實現(xiàn)
新建工程時,將用戶選擇的精品課程功能模塊節(jié)點按一定的順序一一插入到工程的數(shù)據(jù)庫文件中。先插入全部的一級節(jié)點,用遞歸搜索整個已經(jīng)插入的樹節(jié)點,查找到當前節(jié)點的父節(jié)點在數(shù)據(jù)庫中的位置,再插入子節(jié)點。
3.2 打開工程模塊的實現(xiàn)
系統(tǒng)定義的工程文件后綴名為.zhp。當打開工程文件并檢測正確時,系統(tǒng)進行驗證工程操作,檢測工程文件是否完整,為了防止程序出現(xiàn)意外錯誤,程序不允許工程文件有改動的情況發(fā)生。如果工程文件驗證正確,再讀取工程信息,打開工程供用戶進行編輯,修改精品課程信息。
3.3 自定義工程文件的實現(xiàn)
首先記錄了一個工程的基本啟動信息,自定義的工程文件后綴為.zhp,文件圖標為系統(tǒng)可執(zhí)行程序的默認圖標,直接關(guān)聯(lián)到可執(zhí)行程序,采用注冊表關(guān)聯(lián)法,運行前先確認當前計算機用戶是否有訪問注冊表的權(quán)限,如果沒有,系統(tǒng)將不能正常運行。
3.4 關(guān)系數(shù)據(jù)庫到目錄樹的映射實現(xiàn)方法
本系統(tǒng)采用 “邊存貯路徑邊搜索”的方法,后來添加的節(jié)點是在已添加節(jié)點的基礎(chǔ)上,或是同級節(jié)點,或是子節(jié)點。從數(shù)據(jù)庫里讀出記錄添加到樹中時也把記錄值的節(jié)點路徑存儲在數(shù)據(jù)庫中,以后子節(jié)點的添加通過搜索節(jié)點路徑獲取父節(jié)點的位置來實現(xiàn)。
3.5 節(jié)點移動的實現(xiàn)方法
節(jié)點移動涉及到界面上的移動和后臺數(shù)據(jù)庫中記錄的移動。界面上目錄樹節(jié)點移動的實現(xiàn)方法是:克隆當前選擇節(jié)點的副本,刪除該節(jié)點,把副本插入到上一個節(jié)點或者下一個節(jié)點的索引處。數(shù)據(jù)庫中的記錄移動有四種情況,與界面上移動的兩個節(jié)點是否擁有子節(jié)點來相關(guān)。以節(jié)點上移為例來說明:當移動的兩個都沒有子節(jié)點時,把原節(jié)點的數(shù)據(jù)庫記錄的Node_Id字段設(shè)為10000,然后把下一節(jié)點的數(shù)據(jù)庫記錄下移一個位置即把Node_Id字段值減去1,再把原節(jié)點的Node_Id字段值設(shè)為下一節(jié)點的原Node_Id字段值,這樣就完成了兩個節(jié)點的交換;當兩節(jié)點其中之一有子節(jié)點或者是兩個節(jié)點都有子節(jié)點時,移動的方法相似只是移動的位置要加上原節(jié)點的數(shù)目,當移動的節(jié)點中某節(jié)點有子節(jié)點時,子節(jié)點的記錄的Parent_Id字段的值也應(yīng)改變相應(yīng)大小的值。
3.6 合成HTML網(wǎng)站的實現(xiàn)方法
1.程序預(yù)先創(chuàng)建好的網(wǎng)站目錄及子目錄包括:Data目錄、Html目錄、Courseware目錄、UserInterface目錄、Root目錄、Book目錄等;其中,data目錄用于存儲站點相關(guān)的數(shù)據(jù)庫文件,html用于存儲靜態(tài)化的網(wǎng)站頁面。
2.復(fù)制首頁及框架頁面到目標文件夾下,合成網(wǎng)站時只需把這幾個htm文件復(fù)制到相應(yīng)的位置即可,其他所需文件由程序自動生成。
3.更改框架頁面的內(nèi)容,比如頁面上顯示的精品課程名字、學校名字等,更改的方法是讀取頁面的內(nèi)容于內(nèi)存中,根據(jù)查找替換匹配字符串來更改信息,然后重新保存頁面并覆蓋以前的頁面。下一步可以將相關(guān)信息以全局變量的形式存儲,并通過系統(tǒng)后臺更改。
4.生成網(wǎng)頁目錄樹中子節(jié)點的節(jié)點頁面也就是當目錄中某一節(jié)點擁有子節(jié)點時,點擊父節(jié)點則顯示子節(jié)點列表,顯示方法則是通過加載子節(jié)點網(wǎng)頁來實現(xiàn)的;
5.合成節(jié)點的鏈接頁面,程序根據(jù)節(jié)點的路徑去工程的數(shù)據(jù)庫文件中查找到存放當前節(jié)點信息的記錄,取出Node_Content字段的值,程序自動根據(jù)規(guī)則替換路徑并合成網(wǎng)頁,存放到目標文件夾中;6.合成結(jié)束,提示用戶是否打開預(yù)覽合成的網(wǎng)站。
參考文獻
[1]楊浩.VB.NET入門經(jīng)典[M].第3版.北京:清華大學出版社,2005-03.
[2]尹建民 張海卿.VB.NET入門與進階[M].第1版.北京:清華大學出版社,2002-10.
[3]葛小東 鄧秋媛.VB,NET編程實例與技巧集粹[M].第1版.北京:北京希望電子出版社,2003-08:247-352.
(作者單位:瀘州職業(yè)技術(shù)學院信息工程系)
基金項目
瀘州市科技計劃項目2013-S-44(2/8)、瀘州市科技創(chuàng)新苗子培育計劃項目2013-R-51(4/18)、2014-R-52(18/20)