温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:在线考试系统源码(毕业设计)
当前文件:
HBDGI338O5Y15/createTest.aspx.cs[7K,2009-6-12 11:43:44],打开代码结构图
HBDGI338O5Y15/createTest.aspx.cs[7K,2009-6-12 11:43:44],打开代码结构图1using System; 2
using System.Collections; 3
using System.ComponentModel; 4
using System.Data; 5
using System.Drawing; 6
using System.Web; 7
using System.Web.SessionState; 8
using System.Web.UI; 9
using System.Web.UI.WebControls; 10
using System.Web.UI.HtmlControls; 11
using System.Data.SqlClient; 12
using System.Data.SqlTypes; 13
using System.Configuration; 14
15
namespace TestOnline 16
{ 17
/// <summary> 18
/// createTest 的摘要说明。 19
/// </summary> 20
public class createTest : System.Web.UI.Page 21
{ 22
protected System.Web.UI.WebControls.Label lbl_stuId; 23
protected System.Web.UI.WebControls.Label lbl_stuName; 24
protected System.Web.UI.WebControls.Label lbl_courseName; 25
protected System.Web.UI.WebControls.ImageButton Ibtn_submit; 26
protected System.Web.UI.WebControls.ImageButton Ibtn_createTest; 27
protected System.Web.UI.WebControls.Panel Panel2; 28
protected System.Web.UI.WebControls.LinkButton LinkButton2; 29
protected System.Web.UI.WebControls.Panel Panel1; 30
31
private void Page_Load(object sender, System.EventArgs e) 32
{ 33
// 在此处放置用户代码以初始化页面 34
if(Session["stuId"]==null) 35
{ 36
Response.Redirect("login.aspx"); 37
}else 38
{ 39
Ibtn_submit.Attributes.Add("OnClick","return confirm('你的确要交卷吗?交卷后将不能再考试!');"); 40
string courseId=Convert.ToString(Session["courseId"]); 41
string stuId=Convert.ToString(Session["stuId"]); 42
string stuName=(new projClass()).getUserName(stuId); 43
string courseName=(new projClass()).getCourseNameAsCourseId(courseId); 44
lbl_stuId.Text=stuId; 45
lbl_stuName.Text=stuName; 46
lbl_courseName.Text=courseName; 47
/* 48
以下生成试题的思路: 49
通过存储过程在试题库里随机的选择出50道题,一旦生成后即往分数表里面添加记录,分数为0. 50
试题生成后,将试题的ID都存入一个哈希表,如果用户刷新,就判断分数表里面是否有记录,有则从哈希表里取出试题的ID, 51
再次生成,从而达到了防刷新的目的.(传统的考试系统在刷新之后能 再次生成试题) 52
53
*/ 54
55
//ifCreate表示是否已经生成过试题 56
int ifCreate=(new projClass()).ifCourseHasTest(stuId,courseId); 57
if(ifCreate!=1) 58
//if(!Page.IsPostBack) 59
{ 60
SqlDataReader reader=(new projClass()).createTest(courseId); 61
//一旦生成的试题就向分数表score里面添加记录,分数为0,并且在学生表student里面改学生的状态 62
int count=(new projClass()).insertStuStatusToScore(stuId,courseId,0,0); 63
int count1=(new projClass()).updateStuStatus(stuId,courseId,1); 64
if(count==0||count1==0) 65
Response.Write("<script>alert(\"更新状态错误!\");</script>"); 66
Hashtable ht_rightAnswer=new Hashtable(); 67
Hashtable ht_stuTest=new Hashtable();//存储学生第一次进入页面时产生的题目ID,以免刷新时题目改变. 68
int num=1; 69
while(reader.Read()) 70
{ 71
Literal lit_testContent=new Literal(); 72
RadioButtonList rbtnList=new RadioButtonList(); 73
rbtnList.ID="rbtnList"+num.ToString(); 74
//rbtnList.RepeatDirection=RepeatDirection.Horizontal; 75
lit_testContent.Text="<br>"+num.ToString()+"、"+Server.HtmlEncode(reader["testContent"].ToString())+"<br>"; 76
rbtnList.Items.Add("A. "+Server.HtmlEncode(reader["testAns1"].ToString())); 77
rbtnList.Items.Add("B. "+Server.HtmlEncode(reader["testAns2"].ToString())); 78
rbtnList.Items.Add("C. "+Server.HtmlEncode(reader["testAns3"].ToString())); 79
rbtnList.Items.Add("D. "+Server.HtmlEncode(reader["testAns4"].ToString())); 80
//得到题目的正确答案,并添加到哈希表中 81
string testId=reader["testId"].ToString(); 82
ht_stuTest.Add(num.ToString(),testId.ToString()); 83
int rightAns=(new projClass()).getRightAnsAsTestId(testId); 84
ht_rightAnswer.Add(num.ToString(),rightAns); 85
// Response.Write(rightAns.ToString()); 86
for(int j=1;j<=4;j++) 87
{ 88
rbtnList.Items[j-1].Value=j.ToString(); 89
} 90
if(num<=25) 91
{ 92
Panel1.Controls.Add(lit_testContent); 93
Panel1.Controls.Add(rbtnList); 94
} 95
else 96
{ 97
Panel2.Controls.Add(lit_testContent); 98
Panel2.Controls.Add(rbtnList); 99
} 100
num++; 101
} 102
Session["rightAnswer"]=ht_rightAnswer; 103
Session["stuTest"]=ht_stuTest; 104
} 105
106
//不是第一次进入页面 107
else 108
{ // int num=1; 109
//if(Session["ht_stuTest"]==null) 110
//Response.Write("<script>alert(\"由于刷新产生了错误!请重新登录或联系管理员!\");</script>"); 111
112
Hashtable ht_stuTest=(Hashtable)Session["stuTest"]; 113
string testId=""; 114
115
DataSet ds; 116
bool find; 117
for(int num=1;num<=50;num++) 118
{ 119
find=false; 120
IDictionaryEnumerator myEnumerator = ht_stuTest.GetEnumerator(); 121
while(myEnumerator.MoveNext()&&!find) 122
123
if(myEnumerator.Key.Equals(num.ToString())) 124
{ 125
testId=myEnumerator.Value.ToString(); 126
find=true; 127
ds=(new projClass()).getTestInfoAsId(testId); 128
DataTable dt=ds.Tables["testInfo"]; 129
DataRow dataRow=dt.Rows[0]; 130
Literal lit_testContent=new Literal(); 131
RadioButtonList rbtnList=new RadioButtonList(); 132
rbtnList.ID="rbtnList"+num.ToString(); 133
lit_testContent.Text="<br>"+num.ToString()+"、"+Server.HtmlEncode(Convert.ToString(dataRow["testContent"]))+"<br>"; 134
rbtnList.Items.Add("A. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns1"]))); 135
rbtnList.Items.Add("B. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns2"]))); 136
rbtnList.Items.Add("C. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns3"]))); 137
rbtnList.Items.Add("D. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns4"]))); 138
//得到题目的正确答案,并添加到哈希表中 139
140
//ht_stuTest.Add(num.ToString(),testId.ToString()); 141
int rightAns=(new projClass()).getRightAnsAsTestId(testId); 142
for(int j=1;j<=4;j++) 143
{ 144
rbtnList.Items[j-1].Value=j.ToString(); 145
} 146
if(num<=25) 147
{ 148
Panel1.Controls.Add(lit_testContent); 149
Panel1.Controls.Add(rbtnList); 150
} 151
else 152
{ 153
Panel2.Controls.Add(lit_testContent); 154
Panel2.Controls.Add(rbtnList); 155
} 156
} 157
} 158
159
160
} 161
} 162
163
} 164
165
Web 窗体设计器生成的代码 186
187
private void Ibtn_submit_Click(object sender, System.Web.UI.ImageClickEventArgs e) 188
{ 189
Hashtable ht_stuAnswer=new Hashtable(); 190
/*RadioButtonList list1=(RadioButtonList)Panel1.FindControl("rbtnList1"); 191
string ans1=""; 192
if(Page.IsPostBack) 193
ans1+="back"; 194
if(list1!=null) 195
ans1=list1.SelectedValue.ToString(); 196
197
//RadioButtonList list; 198
string ans=""; 199
ans=ans1;*/ 200
string ans=""; 201
for(int i=1;i<=50;i++) 202
{RadioButtonList list; 203
if(i<=25) 204
{ 205
list=(RadioButtonList)Panel1.FindControl("rbtnList"+i.ToString()); 206
}else list=(RadioButtonList)Panel2.FindControl("rbtnList"+i.ToString()); 207
if(list!=null) 208
{ ans=list.SelectedValue.ToString(); 209
if(!ht_stuAnswer.Contains(i.ToString())) 210
ht_stuAnswer.Add(i.ToString(),ans); 211
}else ans+=i.ToString()+"null"; 212
} 213
Session["stuAnswer"]=ht_stuAnswer; 214
Session["ans"]=ans; 215
Response.Redirect("result.aspx?stuId="+Convert.ToString(Session["stuId"])+"courseId="+Convert.ToString(Session["courseId"])); 216
} 217
218
219
} 220
} 221






}