《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 华文学生计算机技能辅助系统中.NET程序技术
华文学生计算机技能辅助系统中.NET程序技术
来源:微型机与应用2011年第16期
张彦军
(暨南大学, 广东 广州510632)
摘要: 限于华文学生的汉语能力,在其进行计算机技能课程的学习和测试过程中,最需要注意的问题就是其对计算机技能的学习和测试能突破语言关。用ASP.NET基于组件的三层框架的开发技术构建了辅助系统来实现该功能,并提出和实现了Web中的自定义分页功能,有效节省了客户机资源和网络带宽,做到了“按需索取”,相对于传统Web应用,减少了客户端与服务器的数据交互量。设计应用于学生的课程学习和测试中,取得了很好的效果。
Abstract:
Key words :

摘 要: 限于华文学生的汉语能力,在其进行计算机技能课程的学习和测试过程中,最需要注意的问题就是其对计算机技能的学习和测试能突破语言关。用ASP.NET基于组件的三层框架的开发技术构建了辅助系统来实现该功能,并提出和实现了Web中的自定义分页功能,有效节省了客户机资源和网络带宽,做到了“按需索取”,相对于传统Web应用,减少了客户端与服务器的数据交互量。设计应用于学生的课程学习和测试中,取得了很好的效果。
关键词: 华文教育计算机基本操作技能; .NET; 分页

 华文教育首先是指为掌握华文而兴办的教育。在具体语境中,它的涵义可能有如下变化:(1)着眼于办学主体,将它理解为华侨华人在居住国与入籍国兴办的教育,略近于华侨教育、华人教育;(2)着眼于教育对象,将它理解为面向海外华侨华人子女的教育,与华人华侨青少年教育相通;(3)着眼于教学手段,将它解释为运用华文进行的教育,其科目不限于语言文字;(4)强调教育的社会功能,将掌握华文视为学习、继承与发扬中华文化优良传统的途径,由此将华文教育的外延由语言文字领域扩展到文化领域[1]。
1 华文学生计算机基本操作技能现状
    华文学生计算机基本操作技能是计算机知识的入门课程,内容着重于计算机的基础知识、基本概念和基本操作技能,并兼顾实用软件的使用和计算机应用领域的前沿知识,为学生熟练使用计算机和进一步学习计算机相关知识打下基础。其教材的编写和国内学生计算机操作技能的教材基本一样,但对于教材的描述语言是经过汉语学者遴选的。通过该课程的学习,使学生在基本掌握计算机基础知识的基础上理解一些计算机的常用术语和基本概念;学生能较熟练地使用Windows 2000操作平台,熟练掌握文字处理软件Word、表格处理软件Excel 及演示文稿制作软件PowerPoint的基本操作,掌握Internet和浏览器以及网页制作软件FrontPage的基本使用方法,掌握计算机信息安全等。
    (1)在平时的课堂授课中:由于计算机技能课都是中文授课,这就是一种华语教学上的计算机技能培训。学生有时可能会听不懂老师用中文讲授的课程内容,但是老师的操作步骤是一种感性的认识,学生基本都会明白,那么当学生阅读教材或者进行实训的时候,遇到中文表述的操作步骤时,如果他们能够借助一个辅助系统进行对应的母语的查找,则可解决问题。
    (2)技能测试中的情况:华文学生的计算机测试是语言关基础上的计算机测试,学生首先读懂了中文题目,进一步才是答题。根据笔者的教学和监考评卷经验,很多情况下是因为学生中文试题题目没有读懂以至于他们解答不了这个题目或者解答不正确,但这并不代表他们不会这项计算机技能[2]。
 基于以上情况,可以按章节、按难易程度设置检索关键词和关键短语,并为关键词和短语配图或操作视频,建立一个这样的系统供学生上课和学习时使用。该系统是课程范围内的“金山词霸”,辅助学生学习,这样学生就不必要死记硬背华文词语进行计算机基本操作技能的学习。如果在平时的学习中学生已经能熟练地操作该辅助系统,测试时,即使题目的中文再复杂,学生把不懂的关键短语弄明白后也可以做到基于语言关基础上的作答了[3]。
    系统采用.NET三层框架的模式进行开发,在应用系统进行查询和浏览时,常常要显示多页的内容,为了有效节省客机资源和网络带宽,做到 “按需索取”,相对传统Web应用减少了客户端与服务器的数据交互量,采用自定义的分页技术来改善资源利用率,在Internet或者LAN内都能有效地节约宝贵带宽资源,提高系统的响应和查询效率。
2 .NET分页技术与自定义分页技术
2.1 传统分页技术

 DataGrid 控件内置地支持对数据源的记录的分页操作。例如,假定要显示一个计算机基本技能名词列表,其中包含几百条记录,但并不想一次在一个页面中显示所有这些记录,而是要把这些记录分放到多个逻辑页面中,此时可以通过允许AllowPaging属性并且创建一个子程序来修改当前页面,由此来允许DataGrid的分页操作。在允许分页操作时还有一个重要的要素,那就是只有存在DataGrid控件的数据源实现了ICollection接口时才能允许分页操作。DataReader没有实现这种接口,因此就必须改用DataTable。页面内显示的记录数由DataGrid控件的PageSize属性决定,在默认情况下,该属性值为10,在程序清单中把它设为其他值以便每页显示自定义的记录[4]。
2.2 自定义分页技术原理
    分页是Web应用程序中最常用到的功能之一,也是许多ASP.NET程序员最头疼的问题。ASP.NET中自带的可以分页的DataGrid(ASP.NET 1.1)和GridView(asp.net 2.0)控件可定制性差、无法通过Url实现分页功能等,而且有时需要对DataList和Repeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐, 而且代码重用率极低,每次当浏览新的页面时,所有的记录都必须从数据库检索出来。因此,如果对有几十万条记录的数据库分页时,这几十万条记录必须在每次移动到新页面时检索到内存中。本文将实现一个自定义分页的解决方案来避开这个局限,只要检索所需要的记录而不是获取要在每页中显示的每条记录。
 AspNetPager分页控件弥补了ASP.NET分页的不足,提出了与众不同的方案解决ASP.NET中分页问题,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等。AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等[5]。
3 .NET自定义分页技术
3.1 系统开发背景

    ASP.NET可以使用.NET平台快速方便地部署三层架构。ASP.NET革命性的变化是在网页中也使用基于事件的处理,可以指定处理的后台代码文件,可以使用C#、VB、J#作为后台代码的语言。.NET中可以方便地实现组件的装配,后台代码通过命名控件可以方便地使用自己定义的组件。显示层放在ASP页面中,数据库操作和逻辑层用组件来实现,这样就很方便地实现了三层架构。用ASP.NET部署三层架构来开发华文教育下的计算机技能关键词和关键短语的查询系统,系统的架构如图1所示。

 

 

    首先在SqlServer数据库中建一个数据库CompWord,在CompWord中建表TB_CompWord,如表1所示。

    (1)打开VS.NET,在新建项目中选择Visal C#项目,模板选择ASP.NET Web应用程序,为本方案命名为CompWord。
 (2)建立数据库访问控件DBLayer,此控件用来调用数据库数据,封装所有的数据处理操作。
 (3)建立逻辑处理控件BusinessLayer,此控件用来封装所有的逻辑处理操作。
 (4)关于引用。因为BusinessLayer要用到自定义的Web控件,所以必须添加引用。右键点击BusinessLayer的“引用”,选择.NET的“AspNetPager.dll”双击选中即可。
3.2 关键实现技术
 可以通过DataGrid的自定义分页功能来减少资源使用和提高效率。DataGrid自带的分页功能实现起来虽然比较方便,但是效率不高,每次都需要读取所有页(整个记录集),而加载的只是其中一页,造成了资源的浪费,记录多又会使效率变得很低。下面通过DataGrid的自定义分页功能来减少资源使用和提高效率。前台的主要代码如下:
    界面层添加分页的导航条:<webdiyer:AspNetPager ID="pager" runat="server" PageSize="7" NumericButtonCount="8" ShowCustomInfoSection="left" PagingButtonSpacing="0" ShowInputBox="always" CssClass="mypager" HorizontalAlign="right" OnPageChanged="ChangePage" SubmitButtonText="转到" 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为一个写于数据库上的存储过程。
    Web应用程序是显示数据库中数据的一个非常好的方法,可以把业务复杂并有访问规则和安全规则的数据库数据以一种简单、直观的方式向用户提供查询和更新的功能。用户判断数据库应用程序很常用的一个标准就是处理数据的快慢。许多Web页面都向用户提供了多种可搜索的列表显示来有效地定位记录的位置,一个比较简单而且常用的例子就是在线图书查询系统,它允许用户按作者、书名或者主题来检索图书信息。
 ASP.NET提供了一个DataGrid控件,可以比ASP更方便地创建数据列表,DataGrid控件除了内建的数据表现和方法之外,还允许用户自己定义表现形式。分页技术为用户可管理的数据查找提供方便。DataGrid内建的分页技术很容易实现,但数据量很大时,它的方便性是以牺牲性能为代价的。下面就看看如何通过自定义的分页方法来快速处理大量数据的结果集。这里讨论的方法比DataGrid的默认分页方法更加快速和有效,这是因为每次请求不需要把全部的数据结果发送到Web服务器,相反,它只需要发送每个页面需要的那些数据集。例如:一个用户只要求100个页面中每页显示25条记录的第4页的结果集,服务器只需要发送第75~100行的数据即可,而不是1~100行的完全数据。默认的传送方式如图2所示。

    从图2中可以看出,DataGrid的内建分页方法效率不高,每次请求都必须把整个查询结果发送给Web服务器,Web服务器再把数据分成相应的页面。利用DataGrid的内建的分页方法尽管很简单,但是由于Web应用的无序性特征,一个用户每次从一个页面转向另外一个页面时,DataGrid对象都被销毁并重新创建,这就意味着数据库服务器每次都必须发送全部的结果集。
    自定义的分页方法只返回所要检索的那些结果集,如图3所示。

    从图3可以看到,数据库每次只需要返回所要显示的数据记录。利用AspNetPager分页导航,再自定义分页存储过程,提高分页效率。
 一般来说使用存储过程有以下优点:
    (1)减少网络数据传递流量,提高T-SQL语句执行速度。用户在使用到SQL语句时,如用户进行数据查询,数据插入时首先要把相关的SQL语句发送到SqlServer,在进行比较复杂的查询等操作时就要频繁向服务器发送这样的SQL语句,浪费网络带宽,效率低下且加重服务器的负担。而存储过程经过编译存放在服务器上,使用存储过程要比单条SQL语句快得多。
    (2)适合模块化编程,提高系统的通用性,存储过程在被创建以后,可以在程序中被多次调用而不用重复编写SQL语句。
    (3)可以更有效地管理用户操作数据库的权限,通过SqlServer分配权限更安全。
    部分代码如下:
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
 对来华学习汉语的华文教育专业本科一年级的学生进行实验,实验总抽样人数为20人,其中平时学习和测试中使用本系统的有10人,应用传统方式学习的有10人。经过一个学期的学习,学期末进行测试,结果表明借助于辅助系统学习和测试的同学的计算机技能成绩普遍好于未使用该系统的学生。
 本文通过分析.NET技术的特点以及华文学生计算机技能的学习和测试的现状, 发现.NET技术非常适合于华文计算机技能辅助系统的建设。通过使用.NET自定义分页技术应用于华文学生计算机技能学习辅助系统减少了客户端和服务器的数据交互量,减少了带宽的占用。随着中国华文教育及世界华文教育的发展,计算机辅助系统将成为课程教学和测试的主要辅助工具,.NET技术和学科的结合将更加紧密。
参考文献
[1] 中国华文教育网.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-开发技术详解[M]. 北京:人民邮电出版社,2007.
[5] 马军.精通ASP.NET 2.0 网络应用系统开发[M]. 北京:人民邮电出版社,2006.

此内容为AET网站原创,未经授权禁止转载。