在线考试系统 毕业设计说明书.docx
《在线考试系统 毕业设计说明书.docx》由会员分享,可在线阅读,更多相关《在线考试系统 毕业设计说明书.docx(20页珍藏版)》请在冰豆网上搜索。
在线考试系统毕业设计说明书
毕业设计说明书
(计算机应用工程系)
设计课题:
在线考试系统
专业班级:
学生姓名:
学生学号:
指导教师:
目录
第一章系统简介3
1.1内容介绍3
第二章数据库设计4
2.1数据表说明4
第三章系统功能设计8
3.1:
模块流程图8
第四章核心代码8
4.1抽象类代码8
4.2登录模块代码8
4.3学生模块代码9
第五章总结9
参考文献9
在线考试系统
[摘要]网络考试系统的开发及应用,避免了以往学校里考试纸张,笔,监考和巡考等各种资源的浪费,并且后台管理是管理员单一的管理,确保程序的安全.本在线考试系统应用了AJAX无刷新环境,在登录页面需要输入验证码.管理员还可以为用户重设密码.这样使得系统更加人性化.
[关键字]在线考试AJAX
第一章系统简介
1.1内容介绍
(1).开发环境:
VS2005+SQL200
(2).语言:
(3).系统介绍
本在线考试系统运用了AJAX无刷新环境,在考试倒计时用到AJAX的time控件.在系统登陆输入验证码,在在线考试登录窗口还可以智能记忆用户名..可以使相同用户不必每次都输入相同用户名.在大量查询信息时将会显示进度条,
第二章数据库设计
2.1数据表说明
数据库名:
mrOnLineExam数据库用户名:
sa密码:
数据库表整体说明如下:
数据库表名
表的作用
表的说明
Usermr
管理登录
存放管理员,老师.学生的用户名,密码和角色
MultiProblemmr
多选题管理
存放多选题的信息
Coursemr
考试科目管理
存放考试科目的信息
Departmentmr
系别管理
存放系别的信息
FillBlankProblemmr
填空题管理
存放填空题的信息
JudgeProblemmr
判断题管理
存放判断题的信息
SingleProblemmr
单选题管理
存放单选题的信息
Scoremr
考试成绩管理
存放考生的成绩
Rolemr
权限管理
给不同的对象不同的权限
Papermr
试卷管理
存放试卷的信息
QuestionProblemmr
问答题管理
存放问答题的信息
TreeMenu
导航管理
实现不同的页面之间跳转
UserAnswermr
考生答案
存放考生的答案
PaperDetailmr
试卷详细信息
存放试卷的详细信息
(1)Usersmr表
(2)MultiProblemmr表
(3)Coursemr表
(4)Departmentmr表
(5)FillBlankProblemmr表
(6)JudgeProblemmr表
(7)SingleProblemmr表
(8)Scoremr表
(9)Rolemr表
(10)Papermr表
(11)QuestionProblemmr表
(12)TreeMenu表
(13)UserAnswermr表
(14)PaperDetailmr
第三章系统功能设计
3.1:
模块流程图
模块流程图
功能介绍:
1.在线考试模块:
考生通过登录窗口,将进入试卷选择页,选择某套试题后考生就进入在线考试页.该页设置了考试时间及各种题型.
2.管理员管理模块
(1).用户管理:
管理员对用户进行管理,可以修改用户的角色和系别
(2).试卷管理:
管理员可以对各种题型进行添加,删除和修改.
(3).考试科目管理:
管理员可以对考试科目进行添加和删除和修改.
(4).成绩管理:
管理员可以对删除考生的成绩.
(5).权限管理:
管理员可以给不同的用户不同的权限.
(6).系别管理:
管理员可以添加,删除和修改系别.
3.教师模块
教师可以对学生试卷的问答题进行评分,除问答题外,其余都由系统自动打分.教师还可以对学生的试卷给出评语.教师可以修改自己的密码;
第四章核心代码
4.1公共类代码
1.连接数据库公共类:
publicclassDataBase
{
protectedSqlConnectionConnection;
protectedstringConnectionString;
publicDataBase()
{
ConnectionString="DataSource=(local);DataBase=mrOnLineExam;UserID=sa;Password=;";
}
privatevoidOpen()
{
if(Connection==null)
{
Connection=newSqlConnection(ConnectionString);
Connection.Open();
}
else
{
if(Connection.State.Equals(ConnectionState.Closed))
Connection.Open();
}
}
publicvoidClose()
{
if(Connection.State.Equals(ConnectionState.Open))
{
Connection.Close();
}
}
~DataBase()
{
try
{
if(Connection!
=null)
Connection.Close();
}
catch{}
try
{
Dispose();
}
catch{}
}
publicvoidDispose()
{
if(Connection!
=null){
Connection.Dispose();
Connection=null;
}
}
publicboolGetRecord(stringXSqlString)
{
Open();
SqlDataAdapteradapter=newSqlDataAdapter(XSqlString,Connection);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
Close();
if(dataset.Tables[0].Rows.Count>0)
{
returntrue;
}
else
{
returnfalse;
}
}
publicintGetRecordCount(stringXSqlString)
{
stringSCount;
Open();
SqlCommandCmd=newSqlCommand(XSqlString,Connection);
SCount=Cmd.ExecuteScalar().ToString().Trim();
if(SCount=="")
SCount="0";
Close();
returnConvert.ToInt32(SCount);
}
publicDataSetAdvancedSearch(stringXTableName,HashtableXHT)
{
intCount=0;
stringFields="";
foreach(DictionaryEntryIteminXHT)
{
if(Count!
=0)
{
Fields+="and";
}
Fields+=Item.Key.ToString();
Fields+="like'%";
Fields+=Item.Value.ToString();
Fields+="%'";
Count++;
}
Fields+="";
stringSqlString="select*from"+XTableName+"where"+Fields;
Open();
SqlDataAdapterAdapter=newSqlDataAdapter(SqlString,Connection);
DataSetDs=newDataSet();
Adapter.Fill(Ds);
Close();
returnDs;
}
privateSqlCommandCreateCommand(stringProcName,SqlParameter[]Prams)
{
Open();
SqlCommandCmd=newSqlCommand(ProcName,Connection);
Cmd.CommandType=CommandType.StoredProcedure;
if(Prams!
=null)
{
foreach(SqlParameterParameterinPrams)
Cmd.Parameters.Add(Parameter);
}
returnCmd;
}
privateSqlCommandCreateStrCommand(stringStrName,SqlParameter[]Prams)
{
Open();
SqlCommandCmd=newSqlCommand(StrName,Connection);
Cmd.CommandType=CommandType.Text;
if(Prams!
=null)
{
foreach(SqlParameterParameterinPrams)
Cmd.Parameters.Add(Parameter);
}
returnCmd;
}
publicSqlParameterMakeParam(stringParamName,SqlDbTypeDbType,Int32Size,ParameterDirectionDirection,objectValue)
{
SqlParameterParam;
if(Size>0)
Param=newSqlParameter(ParamName,DbType,Size);
elseParam=newSqlParameter(ParamName,DbType);
Param.Direction=Direction;
if(Value!
=null)
Param.Value=Value;
returnParam;
}
publicSqlParameterMakeInParam(stringParamName,SqlDbTypeDbType,intSize,objectValue)
{
returnMakeParam(ParamName,DbType,Size,ParameterDirection.Input,Value);
}
publicintRunProc(stringProcName)
{
intCount=-1;
SqlCommandCmd=CreateCommand(ProcName,null);
Count=Cmd.ExecuteNonQuery();
Close();
returnCount;
}
publicintRunStr(stringStrName)
{
intCount=-1;
SqlCommandCmd=CreateStrCommand(StrName,null);
Count=Cmd.ExecuteNonQuery();
Close();
returnCount;
}
publicintRunProc(stringProcName,SqlParameter[]Params)
{
intCount=-1;
SqlCommandCmd=CreateCommand(ProcName,Params);
Count=Cmd.ExecuteNonQuery();
Close();
returnCount;
}
publicintProcStr(stringStrName,SqlParameter[]Params)
{
intCount=-1;
SqlCommandCmd=CreateStrCommand(StrName,Params);
Count=Cmd.ExecuteNonQuery();
Close();
returnCount;
}
publicSqlDataReaderRunProcGetReader(stringProcName,SqlParameter[]Params)
{
SqlCommandCmd=CreateCommand(ProcName,Params);
returnCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
publicintRunProcGetCount(stringProcName,SqlParameter[]Params)
{
SqlCommandCmd=CreateCommand(ProcName,Params);
stringSCount;
SCount=Cmd.ExecuteScalar().ToString().Trim();
if(SCount=="")
SCount="0";
Close();
returnConvert.ToInt32(SCount);
}
publicDataSetGetStrDataSet(stringStrName)
{
Open();
SqlDataAdapteradapter=newSqlDataAdapter(StrName,Connection);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
Close();
returndataset;
}
publicDataSetGetDataSet(stringProcName,SqlParameter[]Params)
{
Open();
SqlCommandCmd=CreateCommand(ProcName,Params);
SqlDataAdapteradapter=newSqlDataAdapter(Cmd);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
Close();
returndataset;
}
publicDataSetGetStrDataSetSql(stringStrName,SqlParameter[]Params)
{
Open();
SqlCommandCmd=CreateStrCommand(StrName,Params);
SqlDataAdapteradapter=newSqlDataAdapter(Cmd);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
Close();
returndataset;
}
publicDataSetGetDataSetSql(stringXSqlString)
{
Open();
SqlDataAdapterAdapter=newSqlDataAdapter(XSqlString,Connection);
DataSetDs=newDataSet();
Adapter.Fill(Ds);
Close();
returnDs;
}
publicintInsert(stringXSqlString)
{
intCount=-1;
Open();
SqlCommandcmd=newSqlCommand(XSqlString,Connection);
Count=cmd.ExecuteNonQuery();
Close();
returnCount;
}
publicintGetIDInsert(stringXSqlString)
{
intCount=-1;
Open();
SqlCommandcmd=newSqlCommand(XSqlString,Connection);
Count=Convert.ToInt32(cmd.ExecuteScalar().ToString().Trim());
Close();
returnCount;
}
publicDataRowGetDataRow(StringSqlString)
{
DataSetdataset=GetDataSet(SqlString);
dataset.CaseSensitive=false;
if(dataset.Tables[0].Rows.Count>0)
{
returndataset.Tables[0].Rows[0];
}
else
{
returnnull;
}
}
publicboolUpdate(StringTableName,HashtableCols,StringWhere)
{
intCount=0;
if(Cols.Count<=0)
{
returntrue;
}
StringFields="";
foreach(DictionaryEntryiteminCols)
{
if(Count!
=0)
{
Fields+=",";
}
Fields+="["+item.Key.ToString()+"]";
Fields+="=";
Fields+=item.Value.ToString();
Count++;
}
Fields+="";
StringSqlString="Update"+TableName+"Set"+Fields+Where;
String[]Sqls={SqlString};
returnExecuteSQL(Sqls);
}
publicboolExecuteSQL(String[]SqlStrings)
{
boolsuccess=true;
Open();
SqlCommandcmd=newSqlCommand();
SqlTransactiontrans=Connection.BeginTransaction();
cmd.Connection=Connection;
cmd.Transaction=trans;
inti=0;
try
{
foreach(StringstrinSqlStrings)
{
cmd.CommandText=str;
cmd.ExecuteNonQuery();
i++;
}
trans.Commit();
}
catch
{
success=false;
trans.Rollback();
Close();
}
finally
{
Close();
}
returnsuccess;
}
publicDataTableGetDataTable(StringSqlString)
{
DataSetdataset=GetDataSet(SqlString);
dataset.CaseSensitive=false;
returndataset.Tables[0];
}
}
}
4.2管理员模块代码
Usersmruser=newUsersmr();
DataSetmyds=user.QueryUsers();
GridView1.DataSource=myds;
GridView1.DataBind();
LabelPageInfo.Text="你所在的位置:
当前(第"+(GridView1.PageIndex+1).ToString()+"页共"+GridView1.PageCount.ToString()+"页)
4.3教师模块代码
ScoresmrExamScore=newScoresmr();
ExamScore.UserID=Request.QueryString["UserID"].ToString();
ExamScore.PaperID=int.Parse(Request.QueryString["PaperID"].ToString());
ExamScore.ExamTime=Convert.ToDateTime(lblExamtime.Text);
if(queScore.Text.Trim()!
="")
{
ExamScore.Score=Convert.ToInt32(sumScore.Text);
ExamScore.PingYu=tbxPingyu.Text;
Papermrmypaper=newPapermr();
mypaper.PaperID=int.Parse(Request.QueryString["PaperID"].ToString());
mypaper.state="已评阅";
if(!
ExamScore.CheckScore(ExamScore.UserID,ExamScore.PaperID)