前 言
随着计算机在社会的不断普及和应用,人们的工作效率得到了极大的提高。高等院校作为社会进步的发动机,计算机早已普及并得到了积极应用。而随着近年来的计算机网络的普及,更大大方便了人们的工作和生活。利用现在已广泛普及的计算机网络实现教师与学生之间的远程交流,为教师和学生之间的交流构建一个方便的平台,就是我此次的毕业设计课题——网络远程作业处理系统。该系统利用网络,在构架了服务器后,一方面,使学生能够利用任何一台能够上网的计算机提交作业,实现和在线教师的实时交流,留言给未在线的教师;另一方面,教师同样能够利用任意的一台能上网的计算机接受服务器上学生提交的作业,和同学实时交流,留言给以班级为单位的同学。
该系统的内容有:1登录系统。自动区分登录者为学生、教师、管理员,并显示相应页面。2注册系统,只提供学生的注册,教师由管理员添加,仅设1名管理员账户。3师生信息管理系统,管理相关的师生信息。4只有目的用户可见的留言板系统。通过对数据库的匹配查询实现。5包含网络白板的聊天室系统。利用便捷的applet,通过多线程的应用实现聊天室。网络白板嵌入聊天室系统中,利用JAVA中的canvas类实现。6基于JSP的文件上传下载系统。基于jsp smartupload 组件实现。这6个系统将在以下章节中详细介绍。
本论文的总的结构可分为引言、目录、中英文摘要、数据库设计、系统功能介绍、谢辞、参考文献与附录九大部分。其中系统功能介绍分为登录系统、注册系统、师生信息管理系统、留言板系统、包含网络白板的聊天室系统、文件上传下载系统,共6个部分来详细介绍。参考文献与附录是关于开发该系统所参考的数据和书籍,附录是一些辅助说明。目录是毕业论文各章节所在页的具体说明。
网络远程作业处理系统主要的开发工具为Dreamweaver MX 2004,SQL Sever 2000和JBuilder9。
Dreamweaver MX 2004 是 建立 Web 站点和应用程序的专业工具。 它将可视布局工具、应用程序开发功能和代码编辑支持组合为一个功能强大的工具,使每个级别的开发人员和设计人员都可利用它快速创建接口吸引人并且基于标准的站点和应用程序。 从对基于 CSS 的设计提供领先的支持到手动编码功能,Dreamweaver 在一个集成和高效的环境中为专业人员提供了所需的工具。 开发人员可以将其选择的服务器技术与 Dreamweaver 配合使用,建立将用户连接到数据库、Web 服务和旧式系统的强大 Internet 应用程序。
Borland JBuilder9–全球最具威力之Java开发环境,相较过去版本,JBuilder提供更多省时工具与精灵,让您团队生产力提升至极限,协助您在最短时间内开发更好的软件。这仅是完整Borland解决方案的一部份,JBuilder9 Enterprise以融入应用程序开发周期(applicationlifecycle)为第一要务,能够使用您现有之技术投资,并给您最大的自由与弹性,让您以自己的方式与流程完成工作。BorlandOptimizeitSuite已包含于JBuilder9Enterprise版中:JBuilder9所包含之创新工具与加值功能将企业级Java开发提升至新境界。
Microsoft® SQL Server™ 2000 包括很多图形和命令提示实用工具,允许用户、程序员和管理员进行下列操作: 1管理和配置 SQL Server。2确定 SQL Server 复本中的目录信息。3设计和测试查询以检索数据。4复制、导入、导出和转换数据。Microsoft® SQL Server™ 2000 扩展了 Microsoft SQL Server 7.0 版的性能、可靠性、质量和易用性。Microsoft SQL Server 2000 增加了几种新的功能,由此成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。SQL Server 7.0 版中提供的 OLAP 服务功能现在称为 SQL Server 2000 Analysis Services。术语"OLAP 服务"已被术语"Analysis Services"取代。Analysis Services 还包括一个新的数据挖掘组件。SQL Server 7.0 版中包含的知识库组件现在称为 Microsoft SQL Server 2000 Meta Data Services。现在提及该组件时使用术语"Meta Data Services"。"知识库"这个术语只在谈及 Meta Data Services中的知识库引擎时才使用。
JavaServer Pages (JSP) 是一种以 Java为主的跨平台web开发语言。
JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript。JSP与伺服端的JavaScript不同。网站服务器会自动将以JSP写成的Java程序代码段转换成Java servlets。而许多先前必须以Perl手写程序或服务器特定的API(如ASP)控制的功能也都可透过JSP来自动化处理。
JavaServer Pages(JSP)使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写,编写方式也和原来的一样;动态部分的代码放入特殊标记之内,大部分以“<%”开始,以“%>”结束。 T
JSP页面文件通常以.jsp为扩展名,而且可以安装到任何能够存放普通Web页面的地方。虽然从代码编写来看,JSP页面更象普通Web页面而不象Servlet,但实际上,JSP最终会被转换成正规的Servlet,静态HTML直接输出到和Servlet service方法关联的输出流。
JSP到Servlet的转换过程一般在出现第一次页面请求时进行。因此,如果你希望第一个用户不会由于JSP页面转换成Servlet而等待太长的时间,希望确保Servlet已经正确地编译并装载,你可以在安装JSP页面之后自己请求一下这个页面。
另外,许多Web服务器允许定义别名,所以一个看起来指向HTML文件的URL实际上可能指向Servlet或JSP页面。
除了普通HTML代码之外,嵌入JSP页面的其他成分主要有如下三种:脚本元素(Scripting Element),指令(Directive),动作(Action)。脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP指令用来从整体上控制Servlet的结构;动作用来引入现有的组件或者控制JSP引擎的行为。为了简化脚本元素,JSP定义了一组可以直接使用的变量(预定义变量),比如前面代码片断中的request就是其中一例。
注意本文以JSP 1.0规范为基础。和0.92版相比,新版本的JSP作了许多重大的改动。虽然这些改动只会使JSP变得更好,但应注意1.0的JSP页面几乎和早期的JSP引擎完全不兼容。
JSP语法概要表 JSP元素、语法、说明、备注如下
JSP表达式 <%= expression %> 计算表达式并输出结果。 等价的XML表达是:
<jsp:expression> expression </jsp:expression>
可以使用的预定义变量包括:request,response,out,session,application,config,pageContext。这些预定义变量也可以在JSP Scriptlet中使用。
JSP Scriptlet <% code %> 插入到service方法的代码。 等价的XML表达是:
<jsp:scriptlet> code </jsp:scriptlet>
JSP声明 <%! code %> 代码被插入到Servlet类(在service方法之外)。 等价的XML表达是:
<jsp:declaration> code </jsp:declaration>
page指令 <%@ page att="val" %> 作用于Servlet引擎的全局性指令。 等价的XML表达是
<jsp:directive.page att="val"\>。
合法的属性如下表,其中粗体表示默认值:
import="package.class"
contentType="MIME-Type"
isThreadSafe="true|false"
session="true|false"
buffer="size kb|none"
autoflush="true|false"
extends="package.class"
info="message"
errorPage="url"
isErrorPage="true|false"
language="java"
include指令 <%@ include file="url" %> 当JSP转换成Servlet时,应当包含本地系统上的指定文件。 等价的XML表达是:
<jsp:directive.include file="url"\>.
其中URL必须是相对URL。 利用jsp:include动作可以在请求的时候(而不是JSP转换成Servlet时)引入文件。 JSP注释 <%-- comment --%> 注释;JSP转换成Servlet时被忽略。 如果要把注释嵌入结果HTML文档,使用普通的HTML注释标记<-- comment -->。
jsp:include动作<jsp:include page="relative URL" flush="true"/> 当Servlet被请求时,引入指定的文件。 如果你希望在页面转换的时候包含某个文件,使用JSP include指令。 注意:在某些服务器上,被包含文件必须是HTML文件或JSP文件,具体由服务器决定(通常根据文件扩展名判断)。
jsp:useBean动作 <jsp:useBean att=val*/> 或者
<jsp:useBean att=val*> ... </jsp:useBean> 寻找或实例化一个Java Bean。 可能的属性包括:
id="name"
scope="page|request |session|application"
class="package.class"
type="package.class"
beanName="package.class"
jsp:setProperty动作 <jsp:setProperty att=val*/> 设置Bean的属性。既可以设置一个确定的值,也可以指定属性值来自请求参数。 合法的属性包括:
name="beanName"
property="propertyName|*
param="parameterName"
value="val"
jsp:getProperty动作 <jsp:getProperty name="propertyName" value="val> 提取并输出Bean的属性。
jsp:forward动作 <jsp:forward page="relative URL"/> 把请求转到另外一个页面。
jsp:plugin动作 <jsp:plugin attribute="value"*> ... </jsp:plugin> 根据浏览器类型生成OBJECT或者EMBED标记,以便通过Java Plugin运行Java Applet。
关于模板文本(静态HTML) ,许多时候,JSP页面的很大一部分都由静态HTML构成,这些静态HTML也称为“模板文本”。模板文本和普通HTML几乎完全相同,它们都遵从相同的语法规则,而且模板文本也是被Servlet直接发送到客户端。此外,模板文本也可以用任何现有的页面制作工具来编写。 唯一的例外在于,如果要输出“<%”,则模板文本中应该写成“<\%”。
- 首先Applet一般是从java.applet.Applet中继承过来的;
- paint()方法必须是public,不然不能被其它程序正确调用;
- 由于paint方法使用了Graphics类,所以Applet需要引用java.awt.
- Graphics,当然如果其它的类如果也可以实现Graphics类的功能,也可以引用之;
- 在Applet中没有public static void main这个方法,所以它不能独立执行,必须由专门的程序(如游览器)调用执行,Applet程序被调用后,会自动执行paint方法。
- 在Html中使用标签APPLET来引用Applet,code属性指定Applet的程
序名,这是一个简单的Applet引用方法,当引入的Applet与html文件在同一个目录下,不用加路径说明,如果不是可以使用codebase指定applet所在的路径,路径表示方法与html中的一样;
- 其它属性width及属性height是HTML的标准属性。还有另一个方法可以测试Applet,就是使用appletViewer命令,查看html文件中引入的applet小程序,该命令会忽略html代码,直接执行applet代码。
-
- Applet参数使用方法
-
在Applet中可以使用<param>标签向Applet传递参数,如:
<applet ….>
<param NAME=font VALUE="TimesRoman">
……
</applet>
当applet执行时,这些参数就会被传入,可以在init方法中使用getParameter()方法获取这些传入参数的值,如getParameter("font"),该方法返回值始终是String类型的,所以必要的时候还需进行相应的类型转换。如果没有相应的传入参数,那么getParameter()方法会返回null值。
-
-
- Applet基本方法
-
从java.applet.Applet继承过来的applet会有五个基本的方法:
(1) init()方法:当applet被加载时,会首先执行init方法,该方法相当于java application中的main,该方法只能被执行一次;
(2) start()方法:init方法执行完毕会就会自动执行start方法,start方法可以被反复执行,如一个applet被stop后,可以使用start方法重新开动它;
(3) stop()方法:停止执行applet,与start方法相对应
(4) destroy()方法:与init方法相对应;
(5) paint()方法:输出指定内容,paint方法会被反复的调用,在applet初始化时、窗口移动时等;
(6) repaint()方法:该方法调用update方法;
(7) update()方法:该方法清空屏幕的内容后,再调用paint方法重画;paint,repaint及update方法是实现Applet中动画的三个主要函数,一般在update方法中调用g.clipRect方法规则paint的区域,这样paint方法只更新指定区域的内容;
(8) 以上这些方法在必须的时候可以重载,并且不需要在我们的applet中显示的调用,可以自动执行(当然也可以显示调用);
-
-
- Applet中的线程
-
在Applet中如果需要用到动画或者后台数据处理等需要占用大量资源的功能时,最好使用线程。
(1) 要在applet支持线程,一般需要实现Runnable接口,所以在本例类的声明中加了implements Runnable;
(2) 在Runable接口中定义了run()方法,当线程start时,会调用这个方法;所以需要实现该方法;
(3) 要使用线程当然需要实例化类Thread(Thread是属于java.lang包):Thread runner = new Thread(this),这里的初始化参数this指定的applet对象;
(4) 接下来在applet的start方法中调用runner.start()方法开始创建线程,线程创建完后,运行run方法;
(5) 在run方法中实现真正要实现的内容,本例修改了theDate的值后,调用repaint方法,该方法的调用触发了paint方法的执行;
(6) 在stop方法中结束线程的运行。
根据该课题的要求,为了实现相应的网站功能并方便用户,我建立了4个表。
列名 | 数据类型 | 可否为空 | 说明 |
suser | char | 不可 | 学生学号,主键 |
name | char | 不可 | 用户名,主键 |
code | char | 可 | 密码 |
isteacher | real | 不可 | 是否是教师 |
administrator | real | 可 | 是否是管理员 |
列名 | 数据类型 | 可否为空 | 说明 |
class | char | 不可 | 班级号,主键 |
studentnum | char | 不可 | 学生数 |
列名 | 数据类型 | 可否为空 | 说明 |
title | char | 不可 | 主题名,主键 |
name | text | 不可 | 留言人姓名 |
time | datatime | 可 | 留言时间 |
content | text | 不可 | 留言内容 |
isteacher | char | 不可 | 是否是教师 |
rname | char | 不可 | 收信人姓名 |
-
- 任课信息表(adds)
列名 | 数据类型 | 可否为空 | 说明 |
teacher | char | 不可 | 教师姓名,主键 |
course | char | 不可 | 课程名,主键 |
class | char | 不可 | 班级名,主键 |
在这4个表中,用户信息表(tuser)存储所有合法的用户信息。用于在登录时的检验,以及其他一些相应的修改用户信息的页面。班级表(Tstudentnum)和任课信息表用于文件下载页面,以提供文件的下载地址。
登录、注册界面(login.jsp) |
核实页面(ValidateUser.jsp) |
学生页面 (student.htm) |
教师页面(teacher.htm) |
管理员页面(admin.htm) |
留言页面(index.htm) |
上传文件页面 (upload.jsp) |
学生聊天室页面 (sapplet.jsp) |
留言页面(index.htm) |
下载文件页面 (TeacherPage2.jsp) |
教师聊天室页面 (tapplet.jsp) |
管理学生页面 (delestudent.jsp) |
添加教师页面(addteacher.jsp) |
删除教师页面 (deleteacher.jsp) |
管理留言信息页面 (managelyb.jsp) |
管理任课信息页面 (maadds.jsp) |
管理班级信息页面(maclass.jsp) |
修改密码页面(changecode.jsp) |
修改密码页面(changecode.jsp) |
修改密码页面(changecode.jsp) |
学生注册页面(UserInfo.jsp) |
登录失败页面(fail.htm) |
-
- 系统主要页面详述
该页面主要是一个表单,提供两个选择:注册或登录。在填写完用户名和密码两项内容后按下提交键进入核实页面(ValidateUser.jsp),或点击注册键进入注册信息填写页面(UserInfo.jsp)。在该页面代码中我添加了一个javascript函数,使该页面具有了粗略的错误提示功能:在用户未输入用户名和密码前表单不会被提交至登录的核实页面(ValidateUser.jsp)。
该页面接受登录、注册页面(login.jsp)提交的用户名和密码两项信息并以此进行数据库查询,若查询成功,则将该用户的姓名、学号和该用户是否为教师的信息分别记入session变量“name”、“snum”、“Isteacher”中,并根据数据库查询的结果决定下一个显示的页面:学生页面(student.htm),教师页面(teacher.htm),管理员页面(administrator.htm)和登录失败页面(fail.htm)。在这个页面中,我另外还设置了一个session变量“login”当成功验证后赋值为“ok”。该变量的作用是为验证已登录页面(CheckValid.jsp)提供是否以验证的信息。在该页面中,我使用了javabean技术,将连接数据库的工作建成了一个名为conn的类,并在该页面中引用。在后面介绍的文件中,也有许多文件引用了它。
该页面提供一个验证打开当前页面用户是否登录的功能。这样是为了避免在有恶意人士在了解了页面的文件名后,跳过登录界面直接进入后面的服务页面。该页面实际只是一个验证是否登录的代码,其他需要保护的页面只要在文件开始时引用该文件就可以了,这样可以避免在多个网页中重复编写相同的代码。
该页面主要是一个表单,负责从用户获得相关的信息,提交给注册信息提交页面(CheckUserInfo.jsp)。
该页面接受学生注册页面(UserInfo.jsp)提交的信息。使用javabean,引用了两个类,分别为conn和UserInfo。前者用来获得用户的学号,用来进行唯一性校验;后者用来对接受的信息进行校验,对“学号”、“用户名”、“密码”、“重复密码”提供空检验,“学号”必须为8位数字,“密码” 与“重复密码”必须一致,否则就会提示相应的纠错信息。在确认提交的信息无错后,尝试进行数据库输入操作。若操作成功,则显示数据库操作成功信息和输入者的姓名、学号,如下图所示。若操作失败,则显示数据库操作失败信息,提示重新尝试。
此页面为一框架页面,3个框架分别指向学生选择页面(StudentPage.jsp)、学生登录默认界面(student1.htm)和显示留言页面(view_message.jsp)。
该页面提供了学生成功登录后的可用选项。我做成了5个超连接,分别连接不同的页面。具体为“我要留言”对应留言填写页面(index.htm),“上传文件”对应上传文件选择页面(upload.jsp),“聊天室” 对应学生聊天室页面(sapplet.jsp),“修改密码”对应修改密码页面(changecode.jsp),“返回登录界面”对应登录、注册页面(login.jsp)。
同学生页面一样,此页面也为一框架页面。3个框架分别指向教师选择页面(TeacherPage.jsp)、教师登录默认界面(teacher1.htm)和显示留言页面(view_message.jsp)。
该页面提供了教师成功登录后的可用选项。共7个超连接。分别为“我要留言”对应留言填写页面(index.htm),“下载文件”对应班级选择页面(TeacherPage2.jsp),“聊天室”对应教师聊天室页面(tapplet.jsp),“管理学生信息”对应学生帐户删除页面(delestudent.jsp),“管理任课信息”对应添加认课信息页面(maadds.jsp),“修改密码”对应修改密码页面(changecode.jsp),“返回登录界面”对应登录、注册页面(login.jsp)。
框架页面。同样是3个框架,分别对应管理员选择页面(administrator.jsp)、管理员登录默认界面(admin1.htm)和显示留言页面(view_message.jsp)。
该页面提供了管理员成功登录后的可用选项。共6个超连接。“添加教师信息”对应添加教师信息页面(addteacher.jsp),“删除教师信息”对应删除教师信息页面(deleteacher.jsp),“管理留言板”对应管理留言板页面(managelyb.jsp),“管理班级信息”对应管理班级信息页面(maclass.jsp),“修改管理员密码”对应修改密码页面(changecode.jsp),“返回登录界面”对应登录、注册页面(login.jsp)。
该页面显示当前用户收到的留言信息。具体的工作为使用session变量“name”获得当前的用户名,通过session变量“snum”获得登录者的学号信息,并进行适当处理获得当前用户所属的班级号,在数据库中message表的“rname”项上查找相匹配的条目,并按记入数据库的时间顺序列出。显示留言的留言人,留言主题,留言时间和内容。在数据库为空时,提示“目前还没有任何留言”,在当前用户未收到留言时提示“您还未收到任何留言”。
该页面主要是一个表单,从用户处获得接受对象,留言主题和留言内容三项信息,提交给添加留言页面(add_message.jsp)。“查看留言”提供用户一个在较大的框架中浏览留言的功能,对应页面名为nowview_message.jsp。
该页面一方面接受由留言页面(index.htm)传来的表单数据,并对其进行简单的校验。另一方面通过session变量获得提交该留言者的身份信息是否为教师。该页面检查接受的各条目是否为空,若为空则显示相应的提示信息。当确定接受的数据符合要求后,将进行输入数据库的尝试。若成功输入,则重定位至成功添加留言页面(successadd.htm)提示数据库输入成功。
通过session变量“snum”获得登陆学生的学号。取其前六位数字得到该生所在的班级。以此为根据对数据库进行两次查询获得该班级的所有任课教师和所学课程放入两个菜单中,供学生选择,并和用户选择的文件一起以表单形式提交给上传处理页面(doUpload.jsp).
接收上传页面(upload.jsp)提交的相关信息,利用SmartUpdown组件实现文件上传。其中SmartUpdown组件以javabean形式在页面文件中被引用。
通过session变量获得文件的下载地址,传给SmartUpdown组件实现文件的下载。SmartUpdown组件同样以javabean形式在页面文件中被引用。
获得用户的新密码,并以POST方式提交给修改密码处理页面(changecode2.jsp)。
接受修改密码页面(changecode.jsp)提交的信息。比较两次密码输入是否一致。当一致时进行数据库输入操作。在操作成功时提示“密码更新完成”,在失败时提示“数据库输入中出现问题,请重试”。
由用户填写相关信息,以POST方式提交到任课信息处理页面(maadds2.jsp)。
从管理任课信息页面(maadds.jsp)获得课程和班级的信息,再从session变量“name”获得教师名,然后进行数据库输入操作。依据成功或失败分别提示相关信息。
从数据库中输出所有教师的信息。通过循环,列表显示。在每行后添加一个表单,设立一个属性为隐藏,名字为“name” 的变量,其值为每行相应的教师名。再设立一个属性为提交,名字为“删除按钮”的按键。表单的目标设为删除教师处理页面(deleteacher2.jsp)。
从删除教师页面(deleteacher.jsp)页面获得需要删除的教师的姓名,以此为依据进行数据库操作。根据操作的成功与否返回相应的提示。
本页面引用了applet文件ChatApplet2.class。使用session变量获得以登录用户的用户名,并将此参数传至该applet文件。进入该页面后点击登录按键就可以激活聊天室栏(需在服务器以开通的前提下,默认登录默认聊天室)。选择自己想要进入的聊天室点击“加入聊天室”按钮就可以开始在线交流了在“当前交谈室用户”栏中可以观察在线的用户。右上为网络白板,右下角的文本框为聊天显示处,其下为聊天的发送处。在白板右侧可以选择当前画笔的颜色,白板上方室清除白板的功能键按钮。暂停交谈按钮在被使用后,只能发送信息不能接受信息,再次点击恢复聊天功能。
登录系统由2个页面,一个javabean文件和1个数据库表组成:登录、注册页面(login.jsp),核实页面(ValidateUser.jsp),conn类文件和用户信息表(tuser)。该系统对需要使用该系统的用户进行验证,并将合法用户分类,再根据分类结果显示不同的登录界面。
用户在登录、注册页面(login.jsp)中填写相应信息后按下提交键,经过页面中的javascript函数的简单校验通过后将相应信息提交给核实页面(ValidateUser.jsp)。在该页中,通过引用conn类调用用户信息表与提交的数据相比较,决定下一个显示的页面。
注册系统分为学生注册系统和教师注册系统。其中学生注册系统由3个页面,一个javabean文件和1个数据库表组成:登录、注册页面(login.jsp),学生注册页面(UserInfo.jsp),注册信息提交页面(CheckUserInfo.jsp),UserInfo类文件和用户信息表(tuser)。教师注册系统也由3个页面和1个数据库表组成:管理员选择页面(admin.jsp), 添加教师信息页面(addteacher.htm),添加教师处理页面(addteacher.jsp)和用户信息表(tuser).
该系统实现添加合法用户的添加功能。
先介绍学生注册系统。在登录、注册页面(login.jsp)中选择“注册”按钮,进入学生注册页面。在学生注册页面中,用户填写相应的注册信息,提交到注册信息提交页面。该页面通过引用的UserInfo类进行数据的校验工作,并在校验后将信息输入用户信息表。
再介绍教师注册系统。在管理员选择页面中选择“添加教师信息”选项,进入添加教师信息页面,用户在该页面填写注册所需的相关信息后选择提交按钮,将相关信息提交至添加教师处理页面。由该页面将相应信息输入用户信息表。值得注意的是,由于用户信息表中属性“snum”的主键特性,必须为教师编写学号。为此,我将教师的学号全部设为“00000000”。
师生信息管理系统由8个页面和3个数据库表组成:管理学生页面(delestudent.jsp),管理学生处理页面(delestudent2.jsp),删除教师页面(deleteacher.jsp),删除教师处理页面(deleteacher2.jsp),管理任课信息页面(maadds.jsp),任课信息处理页面(maadds2.jsp),管理班级信息页面(maclass.jsp),班级信息处理页面(maclass2.jsp),用户信息表(tuser),班级信息表(Tstudentnum)和认课信息表(adds)。该系统主要实现在线的数据库操作。根据用户的权限可以对数据库中的各个师生关系表进行相应的操作。具体权限如下:学生无任何修改相关表的权利。教师可以用户信息表中的学生信息,对任课信息表进行添加。管理员可以对班级信息表进行操作,可以修改用户信息表中的教师信息。
先介绍教师的相关操作,先是管理学生信息。以教师权限登录后,在教师选择页面选择管理学生信息按键,进入管理学生信息页面。填写需要删除的学生的姓名和学号,按下提交键将相应数据提交至管理学生处理页面。该页面比较获得的数据和用户信息表中相应的数据。若相符和就删除该学生信息。再是管理任课信息。同样以教师权限登录后,在教师选择页面中选择管理任课信息按键,进入管理班级信息页面。填写相应班级信息按下提交键进入班级信息处理页面,进行数据库输入操作。
再介绍管理员的相关操作,先是删除教师信息。在以管理员身份登录后,在管理员选择页面选择删除教师信息选项,进入删除教师信息页面。该页自动显示当前用户信息表中的所用教师信息,并提供删除选项。点击需要删除的教师信息所在行的删除按钮进入删除教师处理页面。由该页面执行相应的对用户信息表的操作,并根据操作成败返回相应信息。再是管理班级信息。同样以管理员身份进入管理员选择页面后选择管理班级信息选项,进入管理班级信息页面。在该页填写班级号和班级人数信息,按下提交键将相关信息提交至任课信息处理页面,由后者将相关信息输入数据库。
该系统由6个页面和1个数据库表组成:留言页面(index.htm),添加留言页面(add_message.jsp),显示留言页面(view_message.jsp),成功留言页面(successadd.htm),管理留言信息页面(managelyb.htm),管理留言信息处理页面(managelyb2.jsp)和留言信息表(message)。该系统的作用是实现师生之间的非实时交流。当学生需要向教师提问而教师并不在线时,或教师想公布通告给相关班级时,或教师回答同学问题时都可以使用该系统实现。
该系统有三个部分:提交留言、显示留言和管理留言。先介绍提交留言部分。在学生选择页面、教师选择页面或管理员选择页面选择我要留言选项,进入留言页面。用户在该页填写数据库所需的“收言人”、“主题”和“内容”后按下提交按钮,进入添加留言页面。由该页面进行相应的校验和数据库输入操作。在成功操作后系统自动转移至成功留言页面提示已成功留言。再介绍显示留言部分。在用户成功登录后系统将根据数据库中的数据将用户分类并显示相应的页面框架。留言信息显示页面镶嵌在这些框架中,显示其它合法用户给当前用户的留言。最后介绍管理留言部分。在本系统中只有管理员拥有删除留言的权利。在管理员选择页面中选择管理留言板选项,进入管理留言信息页面。该页面列出目前数据库中的所有留言,并在每个留言后添加一个删除按钮。选择想要删除的留言按下删除按钮进入管理留言信息处理页面。由该页面处理数据库的相关操作并返回相应的信息。
该系统由2个页面,17个applet类文件组成:学生聊天室页面(sapplet.jsp),教师(tapplet.jsp),SendDrawData.class类文件,TooManyRoomsException.class类文件,User.class类文件,AboutDialog.class类文件,ChatServer.class类文件, DataBag.class类文件, Logo.class类文件, NoSuchRoomException.class类文件, NotMemberException.class类文件, PleaseCloseSocketException.class类文件, QuitDialog.class类文件, Room.class 类文件,RoomData.class类文件, RoomGroup.class类文件, Rooms.class类文件, ChatApplet2.class类文件 ,ChatApplet1.class类文件。该系统的功能为构建一个在线聊天室,为在线师生提供在线交流服务。另外加入网络白板,师生之间的交流更加形象生动,特别适合师生间的交流使用。
运行该系统的首要条件是在服务器端首先运行ChatServer.class文件构建留言服务器。其运行情况如图下所示:
在成功启动服务器后,登录教师或学生选择页面。选择聊天室选项,启动相应的applet程序。其中学生引用ChatApplet2类文件,教师引用ChatApplet1类文件。这两个applet程序的大部分是相同的,唯一的不同是教师聊天室拥有创建新聊天室的功能,而学生聊天室没有,仅能加入默认聊天室或教师建立的聊天室。
该服务器提供了2个菜单,1个按钮,1个下拉菜单和2个文本显示框。在“file”菜单中提供“restsrt”和“Exit”两个选项,分别提供重启聊天服务器和退出聊天服务器。“help” 记录了版本信息。“clean”按钮将清空其下的“message” 文本显示框。“message” 文本显示框显示相应聊天室的聊天内容和系统提示信息。“chat room”下拉窗口提供当前工作的聊天室名,用以在“message”文本显示框中查看相应聊天室的情况。“user list”文本显示框显示相应聊天室的当前用户。
其他的类文件均是前三个类文件中所引用的类或方法的本体。
该系统包含个页面,2个javabean类文件包和2个数据库表:下载课程选择页面(TeacherPage2.jsp),下载班级选择页面( classPage.jsp),下载学生选择页面(personPage.jsp),下载文件处理页面(doDownload.jsp),上传文件选择页面(upload.jsp),上传文件处理页面(doUpload.jsp),DBconn类文件包,com类文件包,班级信息表(Tstudentnum),任课信息表(adds)。该系统的功能为实现学生作业的在线提交。
该系统分为两部分。作业提交和作业接收。在该系统中,我应用了网上业已成熟的JSP组件smartupdown实现这两个功能。先介绍作业下载部分。流程图如下图所示:
教师选择页面 (TeacherPage.jsp) |
下载课程选择页面 (TeacherPage2.jsp) |
下载班级选择页面 (classPage.jsp) |
下载学生选择页面 (personPage.jsp) |
下载文件处理页面 (doDownload.jsp) |
在教师选择页面中选择“下载文件”选项。进入下载课程选择页面,选择相应的课程后点击“查看”按键进入下载班级选择页面,选择相应的班级,进入下载学生选择页面,选择目标学生的学号,进入下载文件处理页面。由该页面根据前面各页的选择,引用com类包中的smartupdown组件下载相应的学生文件。
再介绍作业上传部分。在学生选择页面中选择“上传文件”选项。进入上传文件页面,在空白处填写文件地址或通过点击“……”按钮获得文件地址。在下面的两个下拉菜单栏中选择相应的教师和课程,提交至上传文件处理页面。该页引用smartupdown插件完成文件的上传工作。