温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:Asp.net在线考试系统源码及毕业设计论文
当前文件:
ExamOnline/App_Code/Exam.cs[17K,2009-6-12 11:42:06],打开代码结构图
ExamOnline/App_Code/Exam.cs[17K,2009-6-12 11:42:06],打开代码结构图1using System; 2
using System.Data; 3
using System.Configuration; 4
using System.Web; 5
using System.Web.Security; 6
using System.Web.UI; 7
using System.Web.UI.WebControls; 8
using System.Web.UI.WebControls.WebParts; 9
using System.Web.UI.HtmlControls; 10
using System.Data.SqlClient; 11
using System.IO; 12
13
14
namespace ExamOnline 15
{ 16
//该源码下载自www.51aspx.com(51aspx.com) 17
18
/// <summary> 19
/// 和试卷读取相关的类 20
/// </summary> 21
public class Exam 22
{ 23
string strcon = ""; //连接字符串 24
25
/// <summary> 26
/// 构造函数,连接字符串 27
/// </summary> 28
public Exam() 29
{ 30
if (strcon == "") 31
{ 32
if (HttpContext.Current.Application["strcon"] == null) 33
{ 34
string path = HttpContext.Current.Request.PhysicalApplicationPath + "DBSet.ini";//获取文件物理路径 35
StreamReader sr = new StreamReader(path, System.Text.Encoding.Default); 36
strcon = sr.ReadLine();//读取文件内容 37
HttpContext.Current.Application["strcon"] = strcon; 38
} 39
else 40
{ 41
strcon = HttpContext.Current.Application["strcon"].ToString(); 42
} 43
} 44
} 45
46
47
/// <summary> 48
/// 取得当前可以考试的试卷ID 49
/// </summary> 50
/// <returns></returns> 51
public int getCurrentPaperID() 52
{ 53
SqlConnection con = new SqlConnection(strcon); 54
string strcmdExam = "select * from testpaper_list where paper_time > @dtNow and test=1 and audit=1 order by paper_time asc "; 55
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 56
cmdExam.Parameters.Add("@dtNow", SqlDbType.DateTime).Value =(new Login()).dsDelay(30);//调用自定义函数dsDelay() 57
con.Open(); 58
SqlDataReader drExam = cmdExam.ExecuteReader(); 59
if (drExam.Read()) 60
{ 61
return drExam.GetInt32(0); 62
} 63
else 64
{ 65
return 0; 66
} 67
68
} 69
70
/// <summary> 71
/// 取得当前考试试卷的名称 72
/// </summary> 73
/// <returns></returns> 74
public string getCurrentPageTitle() 75
{ 76
SqlConnection con = new SqlConnection(strcon); 77
string strcmdExam = "select paper_name from testpaper_list where paper_id=@ID"; 78
SqlCommand cmdExam = new SqlCommand(strcmdExam,con); 79
cmdExam.Parameters.Add("@ID",SqlDbType.Int).Value = getCurrentPaperID(); 80
con.Open(); 81
string strExamTitle = "信息读取错误"; 82
SqlDataReader dr = cmdExam.ExecuteReader(); 83
if (dr.Read()) 84
{ 85
strExamTitle = dr.GetString(0); 86
con.Close(); 87
} 88
return strExamTitle; 89
} 90
91
public string getCurrentPageTitle(int paperid) 92
{ 93
SqlConnection con = new SqlConnection(strcon); 94
string strcmdExam = "select paper_name from testpaper_list where paper_id=@ID"; 95
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 96
cmdExam.Parameters.Add("@ID", SqlDbType.Int).Value = paperid; 97
con.Open(); 98
string strExamTitle = "信息读取错误"; 99
SqlDataReader dr = cmdExam.ExecuteReader(); 100
if (dr.Read()) 101
{ 102
strExamTitle = dr.GetString(0); 103
con.Close(); 104
} 105
return strExamTitle; 106
} 107
108
/// <summary> 109
/// 取得考生详细信息,通过学号 110
/// </summary> 111
/// <param name="stu_id"></param> 112
/// <returns></returns> 113
public string getCurrentStudMessage(string stu_id) 114
{ 115
SqlConnection con = new SqlConnection(strcon); 116
string strcmdExam = "select name,sex,grade,major,class from students where stu_id = @ID"; 117
SqlCommand cmdExam = new SqlCommand(strcmdExam,con); 118
cmdExam.Parameters.Add("@ID",SqlDbType.VarChar).Value = stu_id; 119
con.Open(); 120
SqlDataReader drExam = cmdExam.ExecuteReader(); 121
if (drExam.Read()) 122
{ 123
string strName = drExam.GetString(0); 124
string strSex = drExam.GetString(1); 125
string strGrade = drExam.GetString(2); 126
string strMajor = drExam.GetString(3); 127
string strClass = drExam.GetString(4); 128
string strAll = "学号:<u>" + stu_id + "</u>;姓名:<u>" + strName + "</u>;性别:<u>" + strSex + "</u>;年级:<u>" + strGrade + "</u>;专业:<u>" + strMajor + "</u>;班级:<u>" + strClass + "</u>;"; 129
drExam.Close(); 130
con.Close(); 131
return strAll; 132
} 133
else 134
{ 135
con.Close(); 136
string strMessage = "数据读取错误!"; 137
return strMessage; 138
} 139
140
} 141
142
/// <summary> 143
/// 通过试卷ID来统计该试卷的总题量 144
/// </summary> 145
/// <param name="paperID"></param> 146
/// <returns></returns> 147
public int getQuesNum(int paperID) 148
{ 149
SqlConnection con = new SqlConnection(strcon); 150
string strcmdExam = "select count(*) from testpaper where paper_id=@paperID"; 151
SqlCommand cmdExam = new SqlCommand(strcmdExam,con); 152
cmdExam.Parameters.Add("@paperID",SqlDbType.Int).Value = paperID; 153
con.Open(); 154
SqlDataReader drExam = cmdExam.ExecuteReader(); 155
if(drExam.Read()) 156
{ 157
int quesNum = drExam.GetInt32(0); 158
con.Close(); 159
return quesNum; 160
} 161
con.Close(); 162
return 0; 163
} 164
165
/// <summary> 166
/// 通过试卷ID来统计该试卷的总分 167
/// </summary> 168
/// <param name="paperID"></param> 169
/// <returns></returns> 170
public int getQuesScore(int paperID) 171
{ 172
SqlConnection con = new SqlConnection(strcon); 173
string strcmdExam = "select qscore from testpaper where paper_id=@paperID"; 174
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 175
cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID; 176
con.Open(); 177
SqlDataReader drExam = cmdExam.ExecuteReader(); 178
int scoreAll = 0; 179
while (drExam.Read()) 180
{ 181
scoreAll += drExam.GetInt32(0); 182
} 183
con.Close(); 184
return scoreAll; 185
} 186
187
/// <summary> 188
/// 通过试卷ID来取得试卷的题型 189
/// </summary> 190
/// <param name="paperID"></param> 191
/// <returns></returns> 192
public DataTable getStyles(int paperID) 193
{ 194
SqlConnection con = new SqlConnection(strcon); 195
string strcmdExam = "select distinct q.sid,s.sname from styles s left join questions q on q.sid = s.sid left join testpaper t on t.qid = q.qid where t.paper_id =@paperID order by q.sid asc"; 196
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 197
cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID; 198
con.Open(); 199
SqlDataAdapter da = new SqlDataAdapter(cmdExam); 200
DataTable dt = new DataTable(); 201
DataSet ds = new DataSet(); 202
da.Fill(ds, "table"); 203
dt = ds.Tables["table"]; 204
con.Close(); 205
return dt; 206
} 207
208
/// <summary> 209
/// 通过试卷ID和题型ID来取得某一个题型题目table[q_num 题目顺序,qid 题目ID,content题目内容] 210
/// </summary> 211
/// <param name="paperID">试卷ID</param> 212
/// <param name="sID">题型ID</param> 213
/// <returns>返回该题型的题目datatable</returns> 214
public DataTable getQues(int paperID,int sID) 215
{ 216
SqlConnection con = new SqlConnection(strcon); 217
string strcmdExam = "select tp.q_num,tp.qid,qs.content from testpaper tp left join questions qs on tp.qid=qs.qid where tp.paper_id=@paperID and qs.sid=@sID order by tp.q_num"; 218
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 219
cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID; 220
cmdExam.Parameters.Add("@sID", SqlDbType.Int).Value = sID; 221
con.Open(); 222
SqlDataAdapter da = new SqlDataAdapter(cmdExam); 223
DataTable dt = new DataTable(); 224
DataSet ds = new DataSet(); 225
da.Fill(ds, "table"); 226
dt = ds.Tables["table"]; 227
con.Close(); 228
return dt; 229
} 230
231
/// <summary> 232
/// 通过试卷ID和题目q_num来取得某个题目(选择题)的选项和正确答案标识 table[optionname,options,answer] 233
/// </summary> 234
/// <param name="paperID"></param> 235
/// <param name="q_num"></param> 236
/// <returns></returns> 237
public DataTable getOptions(int paperID,int q_num) 238
{ 239
SqlConnection con = new SqlConnection(strcon); 240
string strcmdExam = "select a.optionsname,a.options,a.answer from answers a left join testpaper t on a.qid = t.qid where t.q_num =@q_num and t.paper_id =@paperID"; 241
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 242
cmdExam.Parameters.Add("@q_num", SqlDbType.Int).Value = q_num; 243
cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID; 244
con.Open(); 245
SqlDataAdapter da = new SqlDataAdapter(cmdExam); 246
DataTable dt = new DataTable(); 247
DataSet ds = new DataSet(); 248
da.Fill(ds, "table"); 249
dt = ds.Tables["table"]; 250
con.Close(); 251
return dt; 252
} 253
254
255
/// <summary> 256
/// 取得选择题的正确答案 257
/// </summary> 258
/// <param name="paperID"></param> 259
/// <param name="q_num"></param> 260
/// <returns></returns> 261
public string getSelectAnswer(int paperID, int q_num) 262
{ 263
string answers = ""; 264
DataTable dt = getOptions(paperID, q_num); 265
int AnswersNum = Convert.ToInt32(dt.Rows.Count); 266
if (AnswersNum > 0) 267
{ 268
for (int i = 0; i <= AnswersNum - 1;i++) 269
{ 270
if(Convert.ToString(dt.Rows[i][2]) == "1") 271
{ 272
answers += Convert.ToString(dt.Rows[i][0]); 273
} 274
} 275
} 276
return answers; 277
} 278
/// <summary> 279
/// 通过试卷ID和题目q_num来取得某个题目(简答题)正确答案 280
/// </summary> 281
/// <param name="paperID"></param> 282
/// <param name="q_num"></param> 283
/// <returns></returns> 284
public string getAnswer(int paperID, int q_num) 285
{ 286
SqlConnection con = new SqlConnection(strcon); 287
string quesResult = ""; 288
string strcmdExam = "select t.q_num,a.options from answers a left join testpaper t on a.qid = t.qid where t.q_num =@q_num and t.paper_id =@paperID"; 289
SqlCommand cmdExam = new SqlCommand(strcmdExam, con); 290
cmdExam.Parameters.Add("@q_num", SqlDbType.Int).Value = q_num; 291
cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID; 292
con.Open(); 293
SqlDataReader dr = cmdExam.ExecuteReader(); 294
if (dr.Read()) 295
{ 296
quesResult = dr.GetString(1).ToString(); 297
} 298
con.Close(); 299
return quesResult; 300
} 301
302
/// <summary> 303
/// 取得RadioButtonList被选中的项的value 304
/// </summary> 305
/// <param name="rbl"></param> 306
/// <returns></returns> 307
public string getSingleAns(RadioButtonList rbl) 308
{ 309
string Answer = ""; 310
if (rbl.SelectedIndex != -1) 311
{ 312
Answer = rbl.SelectedValue; 313
} 314
else 315
{ 316
Answer = ""; 317
} 318
return Answer; 319
} 320
/// <summary> 321
/// 取得CheckBoxList被选中的项的value 322
/// </summary> 323
/// <param name="cbl"></param> 324
/// <returns></returns> 325
public string getMultiAns(CheckBoxList cbl) 326
{ 327
string Answers = ""; 328
foreach(ListItem li in cbl.Items ) 329
{ 330
if (li.Selected) 331
{ 332
Answers += li.Value.ToString(); 333
} 334
} 335
return Answers; 336
} 337
338
/// <summary> 339
/// 通过试卷ID和题目序号来取得题目的真实ID 340
/// </summary> 341
/// <param name="qnum"></param> 342
/// <returns></returns> 343
public int getQuesID(int paperID,int qnum) 344
{ 345
SqlConnection con = new SqlConnection(strcon); 346
con.Open(); 347
string strcmd = "select qid from testpaper where paper_id=@paper_id and q_num=@q_num"; 348
SqlCommand cmd = new SqlCommand(strcmd, con); 349
cmd.Parameters.Add("@paper_id",SqlDbType.Int).Value = paperID; 350
cmd.Parameters.Add("@q_num", SqlDbType.Int).Value = qnum; 351
int qid =Convert.ToInt32(cmd.ExecuteScalar()); 352
con.Close(); 353
return qid; 354
} 355
356
/// <summary> 357
/// 执行sql语句 358
/// </summary> 359
/// <param name="strcmd"></param> 360
public void exec(string strcmd) 361
{ 362
SqlConnection con = new SqlConnection(strcon); 363
con.Open(); 364
SqlCommand cmd = new SqlCommand(strcmd, con); 365
try 366
{ 367
cmd.ExecuteNonQuery(); 368
} 369
catch (Exception ee) 370
{ 371
ExamOnline.Common.ShowMess(ee.Message); 372
} 373
finally 374
{ 375
con.Close(); 376
} 377
} 378
379
/// <summary> 380
/// 取得考试还剩下的时间,没有用到,后来使用了WSEndTime.asmx里的函数。 381
/// </summary> 382
/// <returns></returns> 383
public string getTimeLeave() 384
{ 385
SqlConnection con = new SqlConnection(strcon); 386
con.Open(); 387
string strcmd = "select endtime from testpaper_list where paper_id=" + (new ExamOnline.Exam()).getCurrentPaperID(); 388
//string strcmd = "select endtime from testpaper_list where paper_id=1"; //测试 389
SqlCommand cmd = new SqlCommand(strcmd, con); 390
DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar()); 391
con.Close(); 392
TimeSpan ts = dt - DateTime.Now; 393
string hours = ""; 394
string minutes = ""; 395
if (ts.Hours < 10) 396
{ 397
hours = "0" + ts.Hours.ToString(); 398
} 399
else 400
{ 401
hours = ts.Hours.ToString(); 402
} 403
if (ts.Minutes < 10) 404
{ 405
minutes = "0" + ts.Minutes.ToString(); 406
} 407
else 408
{ 409
minutes = ts.Minutes.ToString(); 410
} 411
return hours + ":" + minutes; 412
} 413
414
/// <summary> 415
/// 取得考试结束的时间,供WSEndTime.asmx调用,控制考试时间 416
/// </summary> 417
/// <returns></returns> 418
public DateTime getEndTime() 419
{ 420
SqlConnection con = new SqlConnection(strcon); 421
string strcmd = "select endtime from testpaper_list where paper_id=" + (new ExamOnline.Exam()).getCurrentPaperID(); 422
SqlCommand cmd = new SqlCommand(strcmd, con); 423
con.Open(); 424
DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar()); 425
return dt; 426
} 427
428
/// <summary> 429
/// 绑定listbox,用于页面exerciselogin.aspx 430
/// </summary> 431
/// <param name="lb"></param> 432
/// <param name="selID">为0时绑定课程,其他时候绑定特定课程ID(selID)绑定练习卷</param> 433
public void bindListBox(ListBox lb, string selID) 434
{ 435
SqlConnection con = new SqlConnection(strcon); 436
con.Open(); 437
string strcmd = ""; 438
if (selID == "0") 439
{ 440
strcmd = "select cid,cname from course"; 441
} 442
else 443
{ 444
strcmd = "select paper_id,paper_name from testpaper_list where test=0 and cid='" + selID + "'"; 445
} 446
SqlCommand cmd = new SqlCommand(strcmd, con); 447
SqlDataReader dr = cmd.ExecuteReader(); 448
while(dr.Read()) 449
{ 450
ListItem li = new ListItem(); 451
li.Value =Convert.ToString(dr.GetValue(0)); 452
li.Text = dr.GetString(1); 453
lb.Items.Add(li); 454
} 455
con.Close(); 456
} 457
} 458
459
} 460






}