【摘 要】本文阐述了考试系统的功能分析、数据库设计及考试流程、阐述了学生考试时题号按钮颜色的不同防止漏题的现象,最后给出了学生成绩导出到excel的完整代码,具有一定的实用性、推广性和参考价值.
【关 键 词 】.NET;网上考试系统;软件设计
1.需求分析
为了使学生能更好的模拟考试;也为了减轻老师出卷、阅卷的工作强度,提高阅卷效率和准确性,通过考试的录入或导入,可丰富试题库,开发了网上考试系统.
有关论文范文主题研究: | 关于考试的论文范例 | 大学生适用: | 自考毕业论文、硕士毕业论文 |
---|---|---|---|
相关参考文献下载数量: | 40 | 写作解决问题: | 怎么写 |
毕业论文开题报告: | 标准论文格式、论文前言 | 职称论文适用: | 技师论文、职称评中级 |
所属大学生专业类别: | 怎么写 | 论文题目推荐度: | 免费选题 |
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混合布局,客户端的脚本语言用JaScript脚本;这样的开发环境配置,具有较高的开发效率.
3.2 系统运行界面
系统运行界面分学生登录界面、学生考试界面(如图3学生考试界面)和教师后台管理界面,下面列出了学生考试界面.
图3 学生考试界面
学生登录后弹出“单击开始考试,并进入倒计时”对话框,学生确定后开始考试并倒计时(如图2考试系统界面所示).右侧有考试题号及简单的使用说明,没有做的题用灰色按钮显示,已做的题用蓝色按钮显示,不会做的题单击鼠标右键用绿色按钮显示,正在做的题用红色按钮显示,通过题号着色[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).
[2]陶国荣.jQuery权威指南[M].北京:机械工业出版社,2013.
[3]郑齐心.等.ASP.NET项目开发案例全程实录[M].北京:清华大学出版社,2011.
[责任编辑:孙珊珊]