基于WWW的协同式CAI软件的Java实现
摘 要 本文介绍一个用j++实现的基于web环境的协同式计算机辅助教学软件的结构,并给出了具体实现中的一些关键技术。
关键词 j++,web,远程教学,socket通信
1 引言
随着internet网络技术的发展,远程多媒体教学成为当前的研究热点。基于internet的/yingyongwengao/" target="_blank" title="">应用模式作为一种方便、迅速的共享信息手段,深受用户欢迎。用户通过访问超文本页面浏览多媒体教学内容,通过点击超链去进行自由的探索式学习。但仅基于超文本页面的教学存在很多缺点,如:学生容易在超链中迷失方向;教师不能对学生的学习行为进行控制,教学过程缺乏有序性;教师与学生之间不能进行交流,教师对学生的学习效果缺乏检查手段等。本文介绍的计算机辅助教学软件克服了以上缺点,整个软件采用j++编写实现,由服务器部分、学生部分、教师教学部分、课件维护部分共四部分组成,该软件实际上为一个教学框架系统,所有教学材料由教师安排,教师和学生通过访问各自的url地址进入角色。学生在教师的现场控制进行学习、讨论、练习和测试。
2 系统的功能
2.1 超文本页面学习
教师对学生的学习页面进行统一向导。教师选择学习页面,将此页面的url地址传送给学生,引导学生到该web页面进行学习,如此增加了学习的针对性,满足有组织、有控制的教学需要。
2.2 实时讨论
实时讨论是协同式教学软件的一个基本特征。在讨论期间,教师可提问学生,安排作业等,学生则可将自己的学习体会及疑问告诉教师。学生之间可以就学习中的问题进行实时交谈。系统提供了两种工具以支持网上实时讨论:一种是纯文字交谈,如果发言者未选择用户,则为公开发言,否则为私下发言,只送往选定用户,在各用户的讨论面板上有一个文本域显示每条发言的发言者及发言内容。另一种是共享白板,教师和学生都可往白板上写内容,白板内容所有用户保持一致,共享白板可支持线、圆、矩形、文字等基本绘图操作,并可选择线条颜色。
2.3 交互式做练习
教师发出练习的指示消息,则学生将自动进入练习界面,系统自动从试题库中调与学习问题有关的试题供学生操练,在操练时,系统将学生的解答与标准答案对比看是否答对,并弹出对话框给学生反馈鼓励信息。交互式练习有助于学生加深对教学内容的理解。
2.4 网上测试
测试是教学过程中不可缺少的教学环节,通过测试,教师可对学生的学习进行考核,并借此了解学生的学习效果,为改进教学提供依据。学生则通过测试可了解自己对内容的掌握情况,增加学习兴趣。目前,每次测试试卷是由教师从试题库选题组卷并安排分数。测试有时间限制。
3 系统的总体设计
从系统要完成的功能看,有两类工作方式:一类是客户/服务器方式(如学生做题),客户方发出访问申请,服务方给出响应。客户是动作的发起者,何时发出申请由客户方决定,客户方发出申请后立即可从socket通道去取服务方的结果。服务器方必须始终处于监听等待状态。
图1 系统的整体设计结构
另一类是网上的协作应用(如实时讨论等),在这种方式中,任何一方都可能成为消息的发送方,而另一方则成为消息的接收方。发送方的动作由用户界面的各类事件驱动引发,其时间性是偶然的,接收方必须时刻处于接收监听状态。由于通信双方处于对等的位置,因此双方都要处于接收等待状态。
由于java的安全性限制,两客户浏览器间不能直接建立socket连接,要实现两浏览器间的通信必须通过web服务器上的java应用程序进行转接。综上所述,为了实现系统的功能,笔者将系统的总体设计为如图1的形式。
有关说明:
① 学生和教师分别以客户/服务器的方式与web服务器上java应用程序建立通信连接。服务器方的连接监听线程负责监听来自客户的socket连接申请。服务方要为每个连接客户建立一个消息处理线程,该线程负责接收来自相应客户的消息,对消息进行分析处理。将消息转发到其他客户。
② 学生和教师方都有一个消息接收线程负责接收来自服务方的消息。该线程通过调用用户界面对象中的方法将消息要求反映在用户界面上。为此,在设计消息接收线程类时,在其构造方法中将用户界面对象作为参数传给该类的对象,这是java中实现对象间互访的基本方法。
③ 访问试题库的过程是学生方发送相应消息到服务器,服务器方通过com组件rdo访问基于odbc的数据库,并将访问结果传回给学生。
④ 教师可对学生的学习过程进行控制,在服务器方有一个线程专门接收来自教师的控制消息并将其转发给学生,这些控制包括页面学习向导和对学习阶段的控制,这些学习阶段包括:实时讨论、做练习、测试。学生的操作界面将随教师的控制消息变化。
4 几个技术关键
4.1 数据库访问
virsual j++针对microsoft操作系统对java类库做了专门的扩展,它将java与com(组件对象模型)和支持java的internet explorer 3.0浏览器相集成,用户可在java程序中访问任何支持com的软件。对于数据库的访问,在j++中提供了dao(data access object)和rdo(remote data object)两种方法。本软件中采用rdo对象实现对odbc数据源数据的访问。由于对数据库的连接是建立在odbc的基础上,所以可以支持对各种类型的数据库访问。笔者采用的是access数据库。
通常,java applet是在一个“沙箱”中运行,可访问的资源有限,使用com服务意味着存取沙箱之外的资源,为此,ie在安全性上要作严格的检查,它将java类分为可信类和不可信类,不可信类不能使用com服务,所有不是从类路径装入的类都是不可信的,包括从网上下载的类,除非它们被封装在具有一个数字签名的.cab文件中。为了避免安全性带来的麻烦和减少客户端的odbc配置,笔者在访问试题库的部分中采用了由服务器方java应用程序访问数据库的办法,无安全性限制。浏览器方applet程序通过与服务器方应用程序通信来传递访问请求和结果。
整个系统的数据库表格设计如下:
. 填空题表:含试题标识号、问题号、难度、试题内容、答案共五个字段。
. 判断题表:结构同上。
. 填空题试卷表:试题标识号、分数共两字段。
. 判断题试卷表:结构同上。
. 教学内容索引表:含章号、节号、问题号、问题名、url地址共五个字段。
. 章标题表:含章号、标题共两字段。
. 节标题表:含章号、节号、标题共三个字段。
. 成绩登记库:含姓名,成绩两字段。
从数据库设计可看出,本系统将教学内容与试题库中试题通过问题号连接起来。
4.2 数据通信处理
从总体设计可知,系统有两类应用,它们有不同的工作特点。基于客户/服务器的应用是客户方发出访问请求后,再直接在事件代码中获取服务方返回的结果;而对于协作应用则必须在所有客户方分别设立消息监听线程去获取和处理数据。从实现效率上考虑,这两类应用不宜共用一条socket通道。笔者采用了双socket通路的办法。在服务方设立两个socket监听口,分别是8883和8884,所有客户端要分别针对两个监听口建立socket连接。为避免创建过多线程,并将两类应用通道分开,系统在通道的使用上作了一些特殊处理,具体情况说明如下:
. 学生客户:使用8883口发送消息,使用8883口接收数据库访问结果,使用8884口接收所有其它消息。
. 服务器方:系统为每个客户创建一个消息接收线程,它使用8883口接收消息,并将消息通过8884口的相应输出流转发给其他客户方。考虑到只有教师能发控制消息,在服务器方,针对8884口只建立一个教师控制监听线程,它专门使用8884口接收教师控制消息,并通过8884口发送给所有学生。与学生对应的8884口的输入流未用,因此服务方也不必创建相应的监听线程。
. 教师方:使用8884口发送教学控制信息,使用8883口发送谈话、白板、查分等消息。接收消息线程使用8884口接收消息。
服务器方是通过8884口的输出流将消息转发到各个客户方,这就要求与每个用户连接对应的输出流要能实现共享访问,这是各用户间互发信息的基础。为此,在服务方通信线程类的设计上采用static数组存放输出流,这样既可实现同一类中各对象间的数据共享,又可在不同类中通过类名直接访问其数据。
由于在服务方和客户方都采用了多线程设计,系统的效率得以充分发挥。
4.3 消息设计
整个系统是建立在消息基础上的,服务器端和客户端都承担有消息处理的工作。大量基于协作应用的消息,服务方只负责转发,由客户方进行处理。每类消息由消息头和内容组成,消息头用于系统判别。在整个系统中,主要有6类消息:交谈消息;白板消息;向导消息;用户登入和退出消息;试题库访问消息其它消息(如登分、查分等)。
4.4 教学应用界面设计
4.4.1 教师界面
教师操作界面是固定的,在applet面板上含四部分内容:①用户列表;②控制面板,有页面向导、讨论、练习、测试、查成绩共五个按钮,其中,前四个按钮分别用来控制学生进入各学习阶段,学生的界面将随教师的控制变化;③交谈文本显示域和谈话录入按钮,点击“谈话录入”按钮,将弹出一个文本录入窗口供发送谈话内容;④共享白板及工具栏。
4.4.2 学生界面
学生界面是一个变动的界面,由两个帧构成,一帧用来显示java applet,另一帧显示教师发送的url页面内容。applet帧的界面由多块面板(分别是“登录面板、“讨论面板”、“练习面板”、“测试面板”)采用卡片布局构成,初始为“登录面板”,以后显示哪块面板由教师的控制消息去控制。url显示帧则按教师发送的url内容显示多媒体页面。在学生测试时,可允许学生在两类试题(是非判断题和填空题,选择题可归为填空一类)间来回切换,并可用翻动试题按钮前后浏览试题。为了提高访问试题的速度和减少服务器端的访问负担,在客户端使用向量保存对已读过的试题内容、标准答案及学生的解答等信息,并引入一个标记向量标记某序号的题是否访问过,只有没访问过的试题才去访问试题库。测试时将创建一个计时线程,时间用完或点击“答题结束”按钮,计算机将自动进行评分,将得分以对话框形式告诉用户,同时写入成绩登记表供教师查询。
4.5 url向导的实现
url输入与传送 教师点击“页面向导”按钮,系统将访问学习内容索引等表,并弹出一个对话框让教师选定要学习的章节和问题,系统将其对应的url地址通过socket通道送往所有学生客户端,同时教师端将弹出一个新浏览器显示页面以供确认。
url显示 步骤如下:①使用url类按接收字符串生成url对象;②通过applet类中的getappletcontext()方法取得小应用程序的appletcontext;③通过appletcontext接口的showdocument方法显示url内容。该方法的具体格式和参数说明如下:
void showdocument(url url , string target)
其中,target参数用于指定文件内容显示的位置,其具体值及作用见下表:
值
文件显示位置
"—self"
当前帧
"—parent"
父帧
"—top"
最顶部的帧
"—blank"
开辟新浏览器窗口显示
"帧名"
在指定的帧中显示
在教师方笔者采用了“—blank”的办法,即另开辟一个浏览器窗口显示url内容,供教师确认url内容。学生方采用了多帧的办法,在html文件中安排多帧,一帧用来显示java applet,另一帧显示教师发送的url页面内容,在html文件中规定帧的大小可调整,这样学生可调整帧边界去更方便地阅读内容。
5 结束语
本文介绍了一个基于www的协作式教学软件系统的具体实现方法。该软件实际为一个教学框架系统,具体教学内容由教师使用系统的课件维护部分去安排和设计,如此可较好地发挥教师的主观能动性。该软件作为一个实用软件在笔者的java课程的教学中得以运用。笔者拟对该系统作如下改进:①提供自动组卷功能。②引入更完善的学生模型对学生的学习水平进行评估;提供多种教学方式,使系统在有教师和无教师两种情形下都可运作,在cai的智能性上做些工作。③在多媒体支持(如:共享视像和实时语音)上作研究。
作者简介:丁振凡 副教授。主要研究方向:计算机辅助教学、计算机网络。
作者单位:华东交通大学网络中心 江西.南昌(330013)
参考文献
1.廖卫东,等编著.java程序设计实用指南.北京:机械工业出版社,1996;(10)
2.美jamie jaworski著.曹康,等译. java开发指南.北京: