1 需求分析
为了使学生能更好的模拟考试;也为了减轻老师出卷、阅卷的工作强度,提高阅卷效率和准确性,通过考试的录入或导入,可丰富试题库,开发了网上考试系统。
2 系统设计
2.1 功能分析
网上考试系统主要分教师管理模块、学生管理模块及用户管理模块三大模块。如图1网上考试系统功能模块图所示。
图1 系统功能图
教师模块:教师登录系统后可添加科目名称(或选择已有的科目)然后订制本科目的试卷;也可对已有的试题进行维护,定制试卷完成后单击确定,可随机抽出试题,并把试题列出来,若对抽取的试题不满意,可重新定制试卷,然后再抽取试题,满意后,鼠标单击存盘按钮后,生成的试卷后存入数据库,新定制的考题默认是处于可用状态的,也可修改试题的状态,改为不可用,若不可用学生登录时不能看到这套试题;教师还可以选择进行本次考试的学生信息,并按学生信息按排考场等信息(如图2考试系统流程所示)。
图2 数据库关系图
学生模块:分真实考试和模拟考试(练习)两种情况,若是真实考试,考试时教师可只让一套试题可用,供学生考试;学生登录后从定制好的试题中随机生成题号(试题是一样的,顺序不一样),然后可做题,考试过程中是倒计时的,学生可通过单击交卷按钮提前交卷,也可等考试时间到后,计算机强制交卷。如果是模拟考试,教师通过后台可设多套题可用,这时学生登录时通过下拉框选择试题。模拟考试考完后还可以查询考试的得分及每个小题的总分及得失分情况。
用户管理模块主要是权限分配与管理,通过系统管理员可添加教师及导入学生信息等
2.2 数据库组织与设计
数据库的设计符合数据设计范式的第一范式、第二范式和第三范式,数据库的实现用的是Microsoft SQL Server2005,数据库表间的关系详见图2数据库关系图。
3 系统实现
3.1 开发工具的选择
网上考试系统采用了微软的集成开发工具Visual Studio.NET,版本是4.0、数据库是微软的SQL Server;用C#语言编写服务器端后台程序程序;系统采用的DIV+CSS+TABLE混合布局,客户端的脚本语言用JavaScript脚本;这样的开发环境配置,具有较高的开发效率。
3.2 系统运行界面
系统运行界面分学生登录界面、学生考试界面(如图3学生考试界面)和教师后台管理界面,下面列出了学生考试界面。
图3 学生考试界面
学生登录后弹出“单击开始考试,并进入倒计时”对话框,学生确定后开始微电子论文发表考试并倒计时(如图2考试系统界面所示[第一论文 网 www. dylw. nET 欢迎光临])。右侧有考试题号及简单的使用说明,没有做的题用灰色按钮显示,已做的题用蓝色按钮显示,不会做的题单击鼠标右键用绿色按钮显示,正在做的题用红色按钮显示,通过题号着色[1],这样正个试题的题型、题量及做题情况从右侧按钮一目了然,不会出现漏题等现象,便与学生考试。
3.3 学生考试成绩导出到excel的实现
Scores score = new Scores(); //创建Scores对象
DataSet ds = score.QueryScore();
DataTable DT = ds.Tables[0]; //调用QueryScore方法查询成绩并将查询结果放到DataSet数据集中
string NewFileName = Server.MapPath("Temp/" +DateTime.Now. ToString("yyyyMMddHHmmss") + ".xls");
File.Copy(Server.MapPath("../Module01.xls"), NewFileName, true);
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + NewFileName + ";Extended Properties='Excel 8.0;'";
using(OleDbConnection Conn = new OleDbConnection(strConn))
{ Conn.Open();
OleDbCommand Cmd = new OleDbCommand("", Conn);
foreach (DataRow DR in DT.Rows)
{ foreach (DataRow DR in DT.Rows)
{
StringBuilder sb = new StringBuilder("insert into [Sheet1$]");
sb.Append("([学号],[用户姓名],[班级],[试卷],[成绩],[考试时间]) values(");
sb.Append(DR["stuID"] + "',"+UserName"] + "',"+ DR["className"] + "',");
sb.Append(DR["PaperName"] + "',"+DR["Score"] + "',"+ DR["ExamTime"] + "')");
Cmd.CommandText = sb.ToString();
Cmd.ExecuteNonQuery();
} } }
System.IO.FileStream Reader = System.IO.File.OpenRead(NewFileName);
long Length = Reader.Length;
Response.Buffer = false;
Response.AddHeader("Connection", "Keep-Alive");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename="+Server.UrlEncode("学生成绩.xls"));
Response.AddHeader("Content-Length", Length.ToString());
byte[] Buffer = new Byte[10000];//存放欲发送数据的缓冲区
int ByteToRead; //每次实际读取的字节数
while (Length > 0) //剩余字节数不为零,继续传送
{ if (Response.IsClientConnected) //客户端浏览器还打开着,继续传送
{ ByteToRead = Reader.Read(Buffer, 0, 10000); //往缓冲区读入数据
Response.OutputStream.Write(Buffer, 0, ByteToRead); //把缓冲区的数据写入客户端浏览器 Response.Flush(); //立即写入客户端
Length -= ByteToRead; //剩余字节数减少
} else //客户端浏览器已经断开,阻止继续循环
{ Length = -1;
} }
4 考试流程
系统的考试流程共分两个模块:教师管理和学生考试。(考试系统流程图如图4所示)
5 小结
本系统使用 微软的开发工具,具有开发效率高,安全性好等特点,同时内容更新方便,便与维护,性能稳定,并且具有较好的可移植性和可扩展性。
【参考文献】
[1]任清元.网络考试系统中基于NET的题号着色问题研究与应用[J].现代计算机,2010(7).