实验04简单考试测试页面11.docx
- 文档编号:9678143
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:17
- 大小:101.45KB
实验04简单考试测试页面11.docx
《实验04简单考试测试页面11.docx》由会员分享,可在线阅读,更多相关《实验04简单考试测试页面11.docx(17页珍藏版)》请在冰点文库上搜索。
实验04简单考试测试页面11
实验04-简单考试测试页面11
实验04简单考试页面
设计并实现一个用于单项选择题和多项选择题的测试页面
数据库表的定义如下
单选题表(question)
多选题表(questioncheck)
成绩表(score)
1.首先在web.config文件中添加数据库连接语句
或者下面的连接语句
2.公共数据连接类代码为:
publicclassDataConn
{
publicDataConn(){}
publicstaticstringstrconn=ConfigurationManager.ConnectionStrings["shiticonn"].ConnectionString;
publicstaticSqlConnectionCreateConn()
{
SqlConnectionconn=newSqlConnection(strconn);
returnconn;
}
publicstaticSqlDataReaderExecuterRead(stringcmdtext,SqlConnectionconn)
{
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText=cmdtext;
SqlDataReaderdr=cmd.ExecuteReader();
returndr;
}
publicstaticSqlDataReaderExecuterRead(stringcmdtext,SqlConnectionconn,paramsSqlParameter[]array1)
{
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText=cmdtext;
foreach(SqlParameterparainarray1)
cmd.Parameters.Add(para);
SqlDataReaderdr=cmd.ExecuteReader();
returndr;
}
publicstaticintExecuteNonRead(stringcmdtext)
{
SqlConnectionconn=CreateConn();
conn.Open();
SqlCommandcmd=newSqlCommand(cmdtext,conn);
inti=cmd.ExecuteNonQuery();
conn.Close();
returni;
}
publicstaticintExecuteNonRead(stringcmdtext,paramsSqlParameter[]array)
{
SqlConnectionconn=CreateConn();
conn.Open();
SqlCommandcmd=newSqlCommand(cmdtext,conn);
foreach(SqlParameterparainarray)
cmd.Parameters.Add(para);
inti=cmd.ExecuteNonQuery();
conn.Close();
returni;
}
publicstaticobjectExecuteQueryValue(stringcmdtext,paramsSqlParameter[]array)
{
SqlConnectionconn=CreateConn();
conn.Open();
SqlCommandcmd=newSqlCommand(cmdtext,conn);
foreach(SqlParameterparainarray)
cmd.Parameters.Add(para);
objecto=cmd.ExecuteScalar();
conn.Close();
returno;
}
publicstaticobjectExecuteQueryValue(stringcmdtext)
{
SqlConnectionconn=CreateConn();
conn.Open();
SqlCommandcmd=newSqlCommand(cmdtext,conn);
objecto=cmd.ExecuteScalar();
conn.Close();
returno;
}
}
3.登录页面设计
3.1开始考试按钮的事件代码为:
protectedvoidButtonStartExam_Click(objectsender,EventArgse)
{
SqlConnectionconn=DataConn.CreateConn();
conn.Open();
//stringcmdtext="select*fromusertablewherename='"+TextBoxName.Text+"'";
//SqlDataReaderdr=dataconn.ExecuterRead(cmdtext,conn);
stringcmdtext="select*from用户信息where用户名=@username";
SqlDataReaderdr=DataConn.ExecuterRead(cmdtext,conn,newSqlParameter("@username",TextBoxName.Text));
if(dr.Read())
{
if(dr["密码"].ToString().Trim()==TextBoxPassword.Text.Trim())
{
dr.Close();
cmdtext="select*fromscorewhere用户名=@username1";
if(DataConn.ExecuterRead(cmdtext,conn,newSqlParameter("@username1",TextBoxName.Text)).Read())
Response.Write("");
else
{
Session["username"]=TextBoxName.Text;
Response.Redirect("exam.aspx");
}
}
else
Response.Write("");
}
else
{
Response.Write("");
}
conn.Close();
}
3.2注册新用户按钮的事件代码为:
protectedvoidButtonRegister_Click(objectsender,EventArgse)
{
//stringcmdtext="insertintousertable(name,password)values('"+TextBoxName.Text+"','"+TextBoxPassword.Text+"')";
SqlConnectionconn=DataConn.CreateConn();
conn.Open();
stringcmdtext="select*from用户信息where用户名=@username";
SqlParameterpara=newSqlParameter("@username",TextBoxName.Text);
SqlDataReaderdr=DataConn.ExecuterRead(cmdtext,conn,para);
if(dr.Read())
{
Response.Write("");
conn.Close();
}
else
{
cmdtext="insertinto用户信息(用户名,密码)values(@username,@password)";
SqlParameterp1=newSqlParameter("@username",TextBoxName.Text);
SqlParameterp2=newSqlParameter("@password",TextBoxPassword.Text);
if(DataConn.ExecuteNonRead(cmdtext,p1,p2)==1)
Response.Write("");
}
}
3.3查看成绩按钮的事件代码为:
protectedvoidButtonLookOverScore_Click(objectsender,EventArgse)
{
SqlConnectionconn=DataConn.CreateConn();
conn.Open();
//stringcmdtext="select*fromusertablewherename='"+TextBoxName.Text+"'";
//SqlDataReaderdr=dataconn.ExecuterRead(cmdtext,conn);
stringcmdtext="select*from用户信息,scorewhere用户信息.用户名=@usernameand用户信息.用户名=score.用户名";
SqlParameterpara=newSqlParameter("@username",TextBoxName.Text);
SqlDataReaderdr=DataConn.ExecuterRead(cmdtext,conn,para);
if(dr.Read())
{
if(dr["密码"].ToString().Trim()==TextBoxPassword.Text.Trim())
{
Session["username"]=TextBoxName.Text;
Response.Redirect("LookOverScore.aspx");
}
else
Response.Write("");
}
else
{
Response.Write("");
}
conn.Close();
}
3.4清除考试信息按钮的事件代码为:
protectedvoidButtonClearExamInfo_Click(objectsender,EventArgse)
{
stringcmdtext="selectcount(*)fromscorewhere用户名=@username";
objectobj=DataConn.ExecuteQueryValue(cmdtext,newSqlParameter("@username",TextBoxName.Text));
if(int.Parse(obj.ToString())==1)//首先判断该用户是否参加过考试
{
cmdtext="droptabledanxuandaan"+TextBoxName.Text;
DataConn.ExecuteNonRead(cmdtext);//清除该考生的单选答案表
cmdtext="droptableduoxuandaan"+TextBoxName.Text;
DataConn.ExecuteNonRead(cmdtext);//清除该考生的多选答案表
cmdtext="deletefromscorewhere用户名=@username";
DataConn.ExecuteNonRead(cmdtext,newSqlParameter("@username",TextBoxName.Text));
//清除该考生的考试成绩
}
else
Response.Write("");
}
4.考试页面设计
在设计界面上添加2个PlaceHolder,一个用于添加单选题,一个用于添加多选题。
放置一个label控件LabelUserName,用户显示用户名信息
4.1考试页面的初始化代码为
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
if(Session["username"]==null)
Response.Redirect("login.aspx");
LabelUserName.Text=LabelUserName.Text+Session["username"].ToString();
}
LoadDanXuanExam();
LoadDuoXuanExam();
}
4.1.1加载单选题
privatevoidLoadDanXuanExam()
{
SqlConnectionconn=DataConn.CreateConn();
conn.Open();
stringcmdtext="select*fromquestion";
SqlCommandcmd=newSqlCommand(cmdtext,conn);
SqlDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
{
Labellblquestion=newLabel();
lblquestion.ID="lblquestiondan"+dr["序号"].ToString();
lblquestion.Text=dr["序号"].ToString()+"."+dr["题目名"].ToString().Trim()+"()";
PlaceHolder1.Controls.Add(lblquestion);
RadioButtonListrbl=newRadioButtonList();
rbl.Items.Add(newListItem("A."+dr["选项A"].ToString(),"A"));
rbl.Items.Add(newListItem("B."+dr["选项B"].ToString(),"B"));
rbl.Items.Add(newListItem("C."+dr["选项C"].ToString(),"C"));
rbl.Items.Add(newListItem("D."+dr["选项D"].ToString(),"D"));
PlaceHolder1.Controls.Add(rbl);
}
conn.Close();
}
4.1.2加载多选题
privatevoidLoadDuoXuanExam()
{
SqlConnectionconn=DataConn.CreateConn();
conn.Open();
stringcmdtext="select*fromquestioncheck";
SqlCommandcmd=newSqlCommand(cmdtext,conn);
SqlDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
{
Labellblquestion=newLabel();
lblquestion.ID="lblquestionduo"+dr["序号"].ToString();
lblquestion.Text=dr["序号"].ToString()+"."+dr["题目名"].ToString().Trim()+"()";
PlaceHolder2.Controls.Add(lblquestion);
CheckBoxListcbl=newCheckBoxList();
cbl.Items.Add(newListItem("A."+dr["选项A"].ToString(),"A"));
cbl.Items.Add(newListItem("B."+dr["选项B"].ToString(),"B"));
cbl.Items.Add(newListItem("C."+dr["选项C"].ToString(),"C"));
cbl.Items.Add(newListItem("D."+dr["选项D"].ToString(),"D"));
cbl.Items.Add(newListItem("E."+dr["选项E"].ToString(),"E"));
PlaceHolder2.Controls.Add(cbl);
}
conn.Close();
}
4.2提交按钮的事件代码为
protectedvoidButtonSubmit_Click(objectsender,EventArgse)
{
Submitdanxuan();
Submitduoxuan();
intduoxuanscore=0;intdanxuanscore=0;
stringcmdtext="selectsum(分值)fromquestioncheck,duoxuandaan"+Session["username"].ToString()+"where序号=xuhaoanddaan=正确答案";
objectobj=DataConn.ExecuteQueryValue(cmdtext);
if(obj.ToString()!
="")duoxuanscore=int.Parse(obj.ToString());//通过判断避免没有一个正确答案时,obj的值为空字符串时产生错误
//计算多选分值
cmdtext="selectsum(分值)fromquestion,danxuandaan"+Session["username"].ToString()+"where序号=xuhaoanddaan=正确答案";
obj=DataConn.ExecuteQueryValue(cmdtext);
if(obj.ToString()!
="")danxuanscore=int.Parse(obj.ToString());
//计算单选分值
cmdtext="insertintoscore(用户名,成绩)values(@username,@score)";
SqlParameterp1=newSqlParameter("@username",Session["username"].ToString());
SqlParameterp2=newSqlParameter("@score",danxuanscore+duoxuanscore);
DataConn.ExecuteNonRead(cmdtext,p1,p2);
//存储成绩信息
}
4.2.1多选题提交
privatevoidSubmitduoxuan()
{
stringcmdtext="createtableduoxuandaan"+Session["username"].ToString()+"(xuhaoint,daannchar(10))";
DataConn.ExecuteNonRead(cmdtext);
inti=1;
foreach(ControlcontrolinPlaceHolder2.Controls)
{
if(controlisLabel)
{
i=int.Parse(((Label)control).ID.Substring(14));
}
if(controlisCheckBoxList)
{
stringdaan="";
foreach(ListItemccin((CheckBoxList)control).Items)
{
if(cc.Selected)daan=daan+cc.Value.ToString();
}
cmdtext="insertintoduoxuandaan"+Session["username"].ToString()+"(xuhao,daan)values(@xuhao,@daan)";
SqlParameterp1=newSqlParamete
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 04 简单 考试 测试 页面 11