基于ASPNET网络考试系统的设计与实现_第1页
基于ASPNET网络考试系统的设计与实现_第2页
基于ASPNET网络考试系统的设计与实现_第3页
基于ASPNET网络考试系统的设计与实现_第4页
基于ASPNET网络考试系统的设计与实现_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、网络考试系统的设计与实现摘要:随着网络技术的不断进步和信息的广泛普及,网络教学与考试系统已经遍布于Internet网络的每个角落。本文将编写一个完整的在线考试系统向用户展示系统的开发过程以及软件设计的思路与技巧。网络考试系统实现了在线考试平台,功能包括教师出题、添加试卷、自动阅卷、学生在线考试和添加用户等功能,该平台的有2种身份的用户:教师和学生,根据用户的身份不同,登录系统后进入不同的页面。关键字:ASP.NET、网络考试系统、SQL Server1. 引言随着信息技术的飞速发展,以及向教育领域的逐步扩展,校园信息化建设的步伐日益加快。“利用信息技术来推动教学改革”是当前学校教育改革的一条重

2、要思想,是提高教学质量的具体措施,特别是随着各高校不断的扩大招生,教学资源的投入相对不足,这就对高校的教学工作和教学管理提出了新的要求。如何充分利用有限的资源,运用更加科学的管理方法和教学手段,提高工作效率,保证教学质量,提高办学效益,已成为各高校研究的一个重要课题。其中很重要的一个环节就是在线考试系统,同时,传统的考试方式已经不能适应职业学院学生自测的需要。本文按照软件工程的思想,对基于抽题式的在线考试系统进行了深入的研究,详细阐述了在线考试系统的体系结构,介绍了在线考试系统方案设计的步骤。2. 系统设计与分析2.1 需求分析根据网络考试系统的基本要求,本系统需要完成以下任务。²

3、能够判断用户的身份,并根据身份的不同进入不同的页面。² 能够实现在线添加试卷和试题的功能。² 能够实现在线考试成绩。² 能够实现查询考试分数的功能。² 能够实现在线答题的功能。² 能够实现添加用户的功能。2.2 总体设计网络考试系统分为教师模块和学生模块。教师模块包括了成绩列表、添加试卷和添加试题模块。学生考试模块包括成绩列表和在线考试模块。该系统的功能模块如图1所示。2.3 功能设计网络考试系统主要是实现试卷的添加、试题的添加、在线考试和成绩统计等功能。具体来说有:² 系统登录感觉用户身份的不同进入不同的页面,这里管理员、教师和学生

4、登录后分别进入不同的页面。² 教师首页² 教师首页为教师展示了所有的成绩信息,教师可以选择不同的科目查看学生的成绩,该页面还包括了添加试题模块的入口。² 学生首页包括了登录考生的所有分数以及所有准备考试的试卷,单击所要考试试卷相应的“进入考试”的链接就可进入到考试页面。² 在线考试学生单击“开始答题”按钮就可以显示试卷的内容,单击“交卷”就可以提交试题,此时试卷评阅功能已经完成,并进行记录。再次登记后可以看到本次考试的学生成绩。² 添加试题和试卷实现在线的添加试卷和试题的功能。网络考试系统登录教师功能模块学生功能模块成绩查询添加试卷添加试卷成绩

5、查询考试管理员功能模块添加用户教师身份学生身份管理员身份图1 系统功能模块3. 数据库设计与实现3.1 数据库需求分析网络考试系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操作上,包括用户信息、试卷信息、学生成绩信息和试题库信息,各部分的数据内容又有着内在的联系,针对该系统的数据特点,可以总结出如下的需求。² 系统用户分为管理员、教师和学生。² 用户信息记录用户的名称、密码和身份。² 成绩信息记录了学生的成绩信息。² 试卷信息记录了所有已经存在的试卷信息。² 试题库信息记录了试卷的内容。3.2 数据库概念结构设计经过数据库的需求分

6、析,就可以设计出满足需求的各种实体以及相互关系,再用实体-关系图,即E-R图将这些内容表达出来。本系统的E-R图包括用户信息实体E-R图如图2.1所示,学生成绩信息实体E-R图如图2.2所示,试卷信息实体E-R图如图2.3所示,试题库信息实体E-R图如图2.4所示。用户编号用户名密码身份图2.1 用户信息实体E-R图学生成绩编号学生姓名试卷名称成绩图2.2 学生成绩信息实体E-R图试卷编号名称总分考试时间图2.3 试卷信息实体E-R图试题库编号试卷名称试卷分数类型图2.4 试题库信息实体E-R图3.3 数据库的逻辑设计网络考试系统数据库TMS包括4张表,分别是用户信息表、学生成绩信息表试卷信息

7、表和试题库信息表。试题库信息表在系统中动态创建。² 用户信息表用户信息表(Users)记录了用户的详细信息,结构如表1所示。表1 用户信息表列名数据类型长度允许空UserIDInt4否UserNamenvarchar16否UserPwdnvarchar12否UserTypenvarchar50否² 学生成绩信息表学生成绩信息表(Scores)记录了学生的成绩信息,结构如表2所示。表2 学生成绩信息表列名数据类型长度允许空ScoreIDInt4否StuNamenvarchar16否PaperNamenvarchar50否TotalScoreint4否StuScoreint4否

8、TestTimeDatetime8否² 试卷信息表试卷信息表(Papers)记录了试卷的主要信息,结构如表3所示。表3试卷信息表列名数据类型长度允许空说明PaperIDInt4否PaperNamenvarchar16否PaperScoreInt4否默认值为0,开展用ScoreAutoInt4否默认值为0,开展用ScoreTeacherInt4否Teachernvarchar16否TotalTimenvarchar50否² 试题库信息表试题库信息表动态创建,记录了试卷中试题的信息,结构如表4所示。² 表4 试题库信息表列名数据类型长度允许空UserIDInt4否Us

9、erNamenvarchar16否UserPwdnvarchar12否UserTypenvarchar50否4. 网络考试系统的设计与实现4.1 登陆页面的设计与实现登陆页面实现用户的身份认证。管理员用户进入用户添加页面,教师登录后进入教师首页,学生登录后进入学生的首页,页面效果如图3所示。图3 登录页面登录页面主要是使用TextBox输入控件来让用户输入登录信息。该模块主要实现验证用户身份的功能,因此主要响应用户提交输入信息的事件,即“登录系统”按钮的单击事件。用户登录页面后台支持类(default.aspx.cs)主要代码如下所示。代码中使用Session对象记录了登录用户名,便于在以后p

10、rotected void Page_Load(object sender, EventArgs e) lblerr.Text = "" protected void btnlogin_Click(object sender, EventArgs e) if (tbxusername.Text != "" | tbxuserpwd.Text != "") /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"

11、SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); objconn.Open(); /创建命令对象 SqlCommand objcmd = new SqlCommand("UserLogin", objconn); /设定命令类型为存储过程 objcmd.CommandType = CommandType.StoredProcedure; /添加参数 /用户名 SqlParameter paramUserName = new SqlParameter("

12、UserName", SqlDbType.NVarChar, 16); paramUserName.Value = tbxusername.Text; objcmd.Parameters.Add(paramUserName); SqlParameter paramUserPwd = new SqlParameter("UserPwd", SqlDbType.NVarChar, 12); paramUserPwd.Value = tbxuserpwd.Text; objcmd.Parameters.Add(paramUserPwd); SqlDataReader d

13、r = objcmd.ExecuteReader(); if (dr.Read() Session"username" = dr"UserName".ToString(); string usertype = dr"UserType".ToString(); if (usertype = "student") Response.Redirect("students.aspx"); else if (usertype = "teacher") Response.Redirect

14、("teachers.aspx"); else if (usertype = "system") Response.Redirect("admin_user.aspx"); else lblerr.Text = "没有权限进入系统" else lblerr.Text = "请输入正确的用户名和密码" 4.2 添加用户页面添加用户是管理员用户的功能,可以实现查看用户信息和添加用户的功能。添加用户页面主要使用了TextBox控件、DropDownList控件、RequiredFieldValidat

15、or控件、Button控件、Label控件和GridView控件。添加用户页面首先将用户信息列表绑定到GridView控件上,当管理员输入用户信息时需要单击“添加用户”按钮实现添加用户的功能。添加用户页面的效果图如图4所示。图4 添加用户页面效果图添加用户页面的后台关键代码如下所示。protected void btnlogin_Click(object sender, EventArgs e) if (tbxusername.Text != "" | tbxuserpwd.Text != "") /读取数据库连接字符串 string settings

16、= Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); objconn.Open(); /创建命令对象 SqlCommand objcmd = new SqlCommand("UserLogin", objconn); /设定命令类型为存储过程 objcmd.CommandType = CommandType.StoredProcedure;

17、/添加参数 /用户名 SqlParameter paramUserName = new SqlParameter("UserName", SqlDbType.NVarChar, 16); paramUserName.Value = tbxusername.Text; objcmd.Parameters.Add(paramUserName); SqlParameter paramUserPwd = new SqlParameter("UserPwd", SqlDbType.NVarChar, 12); paramUserPwd.Value = tbxuse

18、rpwd.Text; objcmd.Parameters.Add(paramUserPwd); SqlDataReader dr = objcmd.ExecuteReader(); if (dr.Read() Session"username" = dr"UserName".ToString(); string usertype = dr"UserType".ToString(); if (usertype = "student") Response.Redirect("students.aspx&quo

19、t;); else if (usertype = "teacher") Response.Redirect("teachers.aspx"); else if (usertype = "system") Response.Redirect("admin_user.aspx"); else lblerr.Text = "没有权限进入系统" else lblerr.Text = "请输入正确的用户名和密码" 4.3 教师功能首页教师功能首页提供教师添加考试试卷和试题以及成绩统计分

20、析的入口,并显示考试成绩列表。教师功能页面的首页效果图如图5所示。图5 教师功能首页教师功能首页的后台主要代码如下所示。void Bind_PaperName() /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); objconn.Open(); String objsql = "Select

21、PaperName from Papers" SqlDataAdapter da = new SqlDataAdapter(objsql, objconn); /创建并填充DataSet DataSet ds = new DataSet(); da.Fill(ds, "Papers"); dplpapername.DataSource = ds; dplpapername.DataMember = "Papers" dplpapername.DataTextField = "PaperName" dplpapername.D

22、ataBind(); objconn.Close(); void Bind_Grid() /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); SqlCommand objcmd = new SqlCommand("TScore", objconn); /设定命令类型 objcmd.Co

23、mmandType = CommandType.StoredProcedure; /打开数据库连接 objconn.Open(); SqlDataReader result = objcmd.ExecuteReader(CommandBehavior.CloseConnection); dgdscore.DataSource = result; dgdscore.DataBind(); protected void btnanalysis_Click(object sender, System.EventArgs e) Response.Redirect("score_analysi

24、s.aspx"); protected void btnsearch_Click(object sender, System.EventArgs e) dgdscore.Visible = false; dgdpaper.Visible = true; /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settin

25、gs); String papername = dplpapername.SelectedValue.ToString(); SqlCommand objcmd = new SqlCommand("TScore1", objconn); /设定命令类型 objcmd.CommandType = CommandType.StoredProcedure; /打开数据库连接 objconn.Open(); SqlParameter paramPaperName = new SqlParameter("PaperName", SqlDbType.NVarChar

26、, 50); paramPaperName.Value = papername; objcmd.Parameters.Add(paramPaperName); SqlDataReader result = objcmd.ExecuteReader(CommandBehavior.CloseConnection); dgdpaper.DataSource = result; dgdpaper.DataBind(); 4.4 添加试卷页面添加试卷页面实现向数据库中添加一个新的以试卷名称命名的表,并提供向该试卷添加试题的入口。添加试卷页面主要是以了TextBox控件、RequireFieldVali

27、dator控件、Label控件和Button控件,页面效果图如图6所示。图6 添加试题页面效果图添加试卷的后台关键代码如下所示。protected void btnsave_Click(object sender, System.EventArgs e) try /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settin

28、gs);/打开数据库连接 objconn.Open(); /创建命令对象 SqlCommand objcmd = new SqlCommand("AddPaper", objconn); objcmd.CommandType = CommandType.StoredProcedure; /试卷名称 SqlParameter paramPaperName = new SqlParameter("PaperName", SqlDbType.NVarChar, 50); paramPaperName.Value = tbxpaper.Text; objcmd.

29、Parameters.Add(paramPaperName); /试卷名称 SqlParameter paramPaperScore = new SqlParameter("PaperScore", SqlDbType.Int); paramPaperScore.Value = tbxscore.Text; objcmd.Parameters.Add(paramPaperScore); /试卷名称 SqlParameter paramTeacher = new SqlParameter("Teacher", SqlDbType.NVarChar, 16)

30、; paramTeacher.Value = Session"username" objcmd.Parameters.Add(paramTeacher); /试卷名称 SqlParameter paramTotalTime = new SqlParameter("TotalTime", SqlDbType.NVarChar, 50); paramTotalTime.Value = tbxtime.Text; objcmd.Parameters.Add(paramTotalTime); objcmd.ExecuteNonQuery(); objconn.C

31、lose(); /创建表 CreateTable(); catch message.Text = "数据库可能已经存在,请单击【添加试题】按钮后进行操作" void CreateTable() /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings);/打开数据库连接 objconn.Open

32、(); String papername = tbxpaper.Text; String objsql; objsql = "Create Table " + papername; objsql = objsql + "(QuestionID int Primary Key," objsql = objsql + "QuestionType nvarchar(50)," objsql = objsql + "Question nvarchar(4000)," objsql = objsql + "Answ

33、er nvarchar(4000)," objsql = objsql + "Score int," objsql = objsql + "AutoFlag int Default 0)" /创建命令对象 SqlCommand objcmd = new SqlCommand(objsql, objconn); objcmd.ExecuteNonQuery(); objconn.Close(); 4.5 添加试题页面添加试题页面主要功能是将教师输入的试题内容添加到由Session“papername”对象传递过来的试卷表中。添加试题页面的效果图如

34、图7所示。图7 添加试题页面效果图添加试题后台关键代码如下所示。protected void btnsave_Click(object sender, System.EventArgs e) /获取问题的最大编号 /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); string getInsertID;

35、string papername; papername = Session"papername".ToString(); getInsertID = "select Max(QuestionID) from " getInsertID = getInsertID + papername; SqlCommand cmd0 = new SqlCommand(getInsertID, objconn); objconn.Open(); SqlDataReader objdr = cmd0.ExecuteReader(); objdr.Read(); int V

36、arid; if (objdr0.ToString() = "") Varid = 1; else Varid = Convert.ToInt32(objdr0.ToString() + 1; cmd0.Connection.Close(); string objsql; string qtype = dplqt.SelectedIndex.ToString(); string qcontent = tbxquestion.Text.ToString(); string qanswer = tbxanswer.Text.ToString(); int qscore = Co

37、nvert.ToInt32(tbxscore.Text); objsql = "Insert into " + papername; objsql = objsql + "(QuestionID,QuestionType,Question,Answer,Score) values(" objsql = objsql + Varid + "," objsql = objsql + qtype + "," objsql = objsql + "'"+qcontent + "'

38、;," objsql = objsql +"'"+ qanswer + "'," objsql = objsql + qscore + " )" /Response.Write(objsql); /Response.End(); objconn.Open(); /创建命令对象 SqlCommand objcmd = new SqlCommand(objsql, objconn); /执行数据库操作 objcmd.ExecuteNonQuery(); objconn.Close(); 4.6学生首页面学生首页为

39、登录后的学生用户提供成绩查询以及查询所有考试试卷功能。学生首页采用DataGrid数据绑定控件来绑定学生成绩信息和试卷信息,设计好的页面如图8所示。图8 学生首页效果图DataGrid控件的HTML代码如下所示。<tr> <td align="center"> <asp:DataGrid ID="dgdpaper" runat="server" AutoGenerateColumns="False" Width="712px"> <Columns>

40、 <asp:HyperLinkColumn DataNavigateUrlField="PaperID" DataNavigateUrlFormatString="Test.aspx?PaperID=0" DataTextField="PaperName" DataTextFormatString="进入考场" HeaderText="进入考场"></asp:HyperLinkColumn> <asp:BoundColumn DataField="Pape

41、rID" HeaderText="试卷编号"></asp:BoundColumn> <asp:BoundColumn DataField="PaperName" HeaderText="试卷名称"></asp:BoundColumn> <asp:BoundColumn DataField="PaperScore" HeaderText="试卷总分"></asp:BoundColumn> <asp:BoundColu

42、mn DataField="TotalTime" HeaderText="考试时间"></asp:BoundColumn> </Columns> </asp:DataGrid></td> </tr> <tr> <td> <asp:Label ID="lblstuname" runat="server"></asp:Label>考生:您的成绩如下</td> </tr> <tr

43、> <td align="center"> <asp:DataGrid ID="dgdscore" runat="server" AutoGenerateColumns="False" Width="616px"> <Columns> <asp:BoundColumn DataField="ScoreID" HeaderText="成绩编号"></asp:BoundColumn> <a

44、sp:BoundColumn DataField="PaperName" HeaderText="试卷名称"></asp:BoundColumn> <asp:BoundColumn DataField="TotalScore" HeaderText="总分"></asp:BoundColumn> <asp:BoundColumn DataField="StuScore" HeaderText="您的分数"></asp

45、:BoundColumn> <asp:BoundColumn DataField="TestTime" HeaderText="测试时间"></asp:BoundColumn> </Columns> </asp:DataGrid></td> </tr>学生首页后台关键代码如下所示。void Bind_Score() /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStri

46、ngs"SqlServices"); /创建数据库连接 SqlConnection objconn = new SqlConnection(settings); /打开数据库 objconn.Open(); /创建命令对象 SqlCommand objcmd = new SqlCommand("StuScore", objconn); /命令类型为存储过程 objcmd.CommandType = CommandType.StoredProcedure; /添加参数 /学生姓名 SqlParameter paramStuName = new SqlPar

47、ameter("UserName", SqlDbType.NVarChar, 16); paramStuName.Value = Session"username" objcmd.Parameters.Add(paramStuName); SqlDataReader result = objcmd.ExecuteReader(CommandBehavior.CloseConnection); dgdscore.DataSource = result; dgdscore.DataBind(); void Bind_Paper() /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection objconn = ne

温馨提示

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

评论

0/150

提交评论