在线考试系统 c#高级开发实训报告Word下载.docx
- 文档编号:18263885
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:44
- 大小:1.79MB
在线考试系统 c#高级开发实训报告Word下载.docx
《在线考试系统 c#高级开发实训报告Word下载.docx》由会员分享,可在线阅读,更多相关《在线考试系统 c#高级开发实训报告Word下载.docx(44页珍藏版)》请在冰豆网上搜索。
开发在线考试系统时,为了灵活地维护系统,设计了后台管理员模块,通过后台管理员模块可以方便地堆整个在线考试系统进行维护。
这时,必须建立一个数据表用于存储所有的管理员信息。
管理员信息实体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"
rb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线考试系统 c#高级开发实训报告 在线 考试 系统 c# 高级 开发 报告