C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx

上传人:b****5 文档编号:20373056 上传时间:2023-01-22 格式:DOCX 页数:26 大小:547.83KB
下载 相关 举报
C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx_第1页
第1页 / 共26页
C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx_第2页
第2页 / 共26页
C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx_第3页
第3页 / 共26页
C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx_第4页
第4页 / 共26页
C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx

《C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。

C#开发案例在线考试系统及GridView控件使用Word格式文档下载.docx

●教师权限

教师登录后,可对试题基本信息进行添加、修改、查询及删除操作。

同时对学生考试成绩进行查询及删除操作。

如果教师对现有的密码不满意,还以修改自己的密码,如图1.9所示。

图1.9教师权限

11.3.4业务流程图488

在线考试系统业务流程图如下:

11.3.5程序运行环境489

本系统对其运行环境有一定的要求,具体如下:

●系统开发平台:

MicrosoftVisualStudio2008

●系统开发语言:

C#

●数据库管理系统软件:

MicrosoftSQLServer2005

●运行平台:

WindowsXP(SP2)以及以上版本

●运行环境:

Microsoft.NETFrameworkSDKv3.5

●分辨率:

最佳效果1024*768像素

11.3.6数据库设计489

dbo.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数据库逻辑结构设计490

11.3.9文件夹组织结构492

每个网站都会有相应的文件夹组织结构,如网站中网页数目很多,可以将所有的网页及资源放在不同的文件夹中。

如果网站中网页不是很多,可以将图片、公共类或者程序资源文件放在相应的文件夹中,而网页可以直接放在网站根目录下。

本系统是按照前者组织文件夹结构排列的。

11.4公共类设计493

11.5登录模块设计495

11.5.1登录模块概述495

不是所有人都可以参加在线考试系统,系统默认是不允许匿名登录的,只有使用管理员分配的账号和密码才能登录。

11.5.2登录模块技术分析495

登录模块中,使用了验证码技术来防止用机器人软件反复自动登录。

该技术是通过Random类实现的。

Random类:

表示伪随机生成器,一种能够产生满足某些随机性统计要求的数字序列的设备,该类中最常用的是Random.Next方法。

Random.Next方法用于返回一个指定范围内的随机数。

语法如下:

publicvirtualintNext(intminValue,intmaxValue)

参数说明:

minValue:

返回随机数下界。

maxValue:

返回随机数上界。

返回值:

一个大于或等于minValue且小于maxValue的32位带符号整数。

11.5.3登录模块实现过程496

11.6随机抽取试题模块设计497

11.6.1随机抽取试题模块概述497

11.6.2随机抽取试题模块技术分析498

11.6.3随机抽取试题模块实现过程499

11.6.4单元测试502

11.7自动评分模块设计503

11.7.1自动评分模块概述503

11.7.2自动评分模块技术分析503

11.7.3自动评分模块实现过程504

11.8试题管理模块设计505

11.8.1试题管理模块概述505

11.8.2试题管理模块技术分析505

11.8.3试题管理模块实现过程507

11.8.4单元测试512

11.9后台管理员模块设计513

11.9.1后台管理员模块概述513

11.9.2后台管理员模块技术分析514

11.9.3后台管理员模块实现过程514

11.10开发技巧与难点分析526

开发在线考试系统的随机抽取试题模块时,为了防止考生刷新考试页面后产生错误的考试结果,使用JavaScript脚本限制了鼠标右键、F5刷新键及BackSpace键,从而达到防止刷新的目的,使得考试页面更加安全、合理。

关键代码如下:

在<

body>

区域添加如下代码,当按某个键时激发keydown函数,并且屏蔽右键和选择功能。

<

bodyonkeydown="

keydown()"

oncontextmenu="

returnfalse"

onselectstart="

>

在线考试系统通过JavaScript脚本实现考试计时功能,规定考试在指定时间内交卷;

否则,达到限定时间后,系统会强行提交试卷,并对其进行评分。

11.11GridView控件应用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

规定是否为列标题生成<

th>

标签(而不能<

td>

标签)。

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绑定

对列进行配置:

如下代码把一个数据绑定的列添加到网格中:

asp:

GridViewID="

GridView1"

runat="

server"

DataSourceID="

SqlDataSource1"

>

Columns>

BoundFieldDataField="

companyname"

HeaderText="

产品名称"

/>

/Columns>

EmptyDataTemplate>

/EmptyDataTemplate>

/asp:

GridView>

GridView中的绑定列,这些列字段类都继承DataControlField:

BoundField

默认的列类型。

作为纯文本显示一个字段的值;

ButtonField

作为命令显示一个字段的值。

我们可以选择链接按钮或按钮开关样式;

CheckBoxField

作为一个复选框显示一个字段的值,它通常用来生成布尔值;

CommandField

是ButtonField的增强版本,表示一个特殊的命令,诸如Select、Delete、Insert或Update,该属性对GridView控件几乎没什么用;

该字段是为DetailsView控件定制的;

HyperLinkField

作为超链接显示一个字段的值。

单击该超链接时,浏览器导航到指定的URL;

ImageField

作为一个<

img>

HTML标签的Src属性显示一个字段的值,绑定字段的内容应该是物理图像的URL;

TemplateField

为列中的每一项显示用户定义的内容

GridView列的公共属性,代表每个列类型实际提供的属性的一个子集;

AccessibleHeaderText

表示AssistiveTechnology设备的屏幕阅读器读取的缩写文本的文本;

FooterStyle

获得该列的页脚的样式对象;

FooterText

获得和设置该列的页脚的文本;

HeaderImageUrl

获得和设置放在该列的标题中的图像的URL;

HeaderStyle

获得该列的标题的样式对象;

HeaderText

获得和设置该列的标题的文本;

InsertVisible

指示当它的父数据绑定控件处于插入模式时,该字段是否可见;

ItemStyle

获得各列的单元的样式对象;

ShowHeader

指示是否生成该列的标题;

获得和设置该列的标题被单击时用来排序网格的表达式;

绑定字段

BoundField类表示在一个数据绑定控件(诸如GridView或DetailsView)中作为纯文本显示的一个字段。

为了规定要显示的字段,把DataField属性设置为该字段的名称,要在头部或页脚部分显示一个标题,请分别设置HeaderText和FooterText属性;

按钮字段

按钮字段表示我们希望通过一个服务器端事件处理的任何操作,当该按钮被单击时,页面回发并激发一个RowCommand事件。

超链接字段

超链接列把用户指向一个不同的URL,该URL可以有选择地在一个内部框架中显示出来。

如:

HyperLinkFieldID="

HyperLinkField1"

DataNavigateUrlFields="

id"

DataNavigateUrlFormatString="

Flower.aspx?

id={0}"

DataTextField="

name"

鲜花"

当用户单击该按钮时,浏览器用Flower.aspx?

id=XXX将鲜花id传出

CheckBox字段

CheckBoxField列是显示一个复选框的一个较简单的绑定列.

图像字段

ImageField列类型表示一个在数据绑定控件中作为图像显示的字段。

模板字段

有时候我们需要一些特殊格式的绑定字段,是定制列。

这可以通过使用模板得到的结果。

TemplateField列为该网格中的每一行提供一个个性化用户界面,这完全是由页面开发人员定义的,我们可以为名生成阶段定义模板,包括默认视图、原地编辑、标题和页脚。

GridView控件支持的模板

AlternatingItemTemplate

定义交替行的内容和外观,如果没有规定模板,则使用ItemTemplate;

EditItemTemplate

定义当前正在编辑的行的内容和外观。

该模板包含输入字段,而且还可能包含验证程序;

FooterTemplate

定义该行的页脚的内容和外观;

HeaderTemplate

定义该行的标题的内容和外观;

ItemTemplate

定义该行的默认内容和外观。

一个模板化视图可以包含对我们正在创建的应用程序有意义的东西:

服务器控件、文字和数据绑定表达式。

数据绑定表达式允许我们插入当前数据行中包含的值,然而,并非所有的模板都支持数据绑定表达式。

如下代码说明了如何为一个产品定义项目模板。

该列显示在现行上,并包括产品的名称和一些有关产品包装的信息。

TemplateField>

ItemTemplate>

%#Eval("

productName"

)%>

br/>

availablein<

quantityperunit"

/ItemTemplate>

数据绑定语法

ASP.NET中,有如下两种数据绑定语法:

1、使用Eval方法

可计算数据绑定控件的模板中后期绑定数据表达式。

Eval方法以数据字段的名称作为参数

Eval方法可诸数据绑定控件的模板中的后期绑定数据表达式。

在运行时,Eval方法调用DataBinder对象的Eval方法,同时引用命名容器的当前数据项。

命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如GridView控件中的一行。

Eval方法以数据字段的名称作为参数,从事数据源的当前记录返回一个包含该字段值的字符串。

字符串格式参数使用String类的Format方法定义的语法。

Eval是只读的方法论(定向数据绑定),绑定的内容为不会提交回服务器。

比如用户名,并不想让用户做任何修改,可以使用:

UserName"

).ToString.Trim()%>

Eval还有一个重载的方法,可以实现格式化。

比如需要用户的注册时间,可以使用:

RegTime"

"

{0:

dd/MM/yyyy}"

其中0代表对应的PublishDate字段,而dd/MM/yyyy指明了最终显示文本的格式,它可能会显示为17/07/2009.

2、使用Bind方法

Bind方法与Eval方法有一些相似之处,但也存在很大的差异。

虽然可以像使用Eval方法一样使用Bind方法来检索数据绑定字段的值,但当数据可以被修改是地,还是要使用Bind方法。

Bind方法通常与输入控件一起使用,例如由编辑模式中的GridView行所呈现的TextBox控件。

当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。

Bind方法支持读/写功能(双向数据绑定),该方法常常与输入控件(比如TextBox控件)一起使用,达到可更新数据的目的。

比如图书的标题可以修改,可以设置为:

%#Bind("

Title"

GridView深入

1、高亮显示

当我们的鼠标移动到GridView的某一行时,该行加亮显示,

代码如下:

protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse)//判断是否为数据行,即排除表头和尾

{

if(e.Row.RowType==DataControlRowType.DataRow)

e.Row.Attributes.Add("

onmouseover"

"

currentcolor=this.style.backgroundColor;

this.style.backgroundColor='

yellow'

this.style.fontWeight='

bold'

"

);

onmouseout"

this.style.backgroundColor=currentcolor,this.style.fontWeight='

'

}

如果需要高亮显示的不是整行,而是某个单元格,也可以使用该方法,比如我们要高亮显示价格是"

199.00"

的单元格,

代码为:

if(((flower.Models.Product)e.Row.DataItem).Price.Trim()=="

{

e.Row.Cells[3].BackColor=System.Drawing.Color.Yellow;

2、删除提示

我们在做删除操作的时候,都会需要一个提示,当用户确认后才进行删除操作,对于这种情况,我们一般采用模板列进行处理。

LinkButtonID="

LinkButton1"

OnClientClick="

javascript:

returnconfirm('

记录一旦删除不可恢复,确认要删除吗?

)"

CausesValidation="

false"

CommandName="

Delete"

Text="

删除"

LinkButton>

3、GridView结合复选框的全选效果

有时候,我们需要删除多条记录,为方便用户使用,我们不希望每条记录删除一次,而希望有一个复选框,可以一次删除多条记录,而不是一次次的点删除确认。

这时,可以使用复选框来实现多选的效果。

首先,创建模板列,并在其中放置CheckBox控件,编写客户端脚本,代码如下:

scriptlanguage="

javascript"

functionGetAllCheckBox(CheckAll)

varitems=document.getElementsByTagName("

input"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1