一 设计概述
其实整个设计为学校服务,包括
A 学生的自主个性化学习系统
将智能理论引入教学系统,模仿教师的教学思想有选择地提供路径供学生学习,并且
实现学生与教师的双向选择。教材和教程的安排是提高教学质量、激发学习兴趣的关键。系统分为以下几个部分:
1 学生自主学习:系统根据学生的学历,生成不同的学习章节安排,分为强制学习和自由学习两种方式。强制学习是指学生在浏览课程内容的时候,必须按照章节的指定顺序从头开始学习,在学习完一章后通过自我检测后再进入到下一章的学习;而自由学习方式中,学生可以按任意的顺序浏览课程的内容。
2 事件提醒功能:
该模块可以让学生在日历中设置自己的事件提醒,学习计划定制,还可以随时记录自己感兴趣的内容,做学习笔记;可以做书签,标记所感兴趣的内容,以后再查看。学生可以通过系统提供的webmail电子邮件功能向教师发送邮件,提问问题。
B 学习答疑系统
答疑系统分为实时答疑系统和非实时答疑系统。
非实时答疑系统设计为一个论坛,学生在学习中遇到问题的时候,可以提出问题,可以上传问题的附件。老师可以很方便地解答学生的各种问题,并反馈给学生;学生可以对教师解答的问题予以投票评价,
实时答疑系统是一个聊天室,教师和学生可以在指定的时间内在聊天室中进行问题交流。
C 在线自我测试系统
学生在学习完一定课程后,将可以进行测试,系统提供自动组卷和手动组卷两种方式供教师进行组卷。学生在进行自我测试后可以立即查看成绩答案,可以知道自己在某个知识领域方面的掌握情况,教师可以对学生的测试成绩进行简单的统计,以图表形式展示。
D 教案管理系统
教师可以上传教案,教案可以是纯文本输入的方式,可以是已经做好的ppt,还可以利用系统本身的简单网页编辑器进行教案的编辑,修改,可以上传到服务器指定位置。
E 课件管理系统
教师可以将自己制作的优秀课件上传到课件资源库,供学生下载,此外,该系统通过XML WebService的方式,将该系统与其他不同平台的系统相连;教师可以在查询教学资源时,可以将请求发送到不同站点的系统中,不同的系统通过xml的方式返回结果,从而缩小了搜索的范围,大大方便了教学资源的网上共享。
其实,我们当初为了学习JAVA/JSP,所以多提出了很多要实现的东西。而在毕业设计完成后,也惊奇的发现,我们这个系统里,可谓用到了很多技术点,如jsp,javabean,servlet,asp.net,xml,webservice,第三方组件,mobile开发,而至于什么关于JAVA/JSP的技术应用也汇集了,
比如什么树型结构,
文件上传
,聊天室,论坛,JSP的图形,日历,JAVAMAIL。。。,唯一实现失败的是利用JAVA搞语音聊天室失败了。
二 基于
XML WebSerivce的课件搜索系统
其实,现在看来,当初搞这个系统,根本只是纯粹应老师要求,加上自己爱好,想研究WEBSERVICE的,实际上至少目前为止,还不会这样使用。下面就详细讲下,摘录原论文的部分。我当初的目的时,通过JAVA和。NET的WEBSERVICE互相调用,了解其实现方法,以体现WEBSERVICE的跨平台特性,可惜现在看回来,当初我的实现方法出现很多错漏和明显的问题,但毕竟还是初步实现了,嘿嘿,所以打算原始呈现给大家。
4.1.1 课件资源库的概况<o:p></o:p>
在远程教育系统中,教师可以在用
Powerpoint,Flash,Authorware等软件在制作课件后予以上传到服务器,以供下载使用。传统的远程教育站点课件资源库就是采用简单的“上传――搜索-下载”的模式实现的。但随着Internet技术的不断发展,互联网上的优秀课件资源变得越来越丰富,教师在进行教学备课,学生在学习中,不再单单局限在某一站点上搜索课件教学资源,因为单一站点上的课件资源不能满足要求。教师或者学生往往要通过其他搜索引擎(如google,yahoo等),但往往搜索出来的结果可以说是海量的,要再次在其中逐一查找,浪费了时间,而且现在的搜索引擎搜索出来的结果,很多都不是十分准确的,包含了其他无用的信息。
4.1.2
新系统解决方案概述
在新系统的解决方案中,本人提出了使用XML WebService技术构建共享课件资源库。就是使用当今最新的XML WebService技术,从而可以使即使是不同平台(unix/liux,Widows nt/server平台),使用不同语言(asp.net,jsp)构建的远程教育网站站点之间,能够互相访问对方的课件资源库的资源。<o:p></o:p>
其中,在本人的设计中,使用
C#,asp.net分别模拟构建了另外两个远程教育网站的课件资源库部分,分别为网站A,网站B,它们分别提供了其自身的课件资源库的WebService接口,接收来自其他网站发送的查询请求,而称这次我们毕业设计小组设计的JSP网站为本地网站。系统的整个工作流程概述如下:
(1) 当用户要搜索课件时,首先将查询的请求格式化为SQL语句。之后将请求发送到
WebService
课件代理中心(
UDDI
)
(2)
在
UDDI
注册中心中,注册了
A
,
B
两个网站的
WebService
的有关信息,当收到本地网站的请求后,
UDDI
中心调用
A
,
B
两个网站的
Webservice,
将用户的请求分别发送到它们的
WebService
。
(3)A
,
B
网站的
WebService
分别收到了用户的请求,
并调用自己的搜索方法,再将请求发送到各自的数据库
A,B。<o:p></o:p>
(4)
A,B
网站分别将数据库
搜索出来的结果以
XML的形式返回到UDDI注册中心的课件WebService课件代理。而UDDI中心的课件代理则将A,B网站返回的XML加以整理,再返回给本地网站。
(5) 本地网站将返回的XML加以解释,提取结点的内容,再以一定的样式显示在用户面前。<o:p></o:p>
上面的流程用结构图表示如下:
<o:p></o:p>
<o:p></o:p>
<o:p></o:p> 由于这次我们小组设计的系统是使用 Java技术构造的,通过WebService,可以成功地与其他两个.net架构的远程教育课件库系统相连。这样一来,当学生或教师要搜索课件的时候,搜索到的就不单单是一个网站的课件资源,而是有可能搜索到若干个同类型网站的课件资源,而搜索出来的结果是十分有效的,没有冗余的信息,十分方便并且有效。而且这种模式可以有效地推广到其他网站的经营模式上去。<o:p></o:p>
<o:p></o:p>
4.2
.NET和Java 的WebService概述
(1) 微软.NET简介
2000年6月22日,微软正式推出了其.net战略,2002年,VS.NET 2002 正式推出。<o:p></o:p>
.NET的最终目的就是让用户在任何地方、任何时间,以及利用任何设备都能访问他们所需要的信息、文件和程序。而用户不需要知道这些东西存在什么地方,甚至连如何获得等具体细节都不知道。他们只需发出请求,然后只管接收就是了,而所有后台的复杂性是完全屏蔽起来的。<o:p></o:p>
(2) .NET 对WEBSERVICE的支持
.NET
平台内建了对
WebService
的支持,包括
WebService
的构建和使用。
与其它开发平台不同,使用
.NET
平台,不需要其他的工具或者
SDK
就可以完成
WebService
的开发。
.NET Framework
本身就全面支持
WebService
,包括服务器端的请求处理器和对客户端发送和接受
SOAP
消息的支持。
(3) Java 对WebService的支持
由于这次毕业设计我研究的部分设计到JAVA与.net上平台上的WebService的互连,因此我对JAVA中对WEBSERVICE的支持进行了研究。
然而,在设计中,我发现如
IBM,Sun,Bea,Oracle
,
Apache
等公司或组织都纷纷提出了基于
WebService
的开发标准和工具,而当中有的是很复杂的。有的虽然功能强大,但在和
.NET
平台上的
WebService
的互操作性上不强。最后,我选用了
apache
组织免费的开源项目
Axis
。
Axis(Apache extensible Interaction System)
的前身是著名开源组织
Apache
开发的
Apache Soap
的最新一代产品,目前最新的版本是
1.1
。
Axis
有以下特点:
1 使用
SAX
解释器对
XML
进行解释,速度比用
DOM
解释快,灵活性高。
2
能自动对原有的
Java
文件生成对应的
wsdl
文件。
3
能方便地对发布的
WebService
部署。
4
具有十分良好的互操作性,能与其他语言编写的
WEB
服务进行相互操作调用。
4.3
.NET
端
WebService
的设计
4.3.1 .NET
端的
websevice
首先,我先讲下
.NET
端的
WebService
设计。在设计中,
A
网站采用的是
ms sql server 2000
数据库,而
B
网站采用
access 2000
设计。对
A,B
网站的数据库的设计如下,分别命名为
kejiana,kejianb
。
其数字字典见附录的表
4。
建立数
据库后,就可以建立
.Net
端的
Webservice
,下面以网站A为例介绍(网站B的构建类似):
主要编程思想:
1)
引入
.Net
中的有关
WebService
的类库,如
System.Web.Service
等;
2)
根据传入的
sql
语句,查询
Kejiana
的数据库,返回有关的查询结果。
3)
对查询的结果进行
xml
格式化,转化为统一的
xml
。
其中,在
asp.net
中,对数据库的操作的结果是以
dataset
来表示的。
DataSet
是在
ADO.NET
中的一个重要组成部分,
ADO.NET让程序开发人员可以在下一代的Web上进行数据存取更为简单,并且更有效率。ADO.NET可以达成这些目的的最重要的两个改进为:Disconnected DataSet(离线数据集)和XML支持。简单来说,DataSet对象就是RecordSet的集合,ADO.NET Framework会提供所有的RecordSet数据库特性,例如排序、分页、检视表、关联性、索引,和主键等,它是一种简单的,驻留在内存中的数据存储方式,实际上它是以XML格式存储的,所以无论是哪种平台或者是哪种语言,都可以使用DATASET。在设计中,我充分利用了dataset的这个功能,先将数据库查询结果转化为dataset,然后再整理为XML。主要代码如下:
[WebMethod]<o:p></o:p>
public XmlDataDocument Query( string querystring)<o:p></o:p>
{<o:p></o:p>
string str;<o:p></o:p>
TextWriter writer = new StringWriter();<o:p></o:p>
XmlDataDocument doc= new XmlDataDocument();<o:p></o:p>
string sql="select * from kejiana"+" where "+querystring;<o:p></o:p>
cnn.Open();<o:p></o:p>
SqlDataAdapter da= new SqlDataAdapter(sql,cnn);<o:p></o:p>
DataSet ds = new DataSet();<o:p></o:p>
da.Fill(ds,"kejian");// 以上代码将查询的结果放到 dataset 中去。 <o:p></o:p>
if (ds.Tables["kejian"].Rows.Count==0) // 如果数据集为空 <o:p></o:p>
{<o:p></o:p>
doc1= new XmlDataDocument(ds);<o:p></o:p>
str="<root>"+doc1.InnerXml+"</root>";<o:p></o:p>
doc1.LoadXml(str);<o:p></o:p>
return doc1;<o:p></o:p>
}<o:p></o:p>
else // 如果结果不为空 <o:p></o:p>
{<o:p></o:p>
doc= new XmlDataDocument(ds);<o:p></o:p>
XmlNode root1=doc.DocumentElement;<o:p></o:p>
XmlNodeList roots=root1.SelectNodes("kejian");<o:p></o:p>
foreach (XmlNode roota in roots) // 为 XML 增加结点 fromnet<o:p></o:p>
{<o:p></o:p>
XmlElement fromnet=doc.CreateElement("fromnet");<o:p></o:p>
XmlElement link=doc.CreateElement("A");<o:p></o:p>
link.SetAttribute("HREF","http://localhost/kejiana/");<o:p></o:p>
fromnet.AppendChild(link);<o:p></o:p>
roota.AppendChild(fromnet);<o:p></o:p>
}<o:p></o:p>
return doc;<o:p></o:p>
}<o:p></o:p>
}
在上面的代码中,在查询出数据库的内容之后,首先要判断数据集的内容是否为空,如果数据集的内容为空,则返回空的
XML。如果数据集不为空,则首先将数据集转化为xmldatadocument,xmldatadocument是xmldocument的子类,它的功能是实现XML和DATASET的转化。同时,由于最后要告诉用户,课件是来自于哪一个网站的,所以要在生成的xml中加入一个结点fromnet,表示搜索出来的结点来自于哪一个网站。
编译该WebService,可以看到如下界面:
<v:shapetype id="_x0000_t75"><v:stroke></v:stroke><v:formulas><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f></v:formulas><v:path></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
上面的界面中,就是
WebService的初始界面,其中querystring就是要输入的参数,该参数实际上是来自外部系统的。比如,在这里,输入sql语句的一部分kname like
‘
%vb%
’
,表示要查询的是课件名中包含VB字样的所有记录,在提交请求后,WebService便会调用数据库查询,将查询的结果以XML的形式返回。<o:p></o:p>
<o:p></o:p>