C语言在线考试系统的设计与实现
2013-04-29徐晓君
徐晓君
摘 要: 根据实际教学需求,设计并实现了C语言在线考试系统。系统的开发以采用结构化设计思想为指导,文章针对系统的分析、设计、数据库设计、关键模块的实现等进行了阐述。系统在实际试用中运行良好,具有一定的实用价值和推广价值。
关键词: C语言 在线考试系统 设计 实现
1.系统开发的背景及意义
考试作为教学评测的一种主要手段,其规范性、科学性及考试工作的组织、管理等直接关系到教学测评的准确性和客观性,影响教学质量。目前,在我校,C语言程序设计课程作为公共基础必修课,全校大面积开设C语言程序设计课程,每学期期末考试时,面临大量问题,包括组卷、试卷印刷、试卷装订、试卷批阅、阅卷审核、合分、成绩计算及成绩录入等,不仅花费时间、金钱,而且造成大量纸张浪费,增加授课教师的工作量。同时,人工阅卷、合分工作不仅速度慢,而且存在误判的情况,很容易造成教学事故。
鉴于以上情况,开发一个C语言考试系统就显得非常必要。
2.系统分析与设计
经过对我校C语言程序设计课程的教学与考试情况的分析,我认为本系统应分为三个模块、学生端模块、教师端模块、管理员端模块。不同模块实现不同的功能,分别针对不同用户对象。
2.1学生端模块
学生模块主要包括学生个人信息查看、章节练习、章节自测、模拟考试、在线考试、成绩查询等模块。
学生在登录后,通过个人信息管理模块可以查看个人信息,若有错误,则可以向管理员传递正确信息,经管理员核查后修改;章节练习模块中存放各章节所有习题,学生可根据学习进度选择章节进行巩固与练习,若遇到不会的题目,学生则可查看本题参考答案;章节自测模块可对本章节学习情况进行测试,题型包括选择题、填空题、程序设计题等类型。在答题过程中,在学生答完题点击提交后可自动判选择题、填空题、程序分析题的分值,同时给出题目答案,而程序设计题则会给出本题的参考答案;模拟考试模块可从题库中抽题,自动组卷,功能与章节自测模块类似,不同之处在于模拟考试模块所抽取的题是所有章节的题目;在线测试模块在期末考试时才对学生开放,完成期末考试。该模块读取数据库中期末试题,并按随机顺序显示,当学生提交后,可自动判别客观题成绩,并存放于数据库中,程序设计题则是记录学生答题结果,由教师评阅。
2.2教师模块
教师模块主要包括教师个人信息查看、题库管理、考试安排管理、试卷组卷管理、阅卷管理、成绩管理等模块。
教师在登录后,通过题库管理模块可进行题目管理,对题库进行维护;通过考试安排管理模块可进行考试安排;通过试卷管理模块既可对以往试卷进行查看,又可完成本学期试卷组卷及试卷修改工作,在组卷时,既可以根据各章节知识点进行组试卷,又可以随机组卷;通过阅卷管理模块可对学生提交的试卷的编程题进行判分,将分值录入;通过成绩管理模块,教师可按班级或学生学号姓名查看期末考试成绩,也可录入平时成绩,按一定的比例(如平时成绩占20%,期末成绩占80%)计算学生综合成绩,并分析成绩,包括各分数段学生的比例、班级平均成绩、最高分、最低分等,而成绩一旦录入并保存后,不能再对成绩进行修改,若需要修改,则可向管理员申请修改。
2.3管理员模块
管理员模块主要包括用户信息管理、班级管理、院系管理、课程管理、授课管理、试卷管理、成绩管理、网站信息管理。
用户信息管理可对学生、教师的信息进行管理并进行权限设置;班级管理可对本学期开课班级进行管理;授课管理可将教师与授课班级关联,以便进行考试安排、成绩管理等;试卷管理可进行试卷的保存,另当教师发现组好的试卷存在错误时可通过此模块由管理员进行试卷的修改;成绩管理模块可对成绩进行统计、分析,同时,当教师录入成绩有误需要修改时,可通过该模块进行修改;通过网站信息管理可更新网站内容,包括公告管理、新闻管理、共享资料管理等。
3.数据库设计
数据库设计根据用户的需求设计数据库结构及应用系统的过程,数据库设计的优劣直接影响系统的质量的高低和运行效果的优劣。数据库设计经过明确用户需求、概念设计、软件结构设计、数据库实施等步骤,数据库设计时,以规范化设计理论为指导,力求建立一个完整、独立、共享、冗余小、安全有效的数据库系统。本系统中的表主要包括:(1)学生基本信息表:学生ID、学号、学生姓名、班级ID等;(2)成绩单表:考试ID、课程ID、学号、选择题成绩、填空题成绩、程序设计题成绩、平时成绩;(3)章节信息表:章节ID、章节名;(4)知识点:知识点ID、所属章节、知识点名;(5)题目知识点:题库中题号、知识点ID;(6)选择题题库表:题库中题号、题干、选项A、选项B、选项C、选项D、参考答案、难易程度;(7)考试安排表:考试ID、考试名称、考试描述、考试开始时间、考试结束时间、班级ID;(8)组卷表:考试ID、选择题分值、选择题数量、填空题分值、填空题数量、程序设计题分值、程序设计题分值、程序设计题数量、试卷总分;(9)试卷选择题知识点分配表:考试ID、章节ID、数量;(10)试卷选择题表:考试ID、试卷中题号、题库中题号;(11)学生选择题答题表:学号、考试ID、试卷中题号、答案等。
4.关键模块的实现
本系统在开发时选用了asp.net、B/S、ODBC作为开发技术,所采用的开发软件主要有Macromedia Dreamweaver 8,Adobe Photoshop CS3 Extended,Microsoft Visual Studio 2008等,数据库方面考虑到与windows xp兼容性及所开发的系统一些信息的数量,所以选择Microsoft SQL Server 2005。服务器采用windows自带IIS。
4.1个人信息管理
学生登录后可以查看个人基本信息,并且可以进行修改重新保存数据库。此模块实现需要登录者信息,根据登录者学号查询数据库并且返回到用户界面,所以用到传登录者信息用Session["sno"],然后建立一个强类型dataset为DataSetStudentInf.xsd,并建立一个方法为GetDataBySno(sno)。
4.2成绩查询
此模块实现是学生对自己的成绩查询,学生根据自己的学号、姓名进行查询得到自己C语言成绩及排名。为此建立一个强类型dataset为DataSetReports.xsd,建立一个方法为GetDataByNoName(Sno.,Sname),其sql语句为SELECT Sno,Sname,AllGrade,Sort,ChoiceG,VacancyG,DesignG FROM dbo.T_Reports where Sno=@Sno and Sname=@Sname。
4.3阅卷管理
此模块实现对在线考试试卷的管理,教师根据学号姓名,提取试卷,阅批学生试卷,并且实现对成绩的加和。选择题可以实现自动评分,其他需要教师阅卷。实现选择题自动评分代码如下:
protected void btnAuto_Click(object sender,EventArgs e,int fz)
{
int sum = 0;
foreach (RepeaterItem item in rpChoice.Items)
{
Label lbCA = (Label)item.FindControl("lbCA");
Label lbRCA = (Label)item.FindControl("lbRCA");
if (lbCA.Text == lbRCA.Text)
{
sum = sum + fz;
}
}
txtChoiceG.Text = sum.ToString();
}
5.系统测试
软件测试的目的是发现程序中的错误而执行程序的过程,通过实施完善的软件测试,可以提高软件质量。针对本系统,进行了功能测试,确保测试模块功能的正常。其中,对导航栏、用户登录、在线考试、组卷等模块进行了测试,主要采取的方法为等价类划分方法;系统进行了用户界面测试,确保用户界面友好,测试的内容包括页面之间的切换、页面的对象及特征(如菜单、大小、位置、文本内容等)符合标准。
6.结语
经过调研、系统分析、设计与实现,本系统基本能够满足学生、教师对在线考试系统的需求,使用方便,界面友好,功能较为完善,可以减轻教师工作量,提高工作效率,具有一定的实用价值和推广价值,但是本系统中也存在一定的不足之处,如系统效率、访问人数等。随着计算机技术及教学情况的发展,本系统会逐步完善。
参考文献:
[1]杨鹏.基于Web的C语言考试系统设计[J].中国科技信息,2010(5).
[2]王娜.基于ASP.NET技术的在线考试系统的设计与实现[J].科技信息,2010(7).
[3]刘洁.基于Web环境的在线考试系统[J].黑龙江科技信息,2011(15).