在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx

上传人:b****2 文档编号:5334317 上传时间:2023-05-05 格式:DOCX 页数:49 大小:1.79MB
下载 相关 举报
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第1页
第1页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第2页
第2页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第3页
第3页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第4页
第4页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第5页
第5页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第6页
第6页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第7页
第7页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第8页
第8页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第9页
第9页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第10页
第10页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第11页
第11页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第12页
第12页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第13页
第13页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第14页
第14页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第15页
第15页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第16页
第16页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第17页
第17页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第18页
第18页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第19页
第19页 / 共49页
在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx

《在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx(49页珍藏版)》请在冰点文库上搜索。

在线考试系统C#高级开发实训报告 精品Word文档下载推荐.docx

开发在线考试系统时,为了灵活地维护系统,设计了后台管理员模块,通过后台管理员模块可以方便地堆整个在线考试系统进行维护。

这时,必须建立一个数据表用于存储所有的管理员信息。

管理员信息实体E-R图如图3所示。

图3:

管理员信息实体E-R图

当考生成功登录在线考试系统后,可以根据需要选择考试的科目,考生不同可能选择的考试科目也会不同,系统必须提供一些参加考试的科目,供考生选择。

这时,在数据库中应该建立一个存储所有参加考试科目的数据库表。

开始科目信息实体E-R图如图4所示:

图4:

考试科目信息实体E-R图

考生选择考试科目,开始在线考试。

在规定时间内必须完成考试,否则系统会自动提交试卷,并且将考生的考试成绩保存在数据表中。

这样,方便后期查询考生是否参加过考试,以及查询咯是考试得分。

考试成绩信息实体E-R图如:

5所示:

图5:

考试成绩信息实体E-R图

在数据库中建立一个用于存储考生各项信息的数据表。

其中包括考生登录时的账号(考生编号或考生学号)及密码。

若某个考生参加了考试,系统会将考生答卷的最后得分保存到此数据库中,以便教师或考生对开始历史记录进行查询。

考生信息实体E-R图如图6所示:

图6:

试卷类型信息实体E-R图

为了方便后台管理员对考试试题及考生考试结果进行管理,在数据库中必须建立一个数据表用于存储试卷信息。

试卷详细信息实体E-R图如:

7所示:

图7:

试卷详细信息实体E-R图

在线考试系统中的考生答题答案是保存在数据库中的,所以必须在数据库中建立一个数据表用于存储考生所给的答案信息。

考生答案信息实体E-R图如图8所示:

图8:

考生答案信息实体E-R图

在线考试系统中的考试单选题是通过对数据库中存储的所有试题产生的,所以必须在数据库中建立一个数据表用于存储单选试题信息,其中包括试题题目、试题的4个备选答案、正确答案以及所属的科目。

单选题信息实体E-R图如图9所示:

图9:

试题信息实体E-R图

在线考试系统中的考试中的判断题是通过对数据库中存储的所有试题产生的,所以必须在数据库中建立一个数据表用于存储判断试题信息,其中包括试题题目、试题的正确答案和错误答案2个选项、正确答案以及所属的科目。

判断题信息实体E-R图如图10所示:

图10:

判断题信息实体E-R图

在线考试系统中的考试中的多选题是通过对数据库中存储的试题产生的,所以必须在数据库中建立一个数据表用于存储多选试题信息,其中包括试题题目、试题的4个备选答案、正确答案以及所属的科目。

多选题信息实体E-R图如图11所示:

图11:

多选题信息实体E-R图

在线考试系统中的考试中的简答题是通过对数据库中存储的试题产生的,所以必须在数据库中建立一个数据表用于存储简答试题信息,其中包括试题题目、试题的答案、及所属的科目。

试题信息实体E-R图如图12所示:

图12:

问答题信息实体E-R图

2、数据库逻辑设计:

根据设计好的E_R图在数据库中创建各表,系统数据库中各表的结构如下。

表1:

管理员用户表

字段名

数据类型

是否为空

约束

备注

UserID

varchar(50)

主键

编号

UserName

管理员姓名

UserPwd

varchar(64)

管理员登录密码

RoleId

int

角色

表2:

考试科目信息表

是否允许

ID

系统编号

Name

varchar(200)

考试科目名称

表3:

考试成绩信息表

Int

参加考试的考生编号

PaperID

考试科目编号

Score

考生得分

ExamTime

datetime

参加考试的时间

JudgeTime

考试剩余时间

表4:

试卷类型信息表

CourseID

外键

课程编号

PaperName

试卷名称

PaperState

bit

试卷类型

表5:

试卷详细信息表

试卷编号

Type

试题类型

TitleID

题目编号

Mark

分数

表6:

考生答案信息表

考生编号

UserAnswer

考生答案

考试时间

表7:

单选题题信息表

Title

Varchar1000)

题目

AnswerA

varchar(500)

备选答案A

AnswerB

备选答案B

AnswerC

备选答案C

AnswerD

备选答案D

Answer

varchar

(2)

正确答案

表8:

判断题信息表

表9:

多选题信息表

表10:

简答题信息表

表11:

填空题信息表

FrontTitle

BackTitle

四.公共类设计

在开发项目中以类的形式来组织、封建一些常用的方法和事件,不仅可以提高代码的重用率,也大大方便了代码的管理。

本系统中通过创建了三层架构OnLineExamBLL层、OnLineExamDAL层和一个公共类UserService设计,其中包含GetConnection()方法、SelectAll()方法。

具体代码如下:

publicclassUserService{

publicList<

Scores>

SelectAll(stringPaperID){

using(SqlConnectionconn=DBHelp.GetConnection()){

stringsql=@"

selectID,Score.UserID,PaperID,Score,ExamTime,JudgeTime,Users.UserNamefromScore,Users

whereScore.UserID=Users.UserIDandPaperID='

"

+PaperID+"

'

;

SqlCommandcmd=conn.CreateCommand();

cmd.CommandText=sql;

conn.Open();

SqlDataReaderdr=cmd.ExecuteReader();

List<

list=newList<

();

while(dr.Read()){

Usersuser=newUsers();

Scoresscores=newScores();

scores.ID=Convert.ToInt32(dr["

ID"

]);

scores.UserID=dr["

UserID"

].ToString();

user.UserName=dr["

UserName"

scores.UserName=user.UserName;

scores.PaperID=Convert.ToInt32(dr["

PaperID"

scores.Score=Convert.ToInt32(dr["

Score"

scores.ExamTime=Convert.ToDateTime(dr["

ExamTime"

scores.JudgeTime=Convert.ToDateTime(dr["

JudgeTime"

list.Add(scores);

}

dr.Close();

conn.Close();

returnlist;

}}

publicstaticSqlConnectionGetConnection(){

stringconnStr=ConfigurationManager.ConnectionStrings["

ConnectionString"

].ConnectionString;

SqlConnectionconn=newSqlConnection(connStr);

returnconn;

}

五.完成的主要功能

1.功能1:

登录模块设计

(1)系统默认是不允许匿名登录的,只有使用管理员分配的账号和密码才能登录在线考试系统参加考试,这时就需要通过登录模块验证登录用户的合法性。

登录模块是在线考试系统的第一道安全屏障,其运行结果如图所示:

图5-1用户登录

(2)实现过程:

新建一个网页,命名为Login.aspx,主要实现系统的登录功能。

主要控件如表7所示:

表5-1:

登录界面用到的主要控件

控件类型

控件ID

主要属性设置

用途

TextBox

txtUserID

输入登录用户名

txtPwd

TextModed属性设置为Password

输入登录用户密码

CheckBox

cbxRemeberUser

Checked属性设置为True

记住用户名

RequiredFieldValidator

RequiredFieldValidator1

Controltovalidate属性设置为txtUserID

进行验证

RequiredFieldValidator2

Controltovalidate属性设置为txtPwd

Button

btlogin

Text属性设置为“登录”

登录

btconcel

Text属性设置为“取消”

取消

输入账号和密码等信息确认无误后,单机“登录“进行登录。

程序首先会判断输入的用户名是否正确,如果正确则根据选择的用户名调用公共类中相应的方法验证账号和密码是否正确,如果正确,则会转向与登录身份符合的页面

(3)实现代码:

protectedvoidPage_Load(objectsender,EventArgse){

this.txtUserID.Focus();

if(!

IsPostBack){

try{

HttpCookiereadcookie=Request.Cookies["

UsersID"

];

this.txtUserID.Text=readcookie.Value;

catch(Exception){

this.txtUserID.Text=string.Empty;

}

}}

protectedvoidimgBtnLogin_Click(objectsender,ImageClickEventArgse){

stringusersId=txtUserID.Text.Trim();

stringpwdMd5=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(),"

MD5"

).ToString();

Usersu=newUsers();

u.UserID=usersId;

u.UserPwd=pwdMd5;

boolsuccess=UserManager.Login(refu);

if(success){

if(u.UserPwd==pwdMd5)//输入密码与用户密码相同{

if(this.cbxRemeberUser.Checked){

if(object.Equals(Request.Cookies["

],null)){

CreateCookie();

else{

Session["

userID"

]=txtUserID.Text.Trim();

//存储用户编号

Response.Redirect("

Default.aspx"

);

//转向管理员操作界面

else{

lblMessage.Text="

您输入的密码错误!

该用户不存在!

privatevoidCreateCookie(){

HttpCookiecookie=newHttpCookie("

cookie.Value=txtUserID.Text;

cookie.Expires=DateTime.MaxValue;

Response.AppendCookie(cookie);

2.功能2名称:

抽取试题模块设计

(1)开发在线考试系统过程中,需要考虑如何将试题显示在页面上,即如何将试题从数据库中方读取出来。

比较合理的做法是将所有试题信息存储在数据库中,然后随机抽取若干道试题,动态地显示在页面当中。

为了实现此功能,设计出抽取试题模块,运行结果如图所示;

图5-2:

随机抽取试题

(2)实现过程:

在随机抽取试题之前,考生要选择考试的科目,然后根据选择的科目随机从数据库中抽取试题,所以考生选择考试科目是随机抽取试题的条件,其运行结果如图所示:

图5-3:

选择考试科目

新建一个网页,命名为UserTest.aspx,作为抽取试题页面及考试页面。

该页面用到的主要控件如图所示:

表5-2:

抽取试题页面用到的主要控件

Label

lblPaperName

显示考试科目

labUser

显示考生姓名

timeBox

显示考试用时

Repeater

Repeater1

显示从数据库中抽取的试题

btnsubmit

提交试卷

当页面加载时,根据考生选择的科目在数据库中随机抽取试题,并显示在Repeater控件中。

(3)实现代码如下:

protectedintsingeCount=1;

protectedvoidPage_Load(objectsender,EventArgse){

Page.IsPostBack){

if(Session["

]==null){

Login.aspx"

stringuserId=Session["

stringuserName=UserManager.GetUserName(userId);

Labeli1=(Label)Page.FindControl("

labUser"

i1.Text=userName;

lblPaperName.Text=Session["

PaperName"

GetParperAll();

}}}

privatevoidGetParperAll(){

IEnumerablelist=sqlSingleMark.Select(DataSourceSelectArguments.Empty);

foreach(DataRowViewoinlist){

labSingle.Text=o[0].ToString();

break;

IEnumerablelist1=SqlMultiMark.Select(DataSourceSelectArguments.Empty);

foreach(DataRowViewoinlist1){

Label3.Text=o[0].ToString();

IEnumerablelist2=SqlFillMark.Select(DataSourceSelectArguments.Empty);

foreach(DataRowViewoinlist2){

Label5.Text=o[0].ToString();

IEnumerablelist3=SqlJudgeMark.Select(DataSourceSelectArguments.Empty);

foreach(DataRowViewoinlist3){

Label4.Text=o[0].ToString();

IEnumerablelist4=SqlQuestionMark.Select(DataSourceSelectArguments.Empty);

foreach(DataRowViewoinlist4){

Label6.Text=o[0].ToString();

protectedvoidimgBtnSubmit_Click(objectsender,ImageClickEventArgse){

NewMethod();

privatevoidNewMethod(){

stringLabel=labSingle.Text;

//单选分数

stringpaperid=Session["

stringUserId=Session["

DBHelpdb=newDBHelp();

foreach(RepeaterItemiteminsingleRep.Items){

HiddenFieldtitleId=item.FindControl("

titleId"

)asHiddenField;

stringid=(string)titleId.Value;

stringstr="

if(((RadioButton)item.FindControl("

rbA"

)).Checked){

str="

A"

elseif(((RadioButton)item.FindControl("

rbB"

)).Checked){

str="

B"

rbC"

C"

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2