0 引言
随着Internet和多媒体技术的发展,学生提交作业的形式多种多样,可以是文本文件、图形图像文件,甚至是音频视频等文件。以往经常采用的通过发邮件或U盘拷贝的方式已无法适应新的要求,因为通过发邮件提交作业的方式存在明显的局限性:如果学生众多时,大量邮件会让教师难以整理,而且有些学生会因为担心教师没收到邮件而重复发送。因此,开发一个高效的网上作业平台,对课程作业进行科学管理,让师生能够利用该平台便捷地上传、下载和管理作业,从而提高教学管理水平,具有重要的意义。
结合我校网络建设和课程教学管理的实际情况,对网上作业平台的建设提出如下建议:一是将传统的项目管理向专业化方向发展,以利于系统后期的维护和升级;二是要保证系统的先进性和开放性和操作的一致性;三是采用B/S、三层或多层结构体系,这样系统负载轻,可扩展性强,维护升级方便;四是便于同高校现有的一卡通系统集成,如考虑用户身份统一认证等问题。在设计方面,从传统的面向业务的设计转向面向用户的设计[1]。
1 系统总体设计
1.1 系统功能性设计
根据网上作业系统分析需求,得出如图1功能性模块图。
[网上作业平台][个人网络
硬盘系统][文件上传下载管理][在线压缩解压管理][文件共享管理][统计查询新建管理][其他文件管理等] [网上
作业系统][在线
考试系统][课程资源
库系统][Web站点
发布系统][系统维护\&][网上作业提交][网上作业批量下载][在线批阅、反馈][网上作业备份][作业发布管理] [试题管理][组卷管理][考试、练习管理][阅卷管理][成绩管理] [资源类别管理][资源上传审核管理][资源下载访问管理][资源备份管理] [站点目录管理][站点审核管理][站点发布管理][通知发布][模块权限设置][用户管理][数据库备份][基础表维护]
图1 系统功能性模块图
1.2 系统数据库设计
本系统涉及的主要实体有:用户(Accounts_Users)、班级(banji)、课程(kc)、网盘(file即个人网盘)、文件共享 (share)、作业(zuoye)、课程资源库(resource)、Web站点发布(publish)、我的收藏(mycollect)、模块、菜单、角色、权限、基础表等,主要实体之间的联系以及主要实体包含的属性如图2所示。 1.3 系统存储结构分析与设计
网上作业平台系统是一个以存储资源、管理资源、共享资源为中心的平台系统,本系统会有大量数据需要存储和管理,所以必须设计一个科学合理的存储方案。在考虑系统存储方案时,首先要详细研究各类资源存储结构,在此基础上考虑系统设计尽量做到科学合理。本平台以文件系统方式存储为主,即将具体的各类资源文件以磁盘文件的形式存储在某个特定目录下,而将相应的文件信息如:文件名、文件路径、文件大小、文件类型、创建时间、上传用户等信息存储到数据库对应的表中,便于系统从数据库快速加载信息到界面,而具体浏览或下载某文件时,再根据文件路径信息访问该文件,给用户最佳体验。例如个人网盘,将文件存储在特定的以用户名建立的目录下,而该文件信息则存储在file表中,用户浏览网盘时,将从file表中读取该用户的全部文件信息,而在实际下载时,通过file表中存储的路径信息下载文件。学生上传的作业文件则是存放以课程编号和学期信息组成的目录下,文件信息则存放在zuoye表中。
⑴ 个人网盘存储设计
我们将具体的单个文件存储在磁盘目录中,而将文件信息存储在数据库中,以提高访问速度和存储能力。个人网盘,顾名思义只有自己可以访问。所以当用户登录该系统时(首次访问前必须先注册,经管理员审核通过后,方可登录),必须记录用户身份,在file数据表中以用户名为关键字,记录用户名存储在Session对象中。另外通过在配置文件中放置个人网盘目录的公共部分,比如所有的个人网盘文件,均放在E:\WebDisk目录下,在Web.Config文件中增加配置信息:<add key="WebDiskDir" value="e:\WebDisk\" />。在Web应用系统启动时将该信息存储在Application全局对象中,以便系统所有用户都能访问,代码为Application=WebConfigurationManager.AppSettings.Get("WebDiskDir")。这样在个人网盘公共目录下采用用户名创建新目录,在第一次访问时系统将自动创建,用户上传的文件将建立在该目录下,并且该目录只有合法登录用户才能访问,通过Session对象和目录名的匹配判断确保其他用户不具有访问权限,保证了个人网盘的安全性。
⑵ 网上作业存储设计
网上作业存储同样采用将具体的单个文件存储在磁盘目录中,而将文件信息存储在数据库中。首先提取出公共目录存储在配置文件中,然后将用户名、课程编号和学期信息,四者合并产生课程作业目录,具体产生的目录顺序为:公共目录+用户名+课程编号+学期信息,确保目录不会冲突,同时保证每门课程都有相应的作业目录。当学生用户登录时,通过用户名的限定可以保证该用户只能访问该用户下的所有课程作业,而不能访问其他用户的课程作业。而当教师或管理员用户登录时,不受目录的限制,可以根据数据库中的课程编号访问该课程下的全部作业,比如一次性压缩下载某一次的课程作业,或压缩下载整个学期的作业等操作[2]。
⑶ 课程资源库存储设计
课程资源库是以收集和共享相应课程资源文件为目的而设计的,课程资源类别众多,有:视频、课件、考试、参考、代码、文献、教案、事例、复习等等。在设计时,专门设计一张表用于存储资源类别,便于动态修改和增加类别。在资源共享页面中同样设计了动态加载资源类别横向菜单,便于用户按照资源类别进行访问。资源存储的目录名以公共目录+课程编号+资源类别编号。在系统中只要限定学生用户不能删除资源文件,教师可管理本课程的全部资源权限,对于其他课程的资源只有访问权,没有删除和修改的权限。
⑷ 在线站点存储设计
在线站点存储是以提供用户发布Web站点为目的进行文件存储,一个Web站点肯定有许多文件和目录,因此不可能将全部文件和目录信息记录到数据库中。因为多个文件或目录上传会有许多问题,所以在上传站点文件时必须是经过RAR或Zip压缩的单个文件,在将单个文件上传到相应的目录(公共目录+用户名)后,系统在服
务器端通过winrar软件自动解压,然后利用静态类Directory的相应方法Directory.GetDirectories和Directory.GetFiles获取发布目录下的全部子目录和文件展示给用户。因为在线站点存储目录结构是公共目录+用户名的方式,可以保证登录用户的完全访问权限,而其他用户只能浏览该目录和通过web方式访问该站点而不能进行删除、修改操作,但需要保证系统管理员具有删除权限。
⑸ 公告发布附件存储设计
教师或管理员经常需要发布公告信息,可以有附件,所以也涉及到文件存储的问题,考虑到公告的附件一般只有一个文件,所以我们直接将文件以二进制形式存储在数据库中。附件上传时用UploadedFile.PostedFile.InputStream流的方式,再转换为内存流写入到数组中,再将二进制数组保存到数据库中,下载时用Response.BinaryWrite方法直接将数据库中的二进制文件写到客户端即可。
2 网上作业系统实现
本系统采用asp.net和ajax技术实现全部功能,数据库采用SqlServer2005,编程语言采用C#。下面重点给出网上作业子系统的具体实现过程。
作业管理子系统是该课程教学管理系统下的一个功能子系统,主要完成从教师布置作业→学生浏览作业信息→学生上传作业→教师、在线批阅或打包下载作业→作业批阅、备份、回复信息、统计查询等一系列的管理工作。
系统在教师布置作业方面,可通过多种途径发布,其中一项创新性的工作是即时通过QQ发送给学生。目前中国智能手机用户量全球第一,而在即时通信中,QQ稳坐第一。QQ是深圳腾讯公司开发的一款即时通信软件,支持文字、语音、视频网络通信,支持网络硬盘、QQ邮箱等功能,并与当前深受广大网络用户喜爱的微信完美结合,能做到信息同步。据调查,目前大学生中95%以上使用手机QQ聊天。而在网络教学方面,通过QQ同步发布作业功能的网络教学系统的很少见,因此开发通过QQ发布作业是必要的。要完成在作业管理子系统中自动发送QQ信息,必须做到以下几点: ⑴ 在服务器上安装QQ2012或QQ2013软件,申请一QQ号码,以此号码登录;
⑵ 在QQ软件中,按班级或课程建立QQ群,告知学生按班级或课程加入QQ群;
⑶ 在网上作业发布系统中,首先判断QQ有没有登录,如果没有则通过代码登录QQ,然后根据课程和相应的QQ群进行发送。主要代码如下:
System.Net.WebClient _client=new System.Net.WebClient();
//用给服务器发送消息
String postValues="VER=1.1&CMD=CLTMSG&SEQ="
+DateTime.Now.Ticks.ToString().Substring(7, 7)+"&UIN="
+Application["QQ"].ToString()+"&UN="+msgTo+"&MG="
+msg; //发送给服务器的字符串
byte[] byteArray=System.Text.Encoding.UTF8
.GetBytes(postValues); //把要发送的字符串变成字符数组
try {
byte[]pageData=_client.UploadData("http://tqq.tencent.com:
8000", "POST", byteArray); //向服务器POST数据,返回包含来自资源服务器的响应的正文
ServerValues=Encoding.UTF8.GetString(pageData);
//将相应字节数组转换为字符串
}
if (ServerValues.Contains("&RES=0")) //QQ信息发送成功
教师管理课程作业的一系列流程如图3所示。
[作业布置][结束][开始][通过公告栏
布置作业,
可带附件][通过课程
共享布置
作业][通过课程资源
库中的“实验”
栏布置作业][通过QQ
群发布置
作业][通过邮件布置作业
][通过页面上传][上传作业页面][通过邮件上传][教师批阅下载页面][作业备份][作业打包下载][在线批阅][作业统计][批量删除]
图3 教师作业管理系统流程图
在学生上传作业模块中,学生必须选择正确的课程,因为学生可能有多门课程要上传作业,如果指定的课程作业目录不存在,则自动建立该目录。然后通过上传用户控件完成文件从客户端到服务器端的上传,最后将作业信息写入数据库,完成整个作业上传过程。在教师作业管理页面中,通过数据库中zuoye表将自己课程的作业按第几次作业显示全部学生的上传文件信息,如果作业文件格式是word文档,教师可在线通过PageOffice组件打开该文件,进行批阅,而如果打包下载,可通过循环获得作业文件路径压缩所有文件到临时文件(兼具有作业备份目的)后,下载到客户端。教师下载作业主要代码如下:
string strPath=Application["KcZuoYeDirBack"].ToString();
//作业目录公共路径
stringstrFileName=course1.kcname+DateTime.Now.ToString
("yyyy-MM-dd");
strFileName+=ddlExperiment.SelectedItem.Text+".rar";
//构造打包下载用临时文件名称
List<int>lsid=GetSelectFileid(); //获取下载作业的全部文件ID
foreach (int id in lsid)
{ string filePath=GetFilePathByid(id);
//根据作业ID获得学生作业文件存储路径
if (Common.WinRAR.RAR(filePath, strPath, strFileName))
//调用压缩过程将学生作业压缩到临时文件中
}
DownFileByFileName(Path.Combine(strPath, strFileName));
//调用过程下载临时文件
教师反馈学生作业信息采用AJAX技术,首先在作业管理zuoyedown.aspx页面中利用<asp:Panel>DotNet控件设计好回复窗口,然后利用AJAX<asp:ModalPopupExtender>控件在主页面中弹出回复窗口达到较好的用户体验。
3 结束语
本系统现已在苏州大学计算机学院正式使用,实践证明,该系统运行可靠,性能优秀,能满足500个用户同时使用。系统在需求分析过程中,采用了先进的面向对象的分析设计方法,对整个课程作业管理系统进行需求建模。系统实现了课程教学管理系统的个人网盘管理、教学资源库管理、课程作业管理、课程签到管理。后期还将加入微课、Web开发课程站点部署平台,设计开发学生站点的动态部署问题,提供学生开发的asp.net和jsp站点作业发布演示平台,为师生提供更好的交流等应用功能。
参考文献:
[1] 曾杰.在线作业系统发展现状、问题与建议[J].中国电化教育,
2009.8:106-110
[2] 张栋梁,朱晓珺.基于NET在线作业管理系统的研究与设计[J].软件
导刊,2010.9(6):63-64
.北京印刷学院学
报,2004.12(1):12-15