赵 冬,高 亮
(中原工学院,郑州450007)
基于ASP.NET的软件学院实践环节课题申报系统的设计与实现
赵 冬,高 亮
(中原工学院,郑州450007)
从软件学院实践环节课题申报工作的实际需求出发,以实现软件学院实践环节课题申报工作的自动化、信息化管理为目标,讨论了系统软件架构、功能模块及涉及到的关键技术.系统采用微软ASP.NET、AJAX技术及C#语言,可实现从教师开设课题,管理员审核课题,到学生申报课题,教师批准学生申报全过程的自动化管理,提高了实践环节课题申报工作的效率.
课题申报;实践环节;三层架构
目前,我国已有越来越多的高校开设了软件学院,这些软件学院多以培养应用型软件工程人才为目标.在学生的培养过程中,实践环节占了教学过程的较大比重,基本上每个学期末,都会安排一个为期1~3周的集中实践课程.课程实践中,教师要带领学生,以组或个人为单位,开发具有一定规模的软件.这类实践课程的管理过程一般是:①在实践课程开始前若干周,由各位教师发布自己的题目及每个题目需要多少组、每组多少人;②题目经过相关管理人员审批合格后,即公布给学生;③学生自由结合成组,选择教师及题目;④教师确认自己所带的组,并将最终的选报结果公布给学生.
目前,很多高校的这一选报过程仍采用手工或半自动化方式来完成,不仅工作效率较低,而且结果不准确,每次都会发生学生漏报或教师统计错误等情况,给后续的统计教师工作量及提交学生成绩等工作造成不便.本课题申报系统能够完成课题申报审批的全自动化处理,不仅减少了相关人员的工作压力、提高了工作效率,而且提高了课题申报过程的规范性和准确性.
本系统采用了三层架构模式.所谓三层架构,是将整个系统划分为三层,自下而上分别是数据访问层、业务逻辑层和表示层[1].如图1所示.三层架构模式层与层相对独立,各层分别负责完成一类工作.该模式具有分散关注、松散耦合、逻辑复用等优势[2].
图1 软件架构示意图
本系统功能模块包括教师功能模块、管理员功能模块、学生功能模块及通用功能模块.系统体系结构如图2所示.
图2 实践课题申报系统体系结构图
教师功能模块包括:
(1)个人题库管理.教师可以维护自己的题库,进行新增、修改及删除题目等操作.每个学期申报题目时可以直接从题库中选取或稍加修改,无需重复录入.个人题库中的题目只有教师本人可以维护.
(2)课题申请.教师在个人题库或公共题库列表中选择合适的题目,只要选择正确的学期、实践环节类型、专业、组数、每组人数等信息,即可提交申请.
(3)学生选报处理.教师与学生之间是双向选择的关系,学生在选报教师的某个课题后,教师要对其进行确认,同时也有权拒绝其加入课题组.经过确认的学生,不能再自行退组.学生如要更换教师或题目,必须由本人提出申请,由教师将学生除名后才能再选择其他教师的题目.
(4)学生成果管理.课题结束时,学生必须上传自己的代码及文档.教师可通过此模块查看并下载自己所带学生上传的成果.
管理员功能模块包括:
(1)公共题库管理.管理员可以维护公共题库,公共题库中的题目可以供所有教师使用.
(2)课题审批.教师提交课题申请之后,需要经过管理员审批,学生才能选题.如审批没通过,管理员可将没通过的原因反馈给教师.
(3)基础信息管理.管理员还需管理系统运行所需的基础信息,如学生信息、教师信息、专业信息、班级信息、课题允许选报时间设置等.
学生功能模块包括:
(1)课题选报.学生登录后可看到与自己本专业、本次实践环节相关的所有题目,可查看每一个题目的详细信息及目前的选报情况,如课题组是否已经报满、各组组员是否已经报满等情况.学生选好课题后,可自行在该课题下创建项目组(在该课题项目组数未满的情况下)并设置组密码,也可直接加入其他组(该组的组员未满,且要求输入组密码).学生在创建或加入某组后,在教师未确认之前,仍可自行退组并选择其他组或课题.教师确认后,学生会收到一条确认成功的站内短信,且不能再退组.如果教师将学生除名,被除名的学生会收到一条站内短信,则该生处于未加入任何组的状态,可继续选择其他教师的题目.
(2)成果提交.在实践环节结束时,学生可以通过该模块提交自己的代码及文档等成果性资料,作为教师评分的依据.
通用功能模块包括:
(1)登录.本系统所有用户必须经过登录验证身份后才可使用.如果是学生登录,需要以学生所在班级为依据,结合当前日期计算本学期该生应该参加哪个实践环节,以及目前是否已经开放了该实践环节的选题功能.系统会根据计算结果决定是否显示课题列表以及显示哪些题目.
(2)公告.管理员有权发布公告,教师及学生只有浏览公告的权限.
(3)站内短信.管理员可向任何人发送站内短信,教师可向自己所带学生及管理员发送站内短信;学生可向自己的指导教师及管理员发送站内短信.系统支持群发功能.
(4)BBS.任何登录用户均可使用BBS进行交流.管理员具有论坛管理权限,包括删除帖子、删除回复、封ID等.
本系统采用了SQL Server2000作为DBMS.系统E-R图如图3所示.
图3 实践课题申报系统E-R图
AJAX(Asynchronous JavaScript and XML)即异步JavaScript和XML,是一种创建交互式网页应用的网页开发技术.AJAX最大的特点是实现了客户端与服务器端之间异步的数据交换[3].目前在 ASP.NET2.0下,可以有多种方式实现AJAX.本系统是采用Client CallBack方式实现的.
本系统几乎所有涉及到数据列表刷新的页面都采用了AJAX技术,下面以班级信息的添加操作为例,说明采用Client CallBack方式实现AJAX的方法:
第一步,使需要完成AJAX效果的页面实现ICallback Event Handler:
public partial class Classes Manage :System.Web.UI.Page,System.Web.UI.ICallback Event Handler
既然需要实现ICallback Event Handler接口,就要实现接口中定义的2个方法:GetCallback Result和RaiseCallback Event.第一个方法用来返回回调事件的结果,第二个方法用来处理回调事件.
班级管理页面中,这2个方法的核心实现如下:
public string Get Callback Result()
{
return builder.ToString();//builder 为Classes Manage类的成员变量
}
public void RaiseCallback Event(string event Argument)
{
//Begin实现班级信息的添加,重新绑定数据显示列表
BLL.classes bc = new Maticsoft.BLL.classes();//创建班级的业务逻辑层对象
Model.classes mc=new Maticsoft.Model.classes();//创建班级实体
mc.classid= GetId();
mc.classname = Request.Form\["txt-ClassName"\].ToString();
mc.proid=ddlPro.Selected Value;
bc.Add(mc);//调用业务逻辑层添加班级信息的方法,完成添加操作
Grid View1.DataSource = bc.Get All List().Tables\[0\].Default View ;
Grid View1.DataBind();
//End
//以下代码将Grid View?转换成 HTML流,存到builder中,在GetCallBack Result时传回客户端
System.IO.String Writer sw = new System.IO.StringWriter();
Html Text Writer htw=new Html Text-Writer(sw);
Grid View1.RenderControl(htw);
builder.Append(sw.ToString());
}
第二步,需要在aspx文件中注册回调方法.
(1)在<Head>标签内添加以下Javascript代码:
function ReceiveServer Data(arg,context)
{
document.get ElementById ("msg_display").inner HTML=arg;//将服务器传回的Grid View的HTML码显示在名为“msg_display”的DIV标签内.
}
function Call TheServer(arg,context)
{
<% =ClientScript.GetCallback Event Reference(this,"arg","ReceiveServer Data","context")%>//注册回调方法
}
(2)处理添加按钮的onclick客户端事件处理函数为:Call TheServer.
<input type="button"value="添加"onclick="Call TheServer(')"id="Button1"/>
在Call TheServer函数中对回调函数注册后,当用户点击“添加”按钮时,服务器端就会执行Raise-Callback Event方法,即处理数据的插入操作,重新绑定Grid View的数据源,以及将Grid View转换成新的HTML码,最后以GetCallback Result返回给客户端,而客户端就会以ReceiveServer Data函数接收这个HTML码,将其放到合适的位置中.在整个处理过程中,Grid View的更新是无刷新的.
所谓服务器推送技术,就是当客户端提出一个请求后,即和服务器建立一个永久的连接,而后服务器会根据客户端的请求主动把数据推给客户端,这个推的过程是不间断的.由服务器推向客户端的数据在客户机的浏览器上会不断呈现出新的内容[4].
在本系统中,有2个功能在实现时用到了服务器推送技术:其一是站内短信的即时提醒功能,本功能做到了当站内在线的用户给他人发送短信时,接收方可以实时获得新短消息的闪烁图片通知;其二是学生进行课题选报时所使用的课题列表页面,该页面要时刻根据所有同学的选报情况控制每个在线学生的课题列表中每个课题所在行的“创建课题组”和“加入课题组”按钮的可用状况,以避免在学生从进入课题列表页面到确定选报哪个题目并进行操作这段时间内,因其他同学已经报满了该题目而浪费学生的选题时间.
下面以站内短信即时提醒功能为例,说明服务器推送技术在本系统中的具体实现.本系统站内短信新消息的提醒是采用在母版页上显示闪烁的GIF图标来提醒用户的.母版页的核心代码如下:
在<head>标签中添加以下javascript:
<script type="text/javascript">
function SetContent()
{
window.document.get ElementById("div New Message").inner HTML="<a href='list My-New Message.aspx'><img width=30 height=20 src='imgs/message.gif'/></a>";
//在<body>中需要有一个名为div New Message的标签,该标签就是用来显示新消息提醒图标的
}
function init(){
var ifr1= new ActiveXObject("htmlfile");//创建htmlfile对象
ifr1.open();//打开该对象
var iDiv=ifr1.createElement("div");//在该htmlfile对象中创建一个div标签
ifr1.appendChild(iDiv);//将创建的div添加到htmlfile
ifr1.parent Window.SetContent=SetContent;//注册方法
iDiv.inner HTML = "<iframe src='message.aspx'></iframe>";//在上面创建的div里添加iframe
ifr1.close();//关闭htmlfile对象
setInterval(function(){},10000);//循环执行,因htmlfile对象存在超时的问题
}
init();执行init函数
</script>
在init函数中提到的message.aspx就是要和服务器保持长连接的页面,其后台C#代码如下 :
Application[Session["username"].ToString()]= Response;//Session["username"]会在用户登录时产生,存储用户名,该行代码的目的是保存每一个登录用户及其长连接页面的Response对象.
System.Threading.Thread.Sleep (System.Threading.Timeout.Infinite);//使该页面永不完成,以实现长连接
发送站内消息的发送按钮事件代码如下:
for (int i = 0;i < Application.All Keys.Length;i++)//遍历各在线用户的Response对象
{
string name= Application.All Keys[i];//获得Application的键,即用户名
Http Response Response=Application[name]as Http Response;//获得该用户的Response
if(Response!= null && Response.IsClientConnected)
for (int j= 0;j< cbl User List.Items.Count;j++)//遍历短信的目标用户列表if (cbl User List.Items [j].Selected&&cbl User List.Items[j].Value==name)
{//如果当前Response所属用户是短信接受人,则执行推送
Response.Write("<script>parent.SetContent()</script>");
Response.Flush();
}
e
lse
Application.Remove(name);
}
总体来说,服务器推送功能由3个重要的环节来实现:
(1)构造长连接页面,时刻保持与服务器的连接,随时接受服务器“推”来的数据;
(2)保管每一个长连接,推送时才能有目的地进行;
(3)需要htmlfile对象来避免下载进度条持续下载的缺陷.
本系统能够完成软件学院实践环节课题申报全业务过程的自动化管理,大大提高了工作效率,有效保证了数据的及时性和准确性.本系统自2006年开始投入试运行,4年间经过了3个版本的升级与完善,目前运行稳定,业务逻辑严谨,计算准确.
[1]李园,陈世平.MVC设计模式在ASP.NET平台中的应用[J].计算机工程与设计,2009(30):3180-3184.
[2]甄镭 .NET与设计模式[M].北京:电子工业出版社,2005.
[3]修桂华,李红光.AJAX技术在 ASP.NET开发中的应用[J].科技资讯,2009(33):7-8.
[4]Jason Bell,Mike Clark.ASP.NET程序员参考手册[M].北京:清华大学出版社,2002.
Designing and Realizing of ASP.NET Based Project Declaring System for Practicing Courses of Software College
ZHAO Dong,GAO Liang
(Zhongyuan University of Technology,Zhengzhou 450007,China)
This article discusses the framework,function modules and the key thchniques of project declaring system for practicing courses,which was designed from the real working flow of software college and aimed at robotization and informationization of project declaring.The system was designed and realized by ASP.NET,AJAX and C#.NET,which can automaticly process teacher’s opening project,manager’s auditing project,students’declaring project and teacher’s arrpoving students,which can improve the working efficiency of project declaring.
project declaring;practicing courses;3-tier application
TP315
A
10.3969/j.issn.1671-6906.2011.02.018
1671-6906(2011)02-0066-05
2011-02-27
赵 冬(1976-),女,河南郑州人,讲师,硕士.