温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:Asp.net在线考试系统源码及毕业设计论文
当前文件:
ExamOnline/Students/examonline.aspx.cs[13K,2009-6-12 11:42:06],打开代码结构图
ExamOnline/Students/examonline.aspx.cs[13K,2009-6-12 11:42:06],打开代码结构图1using System; 2
using System.Data; 3
using System.Configuration; 4
using System.Collections; 5
using System.Web; 6
using System.Web.Security; 7
using System.Web.UI; 8
using System.Web.UI.WebControls; 9
using System.Web.UI.WebControls.WebParts; 10
using System.Web.UI.HtmlControls; 11
using System.Data.SqlClient; 12
13
public partial class Students_examonline : System.Web.UI.Page 14
{ 15
protected void Page_Load(object sender, EventArgs e) 16
{ 17
HttpContext.Current.Application.Remove("EndTime"); 18
//------------------------------------------------防止直接访问 19
string strCheck = "exam"; 20
if (Session["checkUser"].ToString() != strCheck.ToString()) 21
{ 22
Response.Redirect("login.aspx"); 23
} 24
//-------------------------------------------------------- 25
//Session["userID"] = "0301095"; //测试学号 26
27
lblExamTitle.Text = (new ExamOnline.Exam()).getCurrentPageTitle(); //取得试卷的标题 28
lblStuInfo.Text = (new ExamOnline.Exam()).getCurrentStudMessage(Session["userID"].ToString()); //取得考生的详细信息 29
int paperID = (new ExamOnline.Exam()).getCurrentPaperID(); //取得当前试卷的ID 30
//int paperID = 2; //测试试卷 31
hidPaperID.Value = Convert.ToString(paperID); 32
hidUserID.Value = Convert.ToString(Session["userID"]); 33
//--------------------------------------------------------------取得试卷的题型 34
DataTable dtStyles = (new ExamOnline.Exam()).getStyles(paperID); 35
if (dtStyles.Rows.Count > 0) 36
{ 37
for (int i = 0; i < dtStyles.Rows.Count; i++) 38
{ 39
int styles = Convert.ToInt32(dtStyles.Rows[i][0]); 40
if (styles ==Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesJudge)) //判断题 41
{ 42
Label lblStyles = new Label(); 43
lblStyles.Text = "<br>判断题:<br>"; 44
lblStyles.Font.Bold = true; 45
panelContext.Controls.Add(lblStyles); 46
47
DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles); 48
int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]); //该题型的题目的开始序号 49
int qnumAll = dtQues.Rows.Count; //题型的题目总量 50
51
for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++) 52
{ 53
Literal litTitle = new Literal(); 54
litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>"; 55
56
DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum); 57
int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量 58
RadioButtonList rbl = new RadioButtonList(); 59
rbl.RepeatDirection = RepeatDirection.Horizontal; 60
rbl.ID = "rbl" + qnum.ToString(); 61
for (int j = 0; j <= optionsAll - 1; j++) 62
{ 63
string strABC = Convert.ToString(dtOptions.Rows[j][0]); 64
string strOption = Convert.ToString(dtOptions.Rows[j][1]); 65
ListItem li = new ListItem(); 66
li.Value = strABC; 67
li.Text = strABC + "、" + strOption; 68
rbl.Items.Add(li); 69
} 70
panelContext.Controls.Add(litTitle); 71
panelContext.Controls.Add(rbl); 72
} 73
74
} 75
else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesSingle)) //单选题 76
{ 77
Label lblStyles = new Label(); 78
lblStyles.Text = "<br>单选题:<br>"; 79
lblStyles.Font.Bold = true; 80
panelContext.Controls.Add(lblStyles); 81
82
DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles); 83
int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]); //该题型的题目的开始序号 84
int qnumAll = dtQues.Rows.Count; //题型的题目总量 85
86
for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++) 87
{ 88
Literal litTitle = new Literal(); 89
litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>"; 90
91
DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum); 92
int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量 93
RadioButtonList rbl = new RadioButtonList(); 94
rbl.ID = "rbl" + qnum.ToString(); 95
for (int j = 0; j <= optionsAll - 1; j++) 96
{ 97
string strABC = Convert.ToString(dtOptions.Rows[j][0]); 98
string strOption = Convert.ToString(dtOptions.Rows[j][1]); 99
ListItem li = new ListItem(); 100
li.Value = strABC; 101
li.Text = strABC + "、" + strOption; 102
rbl.Items.Add(li); 103
} 104
panelContext.Controls.Add(litTitle); 105
panelContext.Controls.Add(rbl); 106
} 107
} 108
else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesMulti)) //多选题 109
{ 110
Label lblStyles = new Label(); 111
lblStyles.Text = "<br>多选题:<br>"; 112
lblStyles.Font.Bold = true; 113
panelContext.Controls.Add(lblStyles); 114
115
DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles); 116
int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]); //该题型的题目的开始序号 117
int qnumAll = dtQues.Rows.Count; //题型的题目总量 118
for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++) 119
{ 120
Literal litTitle = new Literal(); 121
litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>"; 122
123
DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum); 124
int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量 125
CheckBoxList cbl = new CheckBoxList(); 126
cbl.ID = "cbl" + qnum.ToString(); 127
for (int j = 0; j <= optionsAll - 1; j++) 128
{ 129
string strABC = Convert.ToString(dtOptions.Rows[j][0]); 130
string strOption = Convert.ToString(dtOptions.Rows[j][1]); 131
ListItem li = new ListItem(); 132
li.Value = strABC; 133
li.Text = strABC + "、" + strOption; 134
cbl.Items.Add(li); 135
} 136
panelContext.Controls.Add(litTitle); 137
panelContext.Controls.Add(cbl); 138
} 139
} 140
else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesOther)) //主观题 141
{ 142
Label lblStyles = new Label(); 143
lblStyles.Text = "<br>主观题:<br>"; 144
lblStyles.Font.Bold = true; 145
panelContext.Controls.Add(lblStyles); 146
147
DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles); 148
int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]); //该题型的题目的开始序号 149
int qnumAll = dtQues.Rows.Count; //题型的题目总量 150
for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++) 151
{ 152
Literal litTitle = new Literal(); 153
litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>"; 154
155
string strAnswer = (new ExamOnline.Exam()).getAnswer(paperID, qnum); 156
TextBox tb = new TextBox(); 157
tb.TextMode = TextBoxMode.MultiLine; 158
tb.Width = 600; 159
tb.Height = 80; 160
tb.ID = "tb" + qnum.ToString(); 161
panelContext.Controls.Add(litTitle); 162
panelContext.Controls.Add(tb); 163
} 164
} 165
} 166
} 167
} 168
protected void btnSubmit_Click(object sender, EventArgs e) 169
{ 170
int paperID = Convert.ToInt32(hidPaperID.Value); 171
string userID = hidUserID.Value; 172
DataTable dtQues1 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesJudge)); //取得判断题 173
DataTable dtQues2 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesSingle)); //取得单选题 174
DataTable dtQues3 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesMulti)); //取得多选题 175
DataTable dtQues4 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesOther)); //取得主观题 176
int SingleNum = dtQues1.Rows.Count + dtQues2.Rows.Count; //取得判断题和单选题的题量 177
int MultiNum = dtQues3.Rows.Count; //取得多选题的题量 178
int OtherNum = dtQues4.Rows.Count; //取得主观题的题量 179
//-------------------------------------------------- 180
try 181
{ 182
if (SingleNum > 0) //添加判断题和单选题 183
{ 184
for (int i = 1; i <= SingleNum; i++) 185
{ 186
RadioButtonList rbl = new RadioButtonList(); 187
rbl = (RadioButtonList)panelContext.FindControl("rbl" + i.ToString()); 188
string SingleAnswer = (new ExamOnline.Exam()).getSingleAns(rbl); 189
int qid = (new ExamOnline.Exam()).getQuesID(paperID, i); 190
string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) "; 191
strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + SingleAnswer + "')"; 192
ExamOnline.Exam exam = new ExamOnline.Exam(); 193
exam.exec(strexec); 194
} 195
} 196
if (MultiNum > 0) //添加多选题 197
{ 198
for (int i = SingleNum + 1; i <= SingleNum + MultiNum; i++) 199
{ 200
CheckBoxList cbl = (CheckBoxList)panelContext.FindControl("cbl" + i.ToString()); 201
string MultiAnswers = (new ExamOnline.Exam()).getMultiAns(cbl); 202
int qid = (new ExamOnline.Exam()).getQuesID(paperID, i); 203
string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) "; 204
strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + MultiAnswers + "')"; 205
ExamOnline.Exam exam = new ExamOnline.Exam(); 206
exam.exec(strexec); 207
} 208
} 209
if (OtherNum > 0) //添加主观题 210
{ 211
for (int i = SingleNum + MultiNum + 1; i <= SingleNum + MultiNum + OtherNum; i++) 212
{ 213
TextBox tb = (TextBox)panelContext.FindControl("tb" + i.ToString()); 214
string Answer = tb.Text.ToString(); 215
int qid = (new ExamOnline.Exam()).getQuesID(paperID, i); 216
string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) "; 217
strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + Answer + "')"; 218
ExamOnline.Exam exam = new ExamOnline.Exam(); 219
exam.exec(strexec); 220
} 221
} 222
} 223
catch(Exception ee) 224
{ 225
ExamOnline.Common.ShowMess(ee.Message); 226
} 227
finally 228
{ 229
string strEnd = "update paper_students set stu_state=1 where paper_id='" + hidPaperID.Value + "' and stu_id='" +hidUserID.Value +"'"; 230
(new ExamOnline.Exam()).exec(strEnd); 231
Response.Redirect("end.htm"); 232
} 233
//------------------------------------------------------ 234
} 235
} 236






}
}