《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 華文學(xué)生計(jì)算機(jī)技能輔助系統(tǒng)中.NET程序技術(shù)
華文學(xué)生計(jì)算機(jī)技能輔助系統(tǒng)中.NET程序技術(shù)
來(lái)源:微型機(jī)與應(yīng)用2011年第16期
張彥軍
(暨南大學(xué), 廣東 廣州510632)
摘要: 限于華文學(xué)生的漢語(yǔ)能力,在其進(jìn)行計(jì)算機(jī)技能課程的學(xué)習(xí)和測(cè)試過(guò)程中,最需要注意的問(wèn)題就是其對(duì)計(jì)算機(jī)技能的學(xué)習(xí)和測(cè)試能突破語(yǔ)言關(guān)。用ASP.NET基于組件的三層框架的開發(fā)技術(shù)構(gòu)建了輔助系統(tǒng)來(lái)實(shí)現(xiàn)該功能,并提出和實(shí)現(xiàn)了Web中的自定義分頁(yè)功能,有效節(jié)省了客戶機(jī)資源和網(wǎng)絡(luò)帶寬,做到了“按需索取”,相對(duì)于傳統(tǒng)Web應(yīng)用,減少了客戶端與服務(wù)器的數(shù)據(jù)交互量。設(shè)計(jì)應(yīng)用于學(xué)生的課程學(xué)習(xí)和測(cè)試中,取得了很好的效果。
Abstract:
Key words :

摘 要: 限于華文學(xué)生的漢語(yǔ)能力,在其進(jìn)行計(jì)算機(jī)技能課程的學(xué)習(xí)和測(cè)試過(guò)程中,最需要注意的問(wèn)題就是其對(duì)計(jì)算機(jī)技能的學(xué)習(xí)和測(cè)試能突破語(yǔ)言關(guān)。用ASP.NET基于組件的三層框架的開發(fā)技術(shù)構(gòu)建了輔助系統(tǒng)來(lái)實(shí)現(xiàn)該功能,并提出和實(shí)現(xiàn)了Web中的自定義分頁(yè)功能,有效節(jié)省了客戶機(jī)資源和網(wǎng)絡(luò)帶寬,做到了“按需索取”,相對(duì)于傳統(tǒng)Web應(yīng)用,減少了客戶端與服務(wù)器的數(shù)據(jù)交互量。設(shè)計(jì)應(yīng)用于學(xué)生的課程學(xué)習(xí)和測(cè)試中,取得了很好的效果。
關(guān)鍵詞: 華文教育計(jì)算機(jī)基本操作技能; .NET; 分頁(yè)

 華文教育首先是指為掌握華文而興辦的教育。在具體語(yǔ)境中,它的涵義可能有如下變化:(1)著眼于辦學(xué)主體,將它理解為華僑華人在居住國(guó)與入籍國(guó)興辦的教育,略近于華僑教育、華人教育;(2)著眼于教育對(duì)象,將它理解為面向海外華僑華人子女的教育,與華人華僑青少年教育相通;(3)著眼于教學(xué)手段,將它解釋為運(yùn)用華文進(jìn)行的教育,其科目不限于語(yǔ)言文字;(4)強(qiáng)調(diào)教育的社會(huì)功能,將掌握華文視為學(xué)習(xí)、繼承與發(fā)揚(yáng)中華文化優(yōu)良傳統(tǒng)的途徑,由此將華文教育的外延由語(yǔ)言文字領(lǐng)域擴(kuò)展到文化領(lǐng)域[1]。
1 華文學(xué)生計(jì)算機(jī)基本操作技能現(xiàn)狀
    華文學(xué)生計(jì)算機(jī)基本操作技能是計(jì)算機(jī)知識(shí)的入門課程,內(nèi)容著重于計(jì)算機(jī)的基礎(chǔ)知識(shí)、基本概念和基本操作技能,并兼顧實(shí)用軟件的使用和計(jì)算機(jī)應(yīng)用領(lǐng)域的前沿知識(shí),為學(xué)生熟練使用計(jì)算機(jī)和進(jìn)一步學(xué)習(xí)計(jì)算機(jī)相關(guān)知識(shí)打下基礎(chǔ)。其教材的編寫和國(guó)內(nèi)學(xué)生計(jì)算機(jī)操作技能的教材基本一樣,但對(duì)于教材的描述語(yǔ)言是經(jīng)過(guò)漢語(yǔ)學(xué)者遴選的。通過(guò)該課程的學(xué)習(xí),使學(xué)生在基本掌握計(jì)算機(jī)基礎(chǔ)知識(shí)的基礎(chǔ)上理解一些計(jì)算機(jī)的常用術(shù)語(yǔ)和基本概念;學(xué)生能較熟練地使用Windows 2000操作平臺(tái),熟練掌握文字處理軟件Word、表格處理軟件Excel 及演示文稿制作軟件PowerPoint的基本操作,掌握Internet和瀏覽器以及網(wǎng)頁(yè)制作軟件FrontPage的基本使用方法,掌握計(jì)算機(jī)信息安全等。
    (1)在平時(shí)的課堂授課中:由于計(jì)算機(jī)技能課都是中文授課,這就是一種華語(yǔ)教學(xué)上的計(jì)算機(jī)技能培訓(xùn)。學(xué)生有時(shí)可能會(huì)聽不懂老師用中文講授的課程內(nèi)容,但是老師的操作步驟是一種感性的認(rèn)識(shí),學(xué)生基本都會(huì)明白,那么當(dāng)學(xué)生閱讀教材或者進(jìn)行實(shí)訓(xùn)的時(shí)候,遇到中文表述的操作步驟時(shí),如果他們能夠借助一個(gè)輔助系統(tǒng)進(jìn)行對(duì)應(yīng)的母語(yǔ)的查找,則可解決問(wèn)題。
    (2)技能測(cè)試中的情況:華文學(xué)生的計(jì)算機(jī)測(cè)試是語(yǔ)言關(guān)基礎(chǔ)上的計(jì)算機(jī)測(cè)試,學(xué)生首先讀懂了中文題目,進(jìn)一步才是答題。根據(jù)筆者的教學(xué)和監(jiān)考評(píng)卷經(jīng)驗(yàn),很多情況下是因?yàn)閷W(xué)生中文試題題目沒有讀懂以至于他們解答不了這個(gè)題目或者解答不正確,但這并不代表他們不會(huì)這項(xiàng)計(jì)算機(jī)技能[2]。
 基于以上情況,可以按章節(jié)、按難易程度設(shè)置檢索關(guān)鍵詞和關(guān)鍵短語(yǔ),并為關(guān)鍵詞和短語(yǔ)配圖或操作視頻,建立一個(gè)這樣的系統(tǒng)供學(xué)生上課和學(xué)習(xí)時(shí)使用。該系統(tǒng)是課程范圍內(nèi)的“金山詞霸”,輔助學(xué)生學(xué)習(xí),這樣學(xué)生就不必要死記硬背華文詞語(yǔ)進(jìn)行計(jì)算機(jī)基本操作技能的學(xué)習(xí)。如果在平時(shí)的學(xué)習(xí)中學(xué)生已經(jīng)能熟練地操作該輔助系統(tǒng),測(cè)試時(shí),即使題目的中文再?gòu)?fù)雜,學(xué)生把不懂的關(guān)鍵短語(yǔ)弄明白后也可以做到基于語(yǔ)言關(guān)基礎(chǔ)上的作答了[3]。
    系統(tǒng)采用.NET三層框架的模式進(jìn)行開發(fā),在應(yīng)用系統(tǒng)進(jìn)行查詢和瀏覽時(shí),常常要顯示多頁(yè)的內(nèi)容,為了有效節(jié)省客機(jī)資源和網(wǎng)絡(luò)帶寬,做到 “按需索取”,相對(duì)傳統(tǒng)Web應(yīng)用減少了客戶端與服務(wù)器的數(shù)據(jù)交互量,采用自定義的分頁(yè)技術(shù)來(lái)改善資源利用率,在Internet或者LAN內(nèi)都能有效地節(jié)約寶貴帶寬資源,提高系統(tǒng)的響應(yīng)和查詢效率。
2 .NET分頁(yè)技術(shù)與自定義分頁(yè)技術(shù)
2.1 傳統(tǒng)分頁(yè)技術(shù)

 DataGrid 控件內(nèi)置地支持對(duì)數(shù)據(jù)源的記錄的分頁(yè)操作。例如,假定要顯示一個(gè)計(jì)算機(jī)基本技能名詞列表,其中包含幾百條記錄,但并不想一次在一個(gè)頁(yè)面中顯示所有這些記錄,而是要把這些記錄分放到多個(gè)邏輯頁(yè)面中,此時(shí)可以通過(guò)允許AllowPaging屬性并且創(chuàng)建一個(gè)子程序來(lái)修改當(dāng)前頁(yè)面,由此來(lái)允許DataGrid的分頁(yè)操作。在允許分頁(yè)操作時(shí)還有一個(gè)重要的要素,那就是只有存在DataGrid控件的數(shù)據(jù)源實(shí)現(xiàn)了ICollection接口時(shí)才能允許分頁(yè)操作。DataReader沒有實(shí)現(xiàn)這種接口,因此就必須改用DataTable。頁(yè)面內(nèi)顯示的記錄數(shù)由DataGrid控件的PageSize屬性決定,在默認(rèn)情況下,該屬性值為10,在程序清單中把它設(shè)為其他值以便每頁(yè)顯示自定義的記錄[4]。
2.2 自定義分頁(yè)技術(shù)原理
    分頁(yè)是Web應(yīng)用程序中最常用到的功能之一,也是許多ASP.NET程序員最頭疼的問(wèn)題。ASP.NET中自帶的可以分頁(yè)的DataGrid(ASP.NET 1.1)和GridView(asp.net 2.0)控件可定制性差、無(wú)法通過(guò)Url實(shí)現(xiàn)分頁(yè)功能等,而且有時(shí)需要對(duì)DataList和Repeater甚至自定義數(shù)據(jù)綁定控件進(jìn)行分頁(yè),手工編寫分頁(yè)代碼不但技術(shù)難度大、任務(wù)繁瑣, 而且代碼重用率極低,每次當(dāng)瀏覽新的頁(yè)面時(shí),所有的記錄都必須從數(shù)據(jù)庫(kù)檢索出來(lái)。因此,如果對(duì)有幾十萬(wàn)條記錄的數(shù)據(jù)庫(kù)分頁(yè)時(shí),這幾十萬(wàn)條記錄必須在每次移動(dòng)到新頁(yè)面時(shí)檢索到內(nèi)存中。本文將實(shí)現(xiàn)一個(gè)自定義分頁(yè)的解決方案來(lái)避開這個(gè)局限,只要檢索所需要的記錄而不是獲取要在每頁(yè)中顯示的每條記錄。
 AspNetPager分頁(yè)控件彌補(bǔ)了ASP.NET分頁(yè)的不足,提出了與眾不同的方案解決ASP.NET中分頁(yè)問(wèn)題,即將分頁(yè)導(dǎo)航功能與數(shù)據(jù)顯示功能完全獨(dú)立開來(lái),由用戶自己控制數(shù)據(jù)的獲取及顯示方式,因此可以靈活地應(yīng)用于任何需要實(shí)現(xiàn)分頁(yè)導(dǎo)航功能的地方,如為GridView、DataList以及Repeater等數(shù)據(jù)綁定控件實(shí)現(xiàn)分頁(yè)、呈現(xiàn)自定義的分頁(yè)數(shù)據(jù)以及制作圖片瀏覽程序等。AspNetPager控件和數(shù)據(jù)是獨(dú)立的,因此要分頁(yè)的數(shù)據(jù)可以來(lái)自任何數(shù)據(jù)源,如SQL Server、Oracle、Access、mysql、DB2等數(shù)據(jù)庫(kù)以及XML文件、內(nèi)存數(shù)據(jù)或緩存中的數(shù)據(jù)、文件系統(tǒng)等[5]。
3 .NET自定義分頁(yè)技術(shù)
3.1 系統(tǒng)開發(fā)背景

    ASP.NET可以使用.NET平臺(tái)快速方便地部署三層架構(gòu)。ASP.NET革命性的變化是在網(wǎng)頁(yè)中也使用基于事件的處理,可以指定處理的后臺(tái)代碼文件,可以使用C#、VB、J#作為后臺(tái)代碼的語(yǔ)言。.NET中可以方便地實(shí)現(xiàn)組件的裝配,后臺(tái)代碼通過(guò)命名控件可以方便地使用自己定義的組件。顯示層放在ASP頁(yè)面中,數(shù)據(jù)庫(kù)操作和邏輯層用組件來(lái)實(shí)現(xiàn),這樣就很方便地實(shí)現(xiàn)了三層架構(gòu)。用ASP.NET部署三層架構(gòu)來(lái)開發(fā)華文教育下的計(jì)算機(jī)技能關(guān)鍵詞和關(guān)鍵短語(yǔ)的查詢系統(tǒng),系統(tǒng)的架構(gòu)如圖1所示。

 

 

    首先在SqlServer數(shù)據(jù)庫(kù)中建一個(gè)數(shù)據(jù)庫(kù)CompWord,在CompWord中建表TB_CompWord,如表1所示。

    (1)打開VS.NET,在新建項(xiàng)目中選擇Visal C#項(xiàng)目,模板選擇ASP.NET Web應(yīng)用程序,為本方案命名為CompWord。
 (2)建立數(shù)據(jù)庫(kù)訪問(wèn)控件DBLayer,此控件用來(lái)調(diào)用數(shù)據(jù)庫(kù)數(shù)據(jù),封裝所有的數(shù)據(jù)處理操作。
 (3)建立邏輯處理控件BusinessLayer,此控件用來(lái)封裝所有的邏輯處理操作。
 (4)關(guān)于引用。因?yàn)锽usinessLayer要用到自定義的Web控件,所以必須添加引用。右鍵點(diǎn)擊BusinessLayer的“引用”,選擇.NET的“AspNetPager.dll”雙擊選中即可。
3.2 關(guān)鍵實(shí)現(xiàn)技術(shù)
 可以通過(guò)DataGrid的自定義分頁(yè)功能來(lái)減少資源使用和提高效率。DataGrid自帶的分頁(yè)功能實(shí)現(xiàn)起來(lái)雖然比較方便,但是效率不高,每次都需要讀取所有頁(yè)(整個(gè)記錄集),而加載的只是其中一頁(yè),造成了資源的浪費(fèi),記錄多又會(huì)使效率變得很低。下面通過(guò)DataGrid的自定義分頁(yè)功能來(lái)減少資源使用和提高效率。前臺(tái)的主要代碼如下:
    界面層添加分頁(yè)的導(dǎo)航條:<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為一個(gè)寫于數(shù)據(jù)庫(kù)上的存儲(chǔ)過(guò)程。
    Web應(yīng)用程序是顯示數(shù)據(jù)庫(kù)中數(shù)據(jù)的一個(gè)非常好的方法,可以把業(yè)務(wù)復(fù)雜并有訪問(wèn)規(guī)則和安全規(guī)則的數(shù)據(jù)庫(kù)數(shù)據(jù)以一種簡(jiǎn)單、直觀的方式向用戶提供查詢和更新的功能。用戶判斷數(shù)據(jù)庫(kù)應(yīng)用程序很常用的一個(gè)標(biāo)準(zhǔn)就是處理數(shù)據(jù)的快慢。許多Web頁(yè)面都向用戶提供了多種可搜索的列表顯示來(lái)有效地定位記錄的位置,一個(gè)比較簡(jiǎn)單而且常用的例子就是在線圖書查詢系統(tǒng),它允許用戶按作者、書名或者主題來(lái)檢索圖書信息。
 ASP.NET提供了一個(gè)DataGrid控件,可以比ASP更方便地創(chuàng)建數(shù)據(jù)列表,DataGrid控件除了內(nèi)建的數(shù)據(jù)表現(xiàn)和方法之外,還允許用戶自己定義表現(xiàn)形式。分頁(yè)技術(shù)為用戶可管理的數(shù)據(jù)查找提供方便。DataGrid內(nèi)建的分頁(yè)技術(shù)很容易實(shí)現(xiàn),但數(shù)據(jù)量很大時(shí),它的方便性是以犧牲性能為代價(jià)的。下面就看看如何通過(guò)自定義的分頁(yè)方法來(lái)快速處理大量數(shù)據(jù)的結(jié)果集。這里討論的方法比DataGrid的默認(rèn)分頁(yè)方法更加快速和有效,這是因?yàn)槊看握?qǐng)求不需要把全部的數(shù)據(jù)結(jié)果發(fā)送到Web服務(wù)器,相反,它只需要發(fā)送每個(gè)頁(yè)面需要的那些數(shù)據(jù)集。例如:一個(gè)用戶只要求100個(gè)頁(yè)面中每頁(yè)顯示25條記錄的第4頁(yè)的結(jié)果集,服務(wù)器只需要發(fā)送第75~100行的數(shù)據(jù)即可,而不是1~100行的完全數(shù)據(jù)。默認(rèn)的傳送方式如圖2所示。

    從圖2中可以看出,DataGrid的內(nèi)建分頁(yè)方法效率不高,每次請(qǐng)求都必須把整個(gè)查詢結(jié)果發(fā)送給Web服務(wù)器,Web服務(wù)器再把數(shù)據(jù)分成相應(yīng)的頁(yè)面。利用DataGrid的內(nèi)建的分頁(yè)方法盡管很簡(jiǎn)單,但是由于Web應(yīng)用的無(wú)序性特征,一個(gè)用戶每次從一個(gè)頁(yè)面轉(zhuǎn)向另外一個(gè)頁(yè)面時(shí),DataGrid對(duì)象都被銷毀并重新創(chuàng)建,這就意味著數(shù)據(jù)庫(kù)服務(wù)器每次都必須發(fā)送全部的結(jié)果集。
    自定義的分頁(yè)方法只返回所要檢索的那些結(jié)果集,如圖3所示。

    從圖3可以看到,數(shù)據(jù)庫(kù)每次只需要返回所要顯示的數(shù)據(jù)記錄。利用AspNetPager分頁(yè)導(dǎo)航,再自定義分頁(yè)存儲(chǔ)過(guò)程,提高分頁(yè)效率。
 一般來(lái)說(shuō)使用存儲(chǔ)過(guò)程有以下優(yōu)點(diǎn):
    (1)減少網(wǎng)絡(luò)數(shù)據(jù)傳遞流量,提高T-SQL語(yǔ)句執(zhí)行速度。用戶在使用到SQL語(yǔ)句時(shí),如用戶進(jìn)行數(shù)據(jù)查詢,數(shù)據(jù)插入時(shí)首先要把相關(guān)的SQL語(yǔ)句發(fā)送到SqlServer,在進(jìn)行比較復(fù)雜的查詢等操作時(shí)就要頻繁向服務(wù)器發(fā)送這樣的SQL語(yǔ)句,浪費(fèi)網(wǎng)絡(luò)帶寬,效率低下且加重服務(wù)器的負(fù)擔(dān)。而存儲(chǔ)過(guò)程經(jīng)過(guò)編譯存放在服務(wù)器上,使用存儲(chǔ)過(guò)程要比單條SQL語(yǔ)句快得多。
    (2)適合模塊化編程,提高系統(tǒng)的通用性,存儲(chǔ)過(guò)程在被創(chuàng)建以后,可以在程序中被多次調(diào)用而不用重復(fù)編寫SQL語(yǔ)句。
    (3)可以更有效地管理用戶操作數(shù)據(jù)庫(kù)的權(quán)限,通過(guò)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
 對(duì)來(lái)華學(xué)習(xí)漢語(yǔ)的華文教育專業(yè)本科一年級(jí)的學(xué)生進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)總抽樣人數(shù)為20人,其中平時(shí)學(xué)習(xí)和測(cè)試中使用本系統(tǒng)的有10人,應(yīng)用傳統(tǒng)方式學(xué)習(xí)的有10人。經(jīng)過(guò)一個(gè)學(xué)期的學(xué)習(xí),學(xué)期末進(jìn)行測(cè)試,結(jié)果表明借助于輔助系統(tǒng)學(xué)習(xí)和測(cè)試的同學(xué)的計(jì)算機(jī)技能成績(jī)普遍好于未使用該系統(tǒng)的學(xué)生。
 本文通過(guò)分析.NET技術(shù)的特點(diǎn)以及華文學(xué)生計(jì)算機(jī)技能的學(xué)習(xí)和測(cè)試的現(xiàn)狀, 發(fā)現(xiàn).NET技術(shù)非常適合于華文計(jì)算機(jī)技能輔助系統(tǒng)的建設(shè)。通過(guò)使用.NET自定義分頁(yè)技術(shù)應(yīng)用于華文學(xué)生計(jì)算機(jī)技能學(xué)習(xí)輔助系統(tǒng)減少了客戶端和服務(wù)器的數(shù)據(jù)交互量,減少了帶寬的占用。隨著中國(guó)華文教育及世界華文教育的發(fā)展,計(jì)算機(jī)輔助系統(tǒng)將成為課程教學(xué)和測(cè)試的主要輔助工具,.NET技術(shù)和學(xué)科的結(jié)合將更加緊密。
參考文獻(xiàn)
[1] 中國(guó)華文教育網(wǎng).http://www.hwjyw.com.
[2] 何克抗,許駿. IT 技能測(cè)評(píng)自動(dòng)化[M].北京:科學(xué)出版社, 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)絡(luò)應(yīng)用系統(tǒng)開發(fā)[M]. 北京:人民郵電出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。