




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章 在线考试系统(C# 3.5+Microsoft SQL Server 2000实现) 482通过阅读本系统设计,读者可以学到:验证不同身份的登录用户。随机抽取试题。如何实现考试计时功能如何实现试题无刷新如何实现系统自动评分合理地创建后台管理11.1 开发背景 48311.2 系统分析 48311.2.1 需求分析 48311.2.2 系统功能描述 483为了保障整个系统的安全性,在线考试系统实现了分类验证的登录模块,通过此模块,可以对不同身份的登录用户进行验证,确保了不同身份的用户操作系统。在抽取试题上,系统使用随机抽取试题的方式,体现了考试的客观与公正。当考生答题完毕之后,提交试卷即可得知本次考试的得分,体现系统的高效性。在后台管理上,分后台管理员管理模块和试题管理模块。分别适应不同的用户,前者只有系统的高级管理员才能进入,对整个系统进行管理。而后者只允许教师登录,教师可以对自己任教的科目试题进行修改,并且可以查看所有参加过自己任教科目的学生成绩。11.2.3 可行性分析 483根据GB8567-2006计算机软件文档编制规范中可行性分析的要求,指定可行性研究报表如下:11.2.4 编写项目计划书 48411.3 系统设计 48611.3.1 系统目标 486本系统属于小型的在线考试系统,可以从数据库中随机抽取试题,并且可以对考生的答案评分。本系统采取人机交互的方式,界面美观友好,信息查询方便灵活,数据存储安全可靠。实现从数据库中随机抽取试题。对用户输入的数据,进行严格的数据校验,尽可能地避免人为错误。实现对考试结果自动评分。实现教师和后台管理员对试题信息单独管理。系统应最大限度地实现易维护性和易操作性。11.3.2 系统功能结构 48611.3.3 系统预览 487l 管理员权限输入账号、密码后进入管理员管理界面如图1.5所示。图1.5 管理员管理界面 。(7)单击“科目信息管理”/“考试科目设置”菜单项,对考试科目信息进行添加操作,如图1.6所示。图1.6 考试科目设置(8)单击“考试结果管理”/“考试结果”菜单项,对考试结果进行查询及删除操作,如图1.7所示。图1.7 考试结果(9)单击“管理员信息维护”/“修改密码”菜单项,对管理员操作密码进行修改操作。l 学生权限学生登录后,只能进行考试答题操作,如图1.8所示。图1.8 学生考试l 教师权限教师登录后,可对试题基本信息进行添加、修改、查询及删除操作。同时对学生考试成绩进行查询及删除操作。如果教师对现有的密码不满意,还以修改自己的密码,如图1.9所示。图1.9 教师权限11.3.4 业务流程图 488在线考试系统业务流程图如下:11.3.5 程序运行环境 489本系统对其运行环境有一定的要求,具体如下:系统开发平台:Microsoft Visual Studio2008系统开发语言:C#数据库管理系统软件:Microsoft SQL Server 2005运行平台:Windows XP(SP2)以及以上版本运行环境:Microsoft.NET Framework SDK v3.5分辨率:最佳效果1024*768像素11.3.6 数据库设计 489dbo.tb_Admin存储管理员信息dbo.tb_Lesson存储课程信息dbo.tb_score存储考试成绩信息dbo.tb_Student存储学生信息dbo.tb_Teacher存储教师信息dbo.tb_Test存储试题信息11.3.7 数据库概念设计 489即描绘各个数据表的实体E-T图11.3.8 数据库逻辑结构设计 49011.3.9 文件夹组织结构 492每个网站都会有相应的文件夹组织结构,如网站中网页数目很多,可以将所有的网页及资源放在不同的文件夹中。如果网站中网页不是很多,可以将图片、公共类或者程序资源文件放在相应的文件夹中,而网页可以直接放在网站根目录下。本系统是按照前者组织文件夹结构排列的。11.4 公共类设计 49311.5 登录模块设计 49511.5.1 登录模块概述 495不是所有人都可以参加在线考试系统,系统默认是不允许匿名登录的,只有使用管理员分配的账号和密码才能登录。11.5.2 登录模块技术分析 495登录模块中,使用了验证码技术来防止用机器人软件反复自动登录。该技术是通过Random类实现的。Random类:表示伪随机生成器,一种能够产生满足某些随机性统计要求的数字序列的设备,该类中最常用的是Random.Next方法。Random.Next方法用于返回一个指定范围内的随机数。语法如下:public virtual int Next (int minValue,int maxValue)参数说明:minValue:返回随机数下界。maxValue:返回随机数上界。返回值:一个大于或等于minValue且小于maxValue的32位带符号整数。11.5.3 登录模块实现过程 49611.6 随机抽取试题模块设计 49711.6.1 随机抽取试题模块概述 49711.6.2 随机抽取试题模块技术分析 49811.6.3 随机抽取试题模块实现过程 49911.6.4 单元测试 50211.7 自动评分模块设计 50311.7.1 自动评分模块概述 50311.7.2 自动评分模块技术分析 50311.7.3 自动评分模块实现过程 50411.8 试题管理模块设计 50511.8.1 试题管理模块概述 50511.8.2 试题管理模块技术分析 50511.8.3 试题管理模块实现过程 50711.8.4 单元测试 51211.9 后台管理员模块设计 51311.9.1 后台管理员模块概述 51311.9.2 后台管理员模块技术分析 51411.9.3 后台管理员模块实现过程 51411.10 开发技巧与难点分析 526开发在线考试系统的随机抽取试题模块时,为了防止考生刷新考试页面后产生错误的考试结果,使用JavaScript脚本限制了鼠标右键、F5刷新键及BackSpace键,从而达到防止刷新的目的,使得考试页面更加安全、合理。关键代码如下:在区域添加如下代码,当按某个键时激发keydown函数,并且屏蔽右键和选择功能。关键代码如下:在线考试系统通过JavaScript脚本实现考试计时功能,规定考试在指定时间内交卷;否则,达到限定时间后,系统会强行提交试卷,并对其进行评分。关键代码如下:11.11 GridView控件应用 527具体代码在ExamOnLine /teacher /TExaminationResult.aspx中。GridView控件是ASP.NET的DataGrid控件的后继者。它是一个功能非常强大的通用控件,可以处理简单而常见的操作,如分页、排序、编辑或删除数据等。以尽可能少的数据实现双向数据绑定,该控件与新的数据源控件系列紧密结合,而且只要底层的数据源对象支持,它还可以直接处理数据源更新。它能定义多个主键字段、新的列类型以及样式和模板选项。GridView支持大量属性,有如下几大类:行为、可视化设置、样式、状态和模板。GridView的常用行为属性:属性说明AllowPaging 指示该控件是否支持分页;AllowSorting指示该控件是否支持排序;AutoGenerateColumns指示是否自动地为数据源中的每个字段创建列,默认为True;AutoGenerateDeleteButton指示该控件是否包含一个按钮列以允许用户删除映射到被单击行的记录;AutoGenerateEditButton指示该控件是否包含一个按钮列以允许用户编辑映射到被单击行的记录;AutoGenerateSelectButton指示该控件是否包含一个按钮列以允许用户选择映射到被单击行的记录;DeataMember指示一个多成员数据中的特定表绑定到该网格。该属性与DataSource结合使用。如果DataSource是有一个DataSet对象,则该属性包含要绑定的特定表的名称DataSource获得或设置包含用来填充该控件的值的数据源对象;DataSourceID指示所绑定的数据源控件EnableSortingAndPagingCallbacks指示是否使用脚本回调函数完成排序和分页。默认情况下禁用;RowHeaderColumn用作列标题的列名,该属性旨在改善可访问性;SortExpression获得当前排序表达式;UseAccessibleHeader规定是否为列标题生成标签(而不能标签)。GridView控件的模板属性:属性说明EmptyDataTemplate指示该控件绑定到一个空的数据源时要生成的模板内容。如果该属性和EmptyDataText属性都设置了,则该属性优先采用。如果两个属性都没有设置,则把该网格控件绑定到一个空的数据源时不生成该网格;PagerTemplate指示要为分页器生成的模板内容。该属性覆盖我们可能通过PagerSettings属性作出的任何设置。GridView控件的状态属性:属性说明BottomPagerRow返回表示该网格控件的底部分页器的GridViewRow对象;Columns获得一个表示该网格中的列的对象的集合。如果这些列是自动生成的,则该集合总是空的;DataKeyNames?获得一个包含当前显示项的主键字段的名称的数组;DataKey获得一个表示在DataKeyNames中为当前显示的记录设置的主键字段的值;EditIndex获得和设置基于0的索引,标识当前以编辑模式生成的行;FooterRow返回一个表示页脚的GridViewRow对象;HeaderRow返回一个表示标题的GridViewRow对象;PageCount 获得显示数据源的记录所需的页面数;PageIndex 获得或设置基于0的索引,标识当前显示的数据页;PageSize指示在一个页面上要显示的记录数;Rows 获得一个表示该控件中当前显示的数据行的GridViewRow对象集合;SelectedDataKey 返回当前选中的记录的DataKey对象;SelectedIndex获得和设置标识当前选中行的基于0的索引;SelectedRow返回一个表示当前选中行的GridViewRow对象;SelectedValue返回DataKey对象中存储的键的显式值。类似于SelectedDataKey;TopPagerRow返回一个表示网格的顶部分页器的GridViewRow对象。GridView 控件激发的事件:属性说明PageIndexChanging/ed 这两个事件都是在其中一个分页器按钮被单击时发生。它们分别在网格控件处理分页操作之前和之后激发;RowCancelingEdit 在一个处于编辑模式的行的Cancel按钮被单击,但是在该行退出编辑模式之前发生;RowCommand 单击一个按钮时发生;RowCreated 创建一行时发生;RowDataBound 一个数据行绑定到数据时发生;RowDeleting,RowDeleted 这两个事件都是在一行的Delete按钮被单击时发生。它们分别在该网格控件删除该行之前和之后激发;RowEditing 当一行的Edit按钮被单击时,但是在该控件进入编辑模式之前发生;RowUpdating,RowUpdated这两个事件都是在一行的Update按钮被单击时发生。它们分别在该网格控件更新该行之前和之后激发;SelectedIndexChanging/ed 这两个事件都是在一行的Select按钮被单击时发生。它们分别在该网格控件处理选择操作之前和之后激发;Sorting,Sorted 这两个事件都是在对一个列进行排序的超链接被单击时发生,它们分别在网格控件处理排序操作之前和之后激发。GridView绑定对列进行配置:如下代码把一个数据绑定的列添加到网格中: GridView中的绑定列,这些列字段类都继承DataControlField:属性说明BoundField 默认的列类型。作为纯文本显示一个字段的值;ButtonField作为命令显示一个字段的值。我们可以选择链接按钮或按钮开关样式;CheckBoxField作为一个复选框显示一个字段的值,它通常用来生成布尔值;CommandField 是ButtonField的增强版本,表示一个特殊的命令,诸如Select、Delete、Insert或Update,该属性对GridView控件几乎没什么用;该字段是为DetailsView控件定制的;HyperLinkField作为超链接显示一个字段的值。单击该超链接时,浏览器导航到指定的URL;ImageField 作为一个HTML标签的Src属性显示一个字段的值,绑定字段的内容应该是物理图像的URL;TemplateField 为列中的每一项显示用户定义的内容GridView列的公共属性,代表每个列类型实际提供的属性的一个子集;属性说明AccessibleHeaderText 表示Assistive Technology设备的屏幕阅读器读取的缩写文本的文本;FooterStyle获得该列的页脚的样式对象;FooterText获得和设置该列的页脚的文本;HeaderImageUrl获得和设置放在该列的标题中的图像的URL;HeaderStyle获得该列的标题的样式对象;HeaderText获得和设置该列的标题的文本;InsertVisible指示当它的父数据绑定控件处于插入模式时,该字段是否可见;ItemStyle获得各列的单元的样式对象;ShowHeader指示是否生成该列的标题;SortExpression获得和设置该列的标题被单击时用来排序网格的表达式;绑定字段BoundField类表示在一个数据绑定控件(诸如GridView 或DetailsView)中作为纯文本显示的一个字段。为了规定要显示的字段,把DataField属性设置为该字段的名称,要在头部或页脚部分显示一个标题,请分别设置HeaderText和FooterText属性;按钮字段按钮字段表示我们希望通过一个服务器端事件处理的任何操作,当该按钮被单击时,页面回发并激发一个RowCommand事件。超链接字段超链接列把用户指向一个不同的URL,该URL可以有选择地在一个内部框架中显示出来。如:当用户单击该按钮时,浏览器用Flower.aspx?id=XXX将鲜花id传出CheckBox字段 CheckBoxField列是显示一个复选框的一个较简单的绑定列.图像字段ImageField列类型表示一个在数据绑定控件中作为图像显示的字段。模板字段有时候我们需要一些特殊格式的绑定字段,是定制列。这可以通过使用模板得到的结果。TemplateField列为该网格中的每一行提供一个个性化用户界面,这完全是由页面开发人员定义的,我们可以为名生成阶段定义模板,包括默认视图、原地编辑、标题和页脚。GridView控件支持的模板属性说明AlternatingItemTemplate定义交替行的内容和外观,如果没有规定模板,则使用ItemTemplate;EditItemTemplate定义当前正在编辑的行的内容和外观。该模板包含输入字段,而且还可能包含验证程序;FooterTemplate定义该行的页脚的内容和外观;HeaderTemplate定义该行的标题的内容和外观;ItemTemplate定义该行的默认内容和外观。一个模板化视图可以包含对我们正在创建的应用程序有意义的东西:服务器控件、文字和数据绑定表达式。数据绑定表达式允许我们插入当前数据行中包含的值,然而,并非所有的模板都支持数据绑定表达式。如下代码说明了如何为一个产品定义项目模板。该列显示在现行上,并包括产品的名称和一些有关产品包装的信息。 available in 数据绑定语法ASP.NET中,有如下两种数据绑定语法:1、使用Eval方法可计算数据绑定控件的模板中后期绑定数据表达式。Eval方法以数据字段的名称作为参数Eval方法可诸数据绑定控件的模板中的后期绑定数据表达式。在运行时,Eval方法调用DataBinder对象的Eval方法,同时引用命名容器的当前数据项。命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如GridView控件中的一行。Eval方法以数据字段的名称作为参数,从事数据源的当前记录返回一个包含该字段值的字符串。字符串格式参数使用String类的Format方法定义的语法。Eval是只读的方法论(定向数据绑定),绑定的内容为不会提交回服务器。比如用户名,并不想让用户做任何修改,可以使用:Eval还有一个重载的方法,可以实现格式化。比如需要用户的注册时间,可以使用:其中0代表对应的PublishDate字段,而dd/MM/yyyy指明了最终显示文本的格式,它可能会显示为17/07/2009.2、使用Bind方法Bind方法与Eval方法有一些相似之处,但也存在很大的差异。虽然可以像使用Eval方法一样使用Bind方法来检索数据绑定字段的值,但当数据可以被修改是地,还是要使用Bind方法。Bind方法通常与输入控件一起使用,例如由编辑模式中的GridView行所呈现的TextBox控件。当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。Bind方法支持读/写功能(双向数据绑定),该方法常常与输入控件(比如TextBox控件)一起使用,达到可更新数据的目的。比如图书的标题可以修改,可以设置为:GridView深入1、高亮显示当我们的鼠标移动到GridView的某一行时,该行加亮显示,代码如下 :protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) /判断是否为数据行,即排除表头和尾if (e.Row.RowType = DataControlRowType.DataRow) e.Row.Attributes.Add(onmouseover, currentcolor=this.style.backgroundColor;this.style.backgroundColor=yellow,this.style.fontWeight=bold); e.Row.Attributes.Add(onmouseout, this.style.backgroundColor=currentcolor,this.style.fontWeight=); 如果需要高亮显示的不是整行,而是某个单元格,也可以使用该方法,比如我们要高亮显示价格是199.00的单元格,代码为:if (flower.Models.Product)e.Row.DataItem).Price.Trim() = 199.00) e.Row.Cells3.BackColor = System.Drawing.Color.Yellow; 2、删除提示我们在做删除操作的时候,都会需要一个提示,当用户确认后才进行删除操作,对于这种情况,我们一般采用模板列进行处理。代码如下: 3、GridView结合复选框的全选效果有时候,我们需要删除多条记录,为方便用户使用,我们不希望每条记录删除一次,而希望有一个复选框,可以一次删除多条记录,而不是一次次的点删除确认。这时,可以使用复选框来实现多选的效果。首先,创建模板列,并在其中放置CheckBox控件,编写客户端脚本,代码如下: function GetAllCheckBox(CheckAll) var items = document.getElementsByTagName(input); for(var i = 0;i items.length;i+) if(itemsi.type = checkbox) itemsi.checked = CheckAll.checked; 另外,还需要在“全选”前面的复选框上添加Onclick=GetAllCheckBox(this)事件,GridView代码如下: 全选 4、固定表头固定表头,是在下拉表格的情况下,表头跟随下移,使得表头相对用户和浏览器而言是在固定位置,可以使用户随时看清楚字段对应的内容。创建浮动样式代码如下: .Freezing position:relative; table-layout:fixed; top:expression(this.offsetParent.scrollTop); z-index:10; .Freezing th text-overflow:ellipsis; overflow:hidden; white-space:nowrap; padding:2px; 还需将GridView中HeaderSytle的CssClass值设为Freezing5、显示隐藏某一列有时候,结果中的列太多也是一个烦恼,为了适应不同用户的需求,可能需要用户自己设置是否显示某些行。现在要隐藏ID,编写代码如下:事件代码为:protected void cbID_CheckedChanged(object sender, EventArgs e) GridView1.Columns2.Visible = !GridView1.Columns2.Visible; Response.Write(ID列现在的显示隐藏状态是:+GridView1.Columns2.Visible.ToString();6.GridView实现用“.”代替超长字符串:解决方法:数据绑定后过滤每一行即可for (int i = 0; i = GridView1.Rows.Count - 1; i+) DataRowView mydrv; string gIntro; if (GridView1.PageIndex = 0) mydrv = myds.Tables飞狐工作室.DefaultView;/表名 gIntro = Convert.ToString(mydrv家庭住址);/所要处理的字段 GridView1.Rows.Cells3.Text = SubStr(gIntro, 2); else mydrv = myds.Tables飞狐工作室.DefaultViewi + (5 * GridView1.PageIndex); gIntro = Convert.ToString(mydrv家庭住址); GridView1.Rows.Cells3.Text = SubStr(gIntro, 2); 调用的方法: public string SubSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备安全锁使用培训课件
- 车辆的抵押合同模板7篇
- 安全驾驶行车教育培训课件
- 安全驾驶操作培训心得
- 设备安全培训课题课件
- 2025年生化制药试题及答案
- 2025年什么是自测考试题及答案
- 设备安全专业培训总结课件
- 2025内蒙古呼伦贝尔林业集团有限公司招聘工作人员5人备考及1套完整答案详解
- 教师招聘之《幼儿教师招聘》考前冲刺练习题含答案详解【能力提升】
- 中职语文职业模块1.2《宁夏闽宁镇:昔日干沙滩-今日金沙滩》教案
- 3.2 摩擦力 课件 高一上学期物理人教版(2019)必修第一册
- 2024年指标房转让买卖合同范本
- 水土保持工程概(估)算编制规定
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 2024年海南省中职教师技能大赛-新能源汽车维修 赛项规程
- 人美版六年级上册美术教案完整版
- (正式版)YBT 072-2024 方坯和圆坯连铸结晶器
- 广东高职高考数学题分类
- 建筑外观设计设计理念
- 部编人教版一年级上册道德与法治全册教案
评论
0/150
提交评论