華文學生計算機技能輔助系統(tǒng)中.NET程序技術(shù)
華文教育首先是指為掌握華文而興辦的教育。在具體語境中,它的涵義可能有如下變化:(1)著眼于辦學主體,將它理解為華僑華人在居住國與入籍國興辦的教育,略近于華僑教育、華人教育;(2)著眼于教育對象,將它理解為面向海外華僑華人子女的教育,與華人華僑青少年教育相通;(3)著眼于教學手段,將它解釋為運用華文進行的教育,其科目不限于語言文字;(4)強調(diào)教育的社會功能,將掌握華文視為學習、繼承與發(fā)揚中華文化優(yōu)良傳統(tǒng)的途徑,由此將華文教育的外延由語言文字領(lǐng)域擴展到文化領(lǐng)域[1]。
1 華文學生計算機基本操作技能現(xiàn)狀
華文學生計算機基本操作技能是計算機知識的入門課程,內(nèi)容著重于計算機的基礎(chǔ)知識、基本概念和基本操作技能,并兼顧實用軟件的使用和計算機應用領(lǐng)域的前沿知識,為學生熟練使用計算機和進一步學習計算機相關(guān)知識打下基礎(chǔ)。其教材的編寫和國內(nèi)學生計算機操作技能的教材基本一樣,但對于教材的描述語言是經(jīng)過漢語學者遴選的。通過該課程的學習,使學生在基本掌握計算機基礎(chǔ)知識的基礎(chǔ)上理解一些計算機的常用術(shù)語和基本概念;學生能較熟練地使用Windows 2000操作平臺,熟練掌握文字處理軟件Word、表格處理軟件Excel 及演示文稿制作軟件PowerPoint的基本操作,掌握Internet和瀏覽器以及網(wǎng)頁制作軟件FrontPage的基本使用方法,掌握計算機信息安全等。
(1)在平時的課堂授課中:由于計算機技能課都是中文授課,這就是一種華語教學上的計算機技能培訓。學生有時可能會聽不懂老師用中文講授的課程內(nèi)容,但是老師的操作步驟是一種感性的認識,學生基本都會明白,那么當學生閱讀教材或者進行實訓的時候,遇到中文表述的操作步驟時,如果他們能夠借助一個輔助系統(tǒng)進行對應的母語的查找,則可解決問題。
(2)技能測試中的情況:華文學生的計算機測試是語言關(guān)基礎(chǔ)上的計算機測試,學生首先讀懂了中文題目,進一步才是答題。根據(jù)筆者的教學和監(jiān)考評卷經(jīng)驗,很多情況下是因為學生中文試題題目沒有讀懂以至于他們解答不了這個題目或者解答不正確,但這并不代表他們不會這項計算機技能[2]。
基于以上情況,可以按章節(jié)、按難易程度設置檢索關(guān)鍵詞和關(guān)鍵短語,并為關(guān)鍵詞和短語配圖或操作視頻,建立一個這樣的系統(tǒng)供學生上課和學習時使用。該系統(tǒng)是課程范圍內(nèi)的“金山詞霸”,輔助學生學習,這樣學生就不必要死記硬背華文詞語進行計算機基本操作技能的學習。如果在平時的學習中學生已經(jīng)能熟練地操作該輔助系統(tǒng),測試時,即使題目的中文再復雜,學生把不懂的關(guān)鍵短語弄明白后也可以做到基于語言關(guān)基礎(chǔ)上的作答了[3]。
系統(tǒng)采用.NET三層框架的模式進行開發(fā),在應用系統(tǒng)進行查詢和瀏覽時,常常要顯示多頁的內(nèi)容,為了有效節(jié)省客機資源和網(wǎng)絡帶寬,做到 “按需索取”,相對傳統(tǒng)Web應用減少了客戶端與服務器的數(shù)據(jù)交互量,采用自定義的分頁技術(shù)來改善資源利用率,在Internet或者LAN內(nèi)都能有效地節(jié)約寶貴帶寬資源,提高系統(tǒng)的響應和查詢效率。
2 .NET分頁技術(shù)與自定義分頁技術(shù)
2.1 傳統(tǒng)分頁技術(shù)
DataGrid 控件內(nèi)置地支持對數(shù)據(jù)源的記錄的分頁操作。例如,假定要顯示一個計算機基本技能名詞列表,其中包含幾百條記錄,但并不想一次在一個頁面中顯示所有這些記錄,而是要把這些記錄分放到多個邏輯頁面中,此時可以通過允許AllowPaging屬性并且創(chuàng)建一個子程序來修改當前頁面,由此來允許DataGrid的分頁操作。在允許分頁操作時還有一個重要的要素,那就是只有存在DataGrid控件的數(shù)據(jù)源實現(xiàn)了ICollection接口時才能允許分頁操作。DataReader沒有實現(xiàn)這種接口,因此就必須改用DataTable。頁面內(nèi)顯示的記錄數(shù)由DataGrid控件的PageSize屬性決定,在默認情況下,該屬性值為10,在程序清單中把它設為其他值以便每頁顯示自定義的記錄[4]。
2.2 自定義分頁技術(shù)原理
分頁是Web應用程序中最常用到的功能之一,也是許多ASP.NET程序員最頭疼的問題。ASP.NET中自帶的可以分頁的DataGrid(ASP.NET 1.1)和GridView(asp.net 2.0)控件可定制性差、無法通過Url實現(xiàn)分頁功能等,而且有時需要對DataList和Repeater甚至自定義數(shù)據(jù)綁定控件進行分頁,手工編寫分頁代碼不但技術(shù)難度大、任務繁瑣, 而且代碼重用率極低,每次當瀏覽新的頁面時,所有的記錄都必須從數(shù)據(jù)庫檢索出來。因此,如果對有幾十萬條記錄的數(shù)據(jù)庫分頁時,這幾十萬條記錄必須在每次移動到新頁面時檢索到內(nèi)存中。本文將實現(xiàn)一個自定義分頁的解決方案來避開這個局限,只要檢索所需要的記錄而不是獲取要在每頁中顯示的每條記錄。
AspNetPager分頁控件彌補了ASP.NET分頁的不足,提出了與眾不同的方案解決ASP.NET中分頁問題,即將分頁導航功能與數(shù)據(jù)顯示功能完全獨立開來,由用戶自己控制數(shù)據(jù)的獲取及顯示方式,因此可以靈活地應用于任何需要實現(xiàn)分頁導航功能的地方,如為GridView、DataList以及Repeater等數(shù)據(jù)綁定控件實現(xiàn)分頁、呈現(xiàn)自定義的分頁數(shù)據(jù)以及制作圖片瀏覽程序等。AspNetPager控件和數(shù)據(jù)是獨立的,因此要分頁的數(shù)據(jù)可以來自任何數(shù)據(jù)源,如SQL Server、Oracle、Access、mysql、DB2等數(shù)據(jù)庫以及XML文件、內(nèi)存數(shù)據(jù)或緩存中的數(shù)據(jù)、文件系統(tǒng)等[5]。
3 .NET自定義分頁技術(shù)
3.1 系統(tǒng)開發(fā)背景
ASP.NET可以使用.NET平臺快速方便地部署三層架構(gòu)。ASP.NET革命性的變化是在網(wǎng)頁中也使用基于事件的處理,可以指定處理的后臺代碼文件,可以使用C#、VB、J#作為后臺代碼的語言。.NET中可以方便地實現(xiàn)組件的裝配,后臺代碼通過命名控件可以方便地使用自己定義的組件。顯示層放在ASP頁面中,數(shù)據(jù)庫操作和邏輯層用組件來實現(xiàn),這樣就很方便地實現(xiàn)了三層架構(gòu)。用ASP.NET部署三層架構(gòu)來開發(fā)華文教育下的計算機技能關(guān)鍵詞和關(guān)鍵短語的查詢系統(tǒng),系統(tǒng)的架構(gòu)如圖1所示。
首先在SqlServer數(shù)據(jù)庫中建一個數(shù)據(jù)庫CompWord,在CompWord中建表TB_CompWord,如表1所示。
(1)打開VS.NET,在新建項目中選擇Visal C#項目,模板選擇ASP.NET Web應用程序,為本方案命名為CompWord。
(2)建立數(shù)據(jù)庫訪問控件DBLayer,此控件用來調(diào)用數(shù)據(jù)庫數(shù)據(jù),封裝所有的數(shù)據(jù)處理操作。
(3)建立邏輯處理控件BusinessLayer,此控件用來封裝所有的邏輯處理操作。
(4)關(guān)于引用。因為BusinessLayer要用到自定義的Web控件,所以必須添加引用。右鍵點擊BusinessLayer的“引用”,選擇.NET的“AspNetPager.dll”雙擊選中即可。
3.2 關(guān)鍵實現(xiàn)技術(shù)
可以通過DataGrid的自定義分頁功能來減少資源使用和提高效率。DataGrid自帶的分頁功能實現(xiàn)起來雖然比較方便,但是效率不高,每次都需要讀取所有頁(整個記錄集),而加載的只是其中一頁,造成了資源的浪費,記錄多又會使效率變得很低。下面通過DataGrid的自定義分頁功能來減少資源使用和提高效率。前臺的主要代碼如下:
界面層添加分頁的導航條:<webdiyer:AspNetPager ID="pager" runat="server" PageSize="7" NumericButtonCount="8" ShowCustomInfoSection="left" PagingButtonSpacing="0" ShowInputBox="always" CssClass="mypager" HorizontalAlign="right" OnPageChanged="ChangePage" SubmitButtonText="轉(zhuǎn)到" NumericButtonTextFormatString="[{0}]" alwaysshow="true"></webdiyer:AspNetPager>
在邏輯層,添加如下的引用:
cmd = new SqlCommand("GetCiAll", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@pageindex",1);
cmd.Parameters.Add("@pagesize",1);
cmd.Parameters.Add("@docount",true);
pager.RecordCount = (int)cmd.ExecuteScalar(); BindData();
其中的GetCiAll為一個寫于數(shù)據(jù)庫上的存儲過程。
Web應用程序是顯示數(shù)據(jù)庫中數(shù)據(jù)的一個非常好的方法,可以把業(yè)務復雜并有訪問規(guī)則和安全規(guī)則的數(shù)據(jù)庫數(shù)據(jù)以一種簡單、直觀的方式向用戶提供查詢和更新的功能。用戶判斷數(shù)據(jù)庫應用程序很常用的一個標準就是處理數(shù)據(jù)的快慢。許多Web頁面都向用戶提供了多種可搜索的列表顯示來有效地定位記錄的位置,一個比較簡單而且常用的例子就是在線圖書查詢系統(tǒng),它允許用戶按作者、書名或者主題來檢索圖書信息。
ASP.NET提供了一個DataGrid控件,可以比ASP更方便地創(chuàng)建數(shù)據(jù)列表,DataGrid控件除了內(nèi)建的數(shù)據(jù)表現(xiàn)和方法之外,還允許用戶自己定義表現(xiàn)形式。分頁技術(shù)為用戶可管理的數(shù)據(jù)查找提供方便。DataGrid內(nèi)建的分頁技術(shù)很容易實現(xiàn),但數(shù)據(jù)量很大時,它的方便性是以犧牲性能為代價的。下面就看看如何通過自定義的分頁方法來快速處理大量數(shù)據(jù)的結(jié)果集。這里討論的方法比DataGrid的默認分頁方法更加快速和有效,這是因為每次請求不需要把全部的數(shù)據(jù)結(jié)果發(fā)送到Web服務器,相反,它只需要發(fā)送每個頁面需要的那些數(shù)據(jù)集。例如:一個用戶只要求100個頁面中每頁顯示25條記錄的第4頁的結(jié)果集,服務器只需要發(fā)送第75~100行的數(shù)據(jù)即可,而不是1~100行的完全數(shù)據(jù)。默認的傳送方式如圖2所示。
從圖2中可以看出,DataGrid的內(nèi)建分頁方法效率不高,每次請求都必須把整個查詢結(jié)果發(fā)送給Web服務器,Web服務器再把數(shù)據(jù)分成相應的頁面。利用DataGrid的內(nèi)建的分頁方法盡管很簡單,但是由于Web應用的無序性特征,一個用戶每次從一個頁面轉(zhuǎn)向另外一個頁面時,DataGrid對象都被銷毀并重新創(chuàng)建,這就意味著數(shù)據(jù)庫服務器每次都必須發(fā)送全部的結(jié)果集。
自定義的分頁方法只返回所要檢索的那些結(jié)果集,如圖3所示。
從圖3可以看到,數(shù)據(jù)庫每次只需要返回所要顯示的數(shù)據(jù)記錄。利用AspNetPager分頁導航,再自定義分頁存儲過程,提高分頁效率。
一般來說使用存儲過程有以下優(yōu)點:
(1)減少網(wǎng)絡數(shù)據(jù)傳遞流量,提高T-SQL語句執(zhí)行速度。用戶在使用到SQL語句時,如用戶進行數(shù)據(jù)查詢,數(shù)據(jù)插入時首先要把相關(guān)的SQL語句發(fā)送到SqlServer,在進行比較復雜的查詢等操作時就要頻繁向服務器發(fā)送這樣的SQL語句,浪費網(wǎng)絡帶寬,效率低下且加重服務器的負擔。而存儲過程經(jīng)過編譯存放在服務器上,使用存儲過程要比單條SQL語句快得多。
(2)適合模塊化編程,提高系統(tǒng)的通用性,存儲過程在被創(chuàng)建以后,可以在程序中被多次調(diào)用而不用重復編寫SQL語句。
(3)可以更有效地管理用戶操作數(shù)據(jù)庫的權(quán)限,通過SqlServer分配權(quán)限更安全。
部分代碼如下:
CREATE procedure GetCiAll
( @pagesize int,
@pageindex int,
@docount bit )
as
set nocount on
if(@docount=1)
select count(id) from mingci
else
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from mingci
select*from mingci O,@indextable t where O.id=t.nid
and t.id>@PageLowerBound and t.id<=
@PageUpper
Bound order by t.id
end
set nocount off
GO
對來華學習漢語的華文教育專業(yè)本科一年級的學生進行實驗,實驗總抽樣人數(shù)為20人,其中平時學習和測試中使用本系統(tǒng)的有10人,應用傳統(tǒng)方式學習的有10人。經(jīng)過一個學期的學習,學期末進行測試,結(jié)果表明借助于輔助系統(tǒng)學習和測試的同學的計算機技能成績普遍好于未使用該系統(tǒng)的學生。
本文通過分析.NET技術(shù)的特點以及華文學生計算機技能的學習和測試的現(xiàn)狀, 發(fā)現(xiàn).NET技術(shù)非常適合于華文計算機技能輔助系統(tǒng)的建設。通過使用.NET自定義分頁技術(shù)應用于華文學生計算機技能學習輔助系統(tǒng)減少了客戶端和服務器的數(shù)據(jù)交互量,減少了帶寬的占用。隨著中國華文教育及世界華文教育的發(fā)展,計算機輔助系統(tǒng)將成為課程教學和測試的主要輔助工具,.NET技術(shù)和學科的結(jié)合將更加緊密。
參考文獻
[1] 中國華文教育網(wǎng).http://www.hwjyw.com.
[2] 何克抗,許駿. IT 技能測評自動化[M].北京:科學出版社, 2005.
[3] GENEEN S. Computer assisted-assessment: staff viewpoints on its Introduction Within a New University [J]. Innovation & Teching International,2002,39(2):145 - 153.
[4] 陳冠軍. 征服ASP. NET 2. 0 AJAX-開發(fā)技術(shù)詳解[M]. 北京:人民郵電出版社,2007.
[5] 馬軍.精通ASP.NET 2.0 網(wǎng)絡應用系統(tǒng)開發(fā)[M]. 北京:人民郵電出版社,2006.