在线考试系统实验报告_第1页
在线考试系统实验报告_第2页
在线考试系统实验报告_第3页
在线考试系统实验报告_第4页
在线考试系统实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/在线考试系统摘要通过考试系统WebExam是目前市场占有率较高.应用最广泛的远程网络学习考试软件.适合政府、行业及企业的各专业网上考试、作业、练习等应用。它采用Web方式.同时适用于局域网和Internet.无需安装客户端.即可实现网上考试、作业、练习、成绩排行等功能.并能够答卷保存、自动判分、成绩查询和分析等功能该系统同时拥有最开放的题库管理系统和最灵活的组卷系统.能够自动输出Word试卷.提供Excel题目导入导出、题库和试卷导入导出等设计.提供资源的快速收集和高度共享。在开发方法上.引入了当今流行的Microsoft.NetRemoting技术思想.把整个开发程分为需求分析、概要设计、详细设计、系统实现等步骤。该系统通过优化和再造管理流程.使人力资源的管理更为高效和科学.数据更为准确.从而将人事部门从繁重的、耗时的工作中解放出来.把精力集中到更高层的政策性工作中去。关键词在线考试系统;C#.net编程语言;VisualStudio2008;SQLServer2005数据库目录第1章绪论11.1课题研究背景11.2课题研究目的和意义1第2章系统分析概述22.1引言22.2系统需求分析22.3系统概述32.4VisualStudio2008的概述42.5SQLServer2005数据库的概述5第3章系统方案总体设计63.1系统设计思想及相关技术介绍63.1.1系统架构设计63.1.2系统总体模块功能设计6第4章数据库的设计84.1引言84.2数据库需求分析84.3数据库概念结构设计84.4数据库逻辑结构设计8第5章界面设计与实现105.1主页设计105.1.1实现目标105.1.2登录窗口105.1.3注册窗口125.2主要界面设计—用户登录信息画面135.2.1实现目标135.2.2主界面135.3主要界面设计——ADDQUESTION.ASPX175.3.1实现目标175.4主要界面设计——USERMANGEMENT.ASPX185.4.1实现目标18结论20致谢21参考文献22绪论课题研究背景近几年来.随着Internet的崛起.远程教育开始发展.普及网络教育的呼声日益高涨.其势头不亚于电子商务。联合国教科文组织1998年在其一项调查报告中:无论是发达国家还是发展中国家.都不同程度存在教育滞后于现实需要的问题.特别是第三世界国家.而普及远程教育.尤其是网络教育.不仅是解决这一问题的有效途径.而且将成为革新传统教育模式的重要动力。中国的网络教育也随Internet的发展而同步增长.同时.网络教育也为中国的教育事业开辟了新的天地。课题研究目的和意义随着网络技术的飞速发展.现在很多国外的大学和社会其他部门都已经开始设了远程教育。但是.远程教育的软件的开发目前还处于起步阶段.随着这项技术的不断深入发展.就要求有更好、更完善的软件系统到远程教育当中去.这就给软件设计人员提出了更高的设计要求。远程教育包括很多环节。例如.教学系统、考试系统、和答疑系统等等。其中一个很重要的环节是在线考试系统.同时.它也是最难实现的环节。在我国.远程教育以蓬勃发展起来。但目前学校和社会上的各种考试大都都采用传统的考试方法.在此方式下.组织一次考试.要经过五个步骤.即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然随着考试类型的不断增加和考试要求的不断提高.教师的工作量也越来越大.可以说传统的考试方法已经不能适用于现代考试的需要。随着计算机应用的迅猛发展.网络应用不断扩大.如远程教育和虚拟大学的出现等等.且这些应用正逐步深入到千家万户。人们迫切需要这些技术来进行在线考试.以减轻教师的工作的负担以及提高工作效率.与此同时提高了考试的质量.从而使考试更趋于公正、客观.更加激发学生的学习兴趣。第2章系统分析概述引言ASP.NET是微软公司最新推出的一种统一Web开发平台.与最新的数据访问技术ADO.NET一起可构建出强大、安全和可靠的企业级Web应用程序。ASP.NET的语法在很大程度上与ASP兼容.同时它还提供一种新的编程模型和结构.用于生成更安全、可伸缩和稳定的应用程序。采取了ASP.NET技术的系统在性能上有了很大的改善.主要表现在以下几方面:ü由于ASP页面每次打开都必须经过先编译后解释的过程.所以页面在反复打开时速度没有任何提升.而ASP.NET页面只需要一次编译后不需要重新编译.直到该页面被修改或Web应用程序重新启动。这使得在多次访问时速度有了极大的提升;ü由于ASP没有提供任何输出数据为内容的元件.所以在使用ASP撰写数据库页面时只能借助ADO的RecordSet对象逐笔读取记录.而ASP.NET通过ADO.NET提供的DataGrid等数据库元件可以直接和数据库联系;üASP.NET支持应用程序的实时更新.管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁.因此甚至在程序运行时文件就可以被覆盖.当文件更新后.系统会温和地转换到新的版本;üASP.NET采取"CodeBehind<代码分离>技术"方式编写代码使得代码更易于编写.结构更清晰.降低了系统开发与维护的复杂度和费用。系统需求分析系统开发的总体任务是实现在线考试的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成的。在线考试系统需要完成的功能主要有:用户的注册和登录;用户在线答题;对科目进行管理;对管理员进行试题的管理;以及个人信息管理功能。在数据库方面.利用关系数据库功能强大的查询语言对企业各类信息入库保存.按要求及时处理。该系统集录入、维护、查询、审核和各种处理为一体.各种操作可以通过菜单进行.操作快捷、方便.性能高效、强大;使用易懂、易会.形象增强的数据处理.用户均可根据需要自行使用。系统概述本系统是一个在线考试系统.在实施过程中主要实现以下目标:〔1界面友好、美观.体现在线考试系统的特点.而且操作简便。〔2各功能模块层次清晰.代码高效易懂。〔3添加和编辑简便、清晰.提高工作效率。〔4查询方便.数据存储安全可靠。〔5功能全面.实用性强。主要功能有:1.注册用户模块注册用户主要实现用户的登录功能和注册功能。在线测试模块在线测试是本系统的核心模块.不论是管理员还是普通用户都可以进行在线测试。在此页面中.可以选择不同的科目进行科目测试.也可以显示或者隐藏答案提示。科目管理模块只有管理员权限的用户登录才可以进入科目管理模块.在科目管理模块中.除了显示已有己。试题管理模块只有管理员权限的用户才可以进入试题管理模块。用户管理模块在用户管理模块中.管理员可以删除用户和修改用户信息。该页面没有增加用户功能.用户可以自己注册登录。个人信息修改模块普通用户登陆后可以进入个人信息修改模块.修改个人密码、身份证号码和E-mail等信息。开发环境的选择方法目前.用于开发数据库管理信息系统的编程语言很多.比如Delphi、PowerBuilder、VisualC++、Java、VisualBasic6及VB.NET等等.而用于后台数据库管理的DBMS也有很多.比如有Oracle、MSSQLSERVER、SYBASE、INFORMIX、DB2、VISUALFOXPRO、ACCESS等等。本人根据秦晓燕老师的布置要求.采用面向对象的软件开发方法来实现此在线考试软件.系统开发工具我们选择了能够跨平台的开发工具VisualStudio2008。在前台操作与后台数据库处理的连接上.主要采用ADO.NET技术和SQLServer2005数据库.运用客户机服务器模式〔C/S配合功能强大的SQL查询语言实现预定的功能需求。VisualStudio2008的概述VisualStudio2008是一个全面集成的开发环境.用于编写.调试代码.把代码编译为程序集进行发布.实际上.VisualStudio提供了非常专业的多文档界面应用程序.在该应用程序中可以进行与开发代码相关的任何操作.它提供了:文本编辑器:在文本编辑器中.可以编写C#代码〔以及VB2005.J#和C++代码。这个文本编辑器相当复杂。代码的设计视图编辑器:它可以在项目中可视化的放置用户界面和数据访问控件。此时VisualStudio会自动在源文件中添加必要的C#代码.在项目中实例化这些控件。支持窗口:它们可以查看修改项目的各个方面。也可以使用这些窗口指定编译选项。在环境中编译:可以只选择一个菜单选项编译项目.而不必在命令行上运行C#编译器。VisualStudio会调用C#编译器。集成的调试程序:编程的本质是代码在第一次运行时.一般不会正确执行。也许在第二次、第三次才能正确运行。VisualStudio无缝的链接到一个调试程序上.可以在该调试环境中设置断点.观察变量。集成的MSDN帮助:VisualStudio可以在IDE中调用MSDN文档说明。访问其他程序:VisualStudio还能调用许多其他工具来查看和修改计算机或网络的一些内容.而无需退出开发环境。SQLServer2005数据库的概述SQLSevrer2005是一个C/S体系结构的关系数据库管理系统.它使Transact—SQL语言在客户和SQLServer之间发送处理请求.SQLServer利用C/S体系结构把工作分成两部分:客户端负责逻辑处理把数据呈现给用户.SQLServer管理数据库。SQLServer用Transact—SQL作为它的数据库查询和编程语言.使用Transact—SQL能够方便地存取数据、查询、更新和管理关系数据库。第3章系统方案总体设计系统设计思想及相关技术介绍系统架构设计首先用户登录.如果登陆成功系统检测用户类型.用户类型分为两种:普通用户和管理员。普通用户登录后只能进行在线答题和个人信息管理.在线答题时可以选择科目.可以显示和隐藏答案提示.模块测试后可以重做答错的题。管理员身份登录功能较多.除了可以在线答题外.还可以进行科目管理、试题管理和用户管理.科目管理包括增加、删除、修改科目.试题管理同样是增、删、改操作;用户管理中只能删除和修改用户信息.增加用户在注册用户功能中完成。图3-1在线考试系统功能框架系统总体模块功能设计经过对整个系统的分析.可以得出以下功能模块.如图3-3所示:登陆者模块:面向登陆者。可以先进行注册.再实现登录功能.进而进行在线考试。管理员模块:面向管理员。可以对考题进行添加、删除、修改和更新功能;可以进行答题的测试;科目的管理;题库的管理;以及对用户的管理。图3-3功能模块图第4章数据库的设计4.1引言数据库是一个应用系统的核心.数据库设计的好坏直接关系到应用系统的执行效率.数据的一致性和完整性.设计数据库系统时应该首先充分了解用户各个方面的需求.包括现有的以及将来可能增加的需求.数据库设计一般包括以下几个步骤:数据库需求分析数据库概念结构设计数据库逻辑结构设计数据库需求分析数据库需求分析就是要了解在这个应用系统中.用户需要查询、更新、删除和保存哪些数据.收集基本数据、数据结构以及数据处理的流程.组成一份详尽的数据字典.为后面的具体设计打下基础。通在线考试系统的数据库管理要进行各种各样的数据输入和导出.提供各类信息的添加、删除、修改和更新等功能。通过上述对系统的设计分析.根据在线考试系统的需求.共需设计以下五种信息:〔1用户注册信息。〔2科目管理信息。〔3试题管理信息。〔4用户管理信息。〔5个人信息管理。数据库概念结构设计等到了上面的数据项和数据结构以后.就可以设计出能够满足用户需求的各种实体以及实体之间的关系.为后面的数据库逻辑结构设计打下基础。这些实体包括各种具体信息.通过相互之间的作用形成数据流动。数据库逻辑结构设计通过调查分析各种资料.根据本管理系统用户需要操作和处理的各种数据.对数据表进行了分析。确定在数据库中存储的各种数据之间的关系以及数据类型.列举出部分数据表的关系如下:1.用户信息表〔User包括的数据项有:用户名、密码、性别、身份证号码、电子邮箱、角色编号等。〔如表4-1所示表4-1用户信息表角色表〔Role中的字段有角色编号、角色名。〔如表4-2所示表4-22.角色表〔Course中的字段有课程编号和课程名以及两个备用字段。〔如图4-3所示表4-3课程表角色表试题表〔question中的字段有题号、课程编号、题干、A答案、B答案、C答案、D答案、正确答案。〔如表4-4所示表4-4角色表第5章界面设计与实现主页设计5.1.1实现目标程序启动后.进入登陆窗体.用户输入用户名和密码.然后进行登录。同时可以按下取消按钮退出本系统.登录界面模块中主要实现如下功能:〔1可进行选择用户身份.支持鼠标操作。〔2用户名和密码验证成功后.进入主界面。〔3用户名错误或密码错误提醒并返回输入有误。5-1主页面5.1.2登录窗口5-2登录窗口在登录过程中.系统会首先根据画面上用户输入的内容进行验证检查.相关代码如下:stringconn=ConfigurationManager.ConnectionStrings["WebTestConnectionString"].ConnectionString;protectedvoidtxtRegist_Click<objectsender,EventArgse>{Response.Redirect<"Regist.aspx">;}protectedvoidtxtLogin_Click<objectsender,EventArgse>{SqlConnectioncon=newSqlConnection<conn>;stringstrSql="selectcount<*>from[user]whereuserName='"+txtName.Text+"'andpassword='"+this.txtPassword.Text+"'";SqlCommandcom=newSqlCommand<strSql,con>;con.Open<>;intnum=<int>com.ExecuteScalar<>;if<num==0>{Response.Write<"<scriptlanguage='javascript'>alert<'密码错误!'>;</script>">;return;}strSql="selectroleIDfrom[user]whereuserName='"+txtName.Text+"'";try{com.CommandText=strSql;SqlDataReadersdr=com.ExecuteReader<>;if<sdr.Read<>>{strings=sdr["roleID"].ToString<>;Session["roleID"]=s;Session["userName"]=txtName.Text;Session["userPassword"]=txtPassword.Text;}sdr.Close<>;}catch<SqlExceptionex>{Response.Write<ex.ToString<>>;}finally{con.Close<>;}Response.Redirect<"Main.aspx">;如果验证通过.系统会连接数据库.进行数据正确性以及用户权限的检查.以上检查成功的情况下.就会进入本系统的主窗体.如果失败.跳出错误提示框。5.1.3注册窗口图5-3注册窗口在注册过程中.系统会自动检查用户注册的信息是否合法.相关代码如下:stringconn=ConfigurationManager.ConnectionStrings["WebTestConnectionString"].ConnectionString;protectedvoidbtnOK_Click<objectsender,EventArgse>{SqlConnectioncon=newSqlConnection<conn>;stringstrSql="selectcount<*>from[user]whereuserName='"+txtName.Text+"'";SqlCommandcom=newSqlCommand<strSql,con>;con.Open<>;intnum=<int>com.ExecuteScalar<>;if<num>0>{Response.Write<"<scriptlanguage='javascript'>alert<'表中存在记录!'>;</script>">;}else{stringname=txtName.Text;stringpassword=this.txtPassword.Text;stringsex="男";if<this.rbtnFemail.Checked>{sex="女";}stringidentity=txtIdentity.Text.ToString<>;stringemail=this.txtMail.Text.ToString<>;strSql="insertinto[user]<userName,password,sex,userIdentity,email,roleID>values<'"+name+"','"+password+"','"+sex+"','"+identity+"','"+email+"',1>";com=newSqlCommand<strSql,con>;com.ExecuteNonQuery<>;con.Close<>;Response.Write<"<scriptlanguage='javascript'>alert<'注册成功!返回登录页面'>;</script>">;//返回登陆页面Response.Redirect<"Login.aspx">;}}protectedvoidbtnCancel_Click<objectsender,EventArgse>{Response.Redirect<"Login.aspx">;}主要界面设计—用户登录信息画面5.2.1实现目标程序启动后.登录进入在线答题窗体.在管理模块中主要实现如下功能:〔1检索当前启用的组织结构相关的部门及员工信息。〔2对登陆者个人信息的管理。〔3对基本信息进行登录和修改操作。〔4考试科目即考试内容建立。〔5对考试信息的查询。5.2.2主界面图5-4在线考试主界面本界面为主操作界面。管理员通过登录界面的验证后.方能进入此界面。此画面可以进行考试各类信息的添加.更新和删除.以及用户信息查询等功能。点击显示答案后:图5-5答题测试界面相关主代码如下:protectedvoidPage_Load<objectsender,EventArgse>{if<!this.IsPostBack>{BindSubjectName<>;Bind<>;}}stringconn=ConfigurationManager.ConnectionStrings["WebTestConnectionString"].ConnectionString;privatevoidBindSubjectName<>{SqlConnectioncon=newSqlConnection<conn>;SqlDataAdaptersda=newSqlDataAdapter<"select*fromcourse",con>;DataSetds=newDataSet<>;sda.Fill<ds,"table">;ddlQuestionName.DataSource=ds.Tables["table"];ddlQuestionName.DataTextField="courseName";ddlQuestionName.DataValueField="courseID";ddlQuestionName.DataBind<>;}privatevoidBind<>{stringstr=ddlQuestionName.SelectedItem.Text.ToString<>;stringsql="selectq.*fromquestionq,coursecwhereq.courseID=c.courseIDandc.courseName='"+str+"'";SqlConnectioncon=newSqlConnection<conn>;SqlDataAdaptersda=newSqlDataAdapter<sql,con>;DataSetds=newDataSet<>;sda.Fill<ds,"table">;DataList1.DataKeyField="questionID";DataList1.DataSource=ds.Tables["table"];DataList1.DataBind<>;}protectedvoidbtnShowAnswer_Click<objectsender,EventArgse>{if<btnShowAnswer.Text=="显示答案">{for<inti=0;i<DataList1.Items.Count;i++>{<<Label><DataList1.Items[i].FindControl<"lblAnswer">>>.Visible=true;}btnShowAnswer.Text="隐藏答案";}else{for<inti=0;i<DataList1.Items.Count;i++>{<<Label><DataList1.Items[i].FindControl<"lblAnswer">>>.Visible=false;}btnShowAnswer.Text="显示答案";}}protectedvoidddlQuestionName_SelectedIndexChanged<objectsender,EventArgse>{Bind<>;}protectedvoidbtnFinish_Click<objectsender,EventArgse>{intcount=0;//答对的数目for<intindex=0;index<DataList1.Items.Count;index++>{stringlabelStr=<<Label><DataList1.Items[index].FindControl<"lblAnswer">>>.Text;stringrightAnswer=labelStr.Substring<labelStr.Length-1>;stringselectedRadioButton="";if<<<RadioButton><DataList1.Items[index].FindControl<"rbtn1">>>.Checked>{selectedRadioButton="A";}elseif<<<RadioButton><DataList1.Items[index].FindControl<"rbtn2">>>.Checked>{selectedRadioButton="B";}elseif<<<RadioButton><DataList1.Items[index].FindControl<"rbtn3">>>.Checked>{selectedRadioButton="C";}elseif<<<RadioButton><DataList1.Items[index].FindControl<"rbtn4">>>.Checked>{selectedRadioButton="D";}if<rightAnswer==selectedRadioButton>{count+=1;if<DataList1.Items[index].TabIndex>=100>{DataList1.Items[index].TabIndex-=100;}}else{DataList1.Items[index].TabIndex=<short><100+index>;}this.btnRedoError.Enabled=true;}lblResult.Text="答对"+count+"题,错"+<DataList1.Items.Count-count>+"题";}protectedvoidbtnRedo_Click<objectsender,EventArgse>{Response.Redirect<"ShowQuestion.aspx">;}protectedvoidbtnRedoError_Click<objectsender,EventArgse>{for<intindex=0;index<DataList1.Items.Count;index++>{if<DataList1.Items[index].TabIndex<100>{DataList1.Items[index].Visible=false;}}}}主要界面设计——ADDQUESTION.ASPX5.3.1实现目标图5-6科目管理当管理员登入系统后.进入信息添加页面.需要将相关考试信息录入考试系统中.方便用户进行考试。相关代码如下:privatevoidBindQuestionName<>{SqlConnectioncon=newSqlConnection<conn>;SqlDataAdaptersda=newSqlDataAdapter<"select*fromCourse",con>;DataSetds=newDataSet<>;sda.Fill<ds,"table">;ddlCourseName.DataSource=ds.Tables["table"];ddlCourseName.DataTextField="courseName";ddlCourseName.DataValueField="courseID";ddlCourseName.DataBind<>;}protectedvoidGridView1_RowEditing<objectsender,GridViewEditEventArgse>{stringcourseID=ddlCourseName.SelectedValue.ToString<>;stringquestionID=GridView1.Rows[e.NewEditIndex].Cells[0].Text.ToString<>.Trim<>;stringquestionContent=GridView1.Rows[e.NewEditIndex].Cells[1].Text.ToString<>.Trim<>;stringa1=GridView1.Rows[e.NewEditIndex].Cells[2].Text.ToString<>.Trim<>;stringa2=GridView1.Rows[e.NewEditIndex].Cells[3].Text.ToString<>.Trim<>;stringa3=GridView1.Rows[e.NewEditIndex].Cells[4].Text.ToString<>.Trim<>;stringa4=GridView1.Rows[e.NewEditIndex].Cells[5].Text.ToString<>.Trim<>;stringrightAnswer=GridView1.Rows[e.NewEditIndex].Cells[6].Text.ToString<>.Trim<>;//UpdateQuestionquestion=newUpdateQuestion<questionID,courseID,questionContent,a1,a2,a3,a4,rightAnswer>;stringstr="AddQuestion.aspx?courseID="+courseID+"&questionID="+questionID+"&questionContent="+questionContent+"&a1="+a1+"&a2="+a2+"&a3="+a3+"&a4="+a4+"&rightAnswer="+rightAnswer;Response.Redirect<str>;}主要界面设计——USERMANGEMENT.ASPX5.4.1实现目标图5-7用户管理界面管理员登录该界面后.对用户所注册的信息进行核实和管理。相关重要代码如下:privatevoidBind<>{SqlConnectioncon=newSqlConnection<conn>;SqlDataAdaptersda=newSqlDataAdapter<"select*from[user]",con>;DataSetds=newDataSet<>;sda.Fill<ds,"table">;GridView1.DataSource=ds.Tables["table"];GridView1.DataKeyNames=newstring[]{"userName"};GridView1.DataBind<>;}protectedvoidGridView1_RowDeleting<objectsender,GridViewDeleteEventArgse>{SqlConnectioncon=newSqlConnection<conn>;stringsqlString="deletefrom[user]whereuserName='"+GridView1.DataKeys[e.RowIndex].Value.ToString<>+"'";SqlCommandcom=newSqlCommand<sqlString,con>;con.Open<>;com.ExecuteNonQuery<>;con.Close<>;Bind<>;}protectedvoidGridView1_RowUpdating

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论