成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談如何構(gòu)建網(wǎng)上ASP.NET考試系統(tǒng)

開發(fā) 后端
隨著計算機(jī)網(wǎng)絡(luò)的普及,基于數(shù)據(jù)庫的B/S網(wǎng)上考試系統(tǒng)得到廣泛地應(yīng)用,現(xiàn)以ASP..NET(C#)+SQL server(或ACCESS)為例說明開發(fā)網(wǎng)上ASP.NET考試系統(tǒng)的實(shí)現(xiàn)方法。

一、ASP.NET考試系統(tǒng)數(shù)據(jù)庫的設(shè)計:

建立數(shù)據(jù)庫netexam,在庫中添加考生信息表StuInfo,分別建立以下字段:考號ExamId(c)(主鍵)、考生姓名Name(c)、是否登錄考試LogYn(c)、得分Score(c)、隨機(jī)生成的試題答案mca(c)(注:此處以多選題為例,單選題、判斷題同理)。添加多選題題庫表mc,建立以下字段:題目question(c)、四個選choice1(c)、choice2(c)、choice3(c)、choice4(c)、答案answer(c)(注:多選題答案用0表示未選,1表示選擇,如選擇ABD就用1101表示)。

二、考生登錄:

在此處將考生信息插入表StuInfo,此處要防止考生重復(fù)登錄!給指定***的考號,并將考號字段ExamId(c)設(shè)為主鍵,當(dāng)重復(fù)登錄時,用Catch捕獲錯誤,給出相應(yīng)提示,部分代碼如下(login.aspx):

  1. privatevoidButOk_Click(objectsender,System.EventArgse)  
  2. {  
  3. ...  
  4. SqlConnectionStuConn=newSqlConnection("DataSource=localhost;IntegratedSecurity=SSPI;  
  5. InitialCatalog=netexam");  
  6. SqlCommandLoginCmd=StuConn.CreateCommand();//可根據(jù)不同情況選擇不同的數(shù)據(jù)庫連接  
  7. ...  
  8. LoginCmd.CommandText="InsertintoStuInfo(ExamId,Name)values('"+TxtId.Text.Trim()+"','"+TxtName.Text.Trim()+"')";  
  9. //將考號、姓名插入相應(yīng)字段,其中TxtId,TxtName分別是輸入考號和姓名的文本框  
  10. try  
  11. {  
  12. ...  
  13. Session["Id"]=TxtId.Text.Trim();  
  14. StuConn.Open();  
  15. LoginCmd.ExecuteReader();  
  16. Response.Redirect("test.aspx");  
  17. }  
  18. catch(Exception)//捕獲相應(yīng)錯誤  
  19. {  
  20. Response.Write("<scriptlanguagescriptlanguage=\"javascript\">"+"\n");  
  21. Response.Write("alert(\"不能重復(fù)登錄,或考號、姓名、密碼是否有誤!\")"+"\nscript>");  
  22. }  
  23. ...  

三、試題生成:

1、防止考生刷新頁面:

由于加載試題頁面時將從數(shù)據(jù)庫中隨機(jī)抽取試題,所以應(yīng)防止考生刷新面頁(刷新頁面會重新生成新的試題)。方法是將表StuInfo中的LogYn字段默認(rèn)值設(shè)為0,加載試題后設(shè)為1,交卷評分后設(shè)為2,加載試題頁面時進(jìn)行相應(yīng)檢查,以防止頁面的刷新,代碼如下(test.aspx):

  1. privatevoidPage_Load(objectsender,System.EventArgse)  
  2. {  
  3. if(!IsPostBack)  
  4. {  
  5. ...  
  6. QuestCmd.CommandText="selectLogYnfromStuInfowhereExamId='"+Session["Id"].ToString()+"'";  
  7. QuestConn.Open();  
  8. SqlDataReaderQuestRd=QuestCmd.ExecuteReader();  
  9. QuestRd.Read();  
  10. if(QuestRd["LogYn"].ToString().Trim().Equals("1")||QuestRd["LogYn"].ToString().Trim().Equals("2"))  
  11. //判斷是否已加載試題或是否已評分  
  12. {  
  13. ...  
  14. Response.Write("<scriptlanguagescriptlanguage=\"javascript\">"+"\n");  
  15. Response.Write("alert(\"不能刷新!請與管理員聯(lián)系,重新登錄。\")"+"\nscript>");  
  16. ...  
  17. }  
  18. else  
  19. {  
  20. ...  
  21. QuestCmd.CommandText="updateStuInfosetLogYn='1'";//已成功加載試題  
  22. QuestCmd.ExecuteReader();  
  23. ...  
  24. }  
  25. }  
  26. ...  

2、隨機(jī)生成試題:

ASP.NET考試系統(tǒng)的關(guān)鍵是試題的隨機(jī)生成,即對于不同的計算機(jī)訪問系統(tǒng)時將從題庫中隨機(jī)地抽取不同的試題。

在此我們可使用SQL語句"selecttopn*frommcorderbynewid()"從題庫中隨機(jī)抽取n條記錄,其中newid()生成uniqueidentifier值(若是ACCESS數(shù)據(jù)庫則用"selecttopn*frommcorderbyrnd(id)",其中id為自動編號字段)。

在test.aspx頁面上放置一個Panel容器控件,以便動態(tài)生成綁定到試題的控件,并將從表mc中隨機(jī)生成的試題答案寫入表StuInfo表中的mca字段,代碼如下(test.aspx):

  1. privatevoidPage_Load(objectsender,System.EventArgse)  
  2. {  
  3. if(!IsPostBack)  
  4. {  
  5. ...  
  6. QuestCmd.CommandText="selecttop10*frommcorderbynewid()";//以隨機(jī)生成10道題為例  
  7. QuestConn.Open();  
  8. QuestRd=QuestCmd.ExecuteReader();  
  9. while(QuestRd.Read())  
  10. {  
  11. LiteralLitTxt=newLiteral();  
  12. LiteralLitBl=newLiteral();  
  13. CheckBoxListChkMc=newCheckBoxList();  
  14. ChkMc.ID="ChkMc"+i.ToString();  
  15. LitTxt.Text=i.ToString()+"、"+Server.HtmlEncode(QuestRd["Question"].ToString())+"<BR><Blockquote>";  
  16. LitBl.Text="";  
  17. ChkMc.Font.Size=11;  
  18. for(intj=1;j<=4;j++)  
  19. {  
  20. ChkMc.Items.Add(Server.HtmlEncode(QuestRd["Choice"+j.ToString()].ToString()));  
  21. ChkMc.Items[j-1].Value=j.ToString();  
  22. }  
  23. mcStr+=QuestRd["Answer"].ToString().Trim();//mcStr是存儲隨機(jī)生成試題答案的字符串變量  
  24. MyPanel.Controls.Add(LitTxt);  
  25. MyPanel.Controls.Add(ChkMc);  
  26. MyPanel.Controls.Add(LitBl);  
  27. i++;  
  28. }  
  29. ...  
  30. QuestCmd.CommandText="updateStuInfosetMca='"+mcStr+"'whereExamId='"+Session["Id"].ToString()+"'";//將隨機(jī)生成試題答案寫入數(shù)據(jù)表  
  31. QuestConn.Open();  
  32. QuestRd=QuestCmd.ExecuteReader();  
  33. ...  
  34. }  
  35. ...  

四、交卷評分

當(dāng)用戶點(diǎn)擊交卷按鈕后,應(yīng)將用戶的答題結(jié)果與試題答案進(jìn)行比對,并給出相應(yīng)的分值寫入數(shù)據(jù)表,最后將表StuInfo中的LogYn字段設(shè)置為2,顯示考試得分,代碼如下(test.aspx):

  1. privatevoidButSend_Click(objectsender,System.EventArgse)  
  2. {  
  3. ...  
  4. for(inti=1;i<=10;i++)//由于隨機(jī)生成了10道題,所以循環(huán)10次  
  5. {  
  6. for(intj=0;j<4;j++)  
  7. if(Request.Form["ChkMc"+i.ToString()+":"+j.ToString()]!=null)  
  8. mcs+="1";//mcs是存儲考生所選答案的字符串變量,已選用"1"表示,未選用"0"表示  
  9. else  
  10. mcs+="0";  
  11. }  
  12. ...  
  13. QuestCmd.CommandText="selectmcafromStuInfowhereExamId='"+Session["Id"].ToString()+"'";  
  14. QuestConn.Open();  
  15. SqlDataReaderQuestRd=QuestCmd.ExecuteReader();  
  16. QuestRd.Read();  
  17. intStuScore=0;//存儲得分的變量  
  18. for(i=0;i<10;i+=4)  
  19. {  
  20. if(QuestRd["mca"].ToString().Substring(i,4).Equals(mcs.Substring(i,4)))  
  21. StuScore+=2;//從字段mca和mcs中每次取四個字符進(jìn)行比對,如相等則加上2分  
  22. }  
  23. ...  
  24. QuestCmd.CommandText="updateStuInfosetscore="+StuScore.ToString()+",LogYn='2'whereExamId='"+Session["Id"].ToString()+"'andLogYn='1'";//設(shè)置已評分標(biāo)志  
  25. QuestRd=QuestCmd.ExecuteReader();  
  26. ...  
  27. Response.Redirect("score.aspx");//顯示考試得分頁面  
  28. ...  

限于篇幅,在此只列出了實(shí)現(xiàn)網(wǎng)上ASP.NET考試系統(tǒng)的幾個要點(diǎn),讀者可根據(jù)自已的需要進(jìn)一步完善相應(yīng)的數(shù)據(jù)驗(yàn)證、后臺管理及界面設(shè)計。

【編輯推薦】

  1. ASP.NET MVC Web應(yīng)用程序工程
  2. IIS6的ASP.NET ISAPI請求處理過程
  3. ASP.NET控件的七種用戶管理相關(guān)控件
  4. 對ASP.Net進(jìn)行RSA加密
  5. ASP.NET得到數(shù)據(jù)庫字符串的方法
責(zé)任編輯:彭凡 來源: 天極
相關(guān)推薦

2009-07-27 18:00:23

2009-07-24 10:52:42

ASP.NET ISA

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-22 13:24:24

ASP.NET MVC

2009-08-10 10:19:47

ASP.NET組件設(shè)計

2009-07-23 15:44:39

ASP.NET MVC

2009-07-20 17:12:17

ASP.NET訪問數(shù)據(jù)

2009-08-05 15:29:33

ASP.NET For

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2011-08-23 10:58:59

2009-07-23 15:24:37

ASP.NET Ima

2009-07-27 16:19:59

ASP.NET報表控件

2009-07-24 11:55:29

ASP.NET MVC

2009-07-28 17:34:28

ASP.NET XML

2009-07-21 15:02:19

ASP.NET應(yīng)用程序

2009-07-27 13:01:28

TreeViewASP.NET

2009-08-19 10:54:42

ASP.NET數(shù)據(jù)訪問
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91麻豆蜜桃一区二区三区 | 亚洲精品久久久久久下一站 | 成年人视频在线免费观看 | 草久久 | 国产精品免费大片 | 羞羞的视频在线 | 日韩精品一区二区三区在线观看 | 1000部精品久久久久久久久 | 亚洲精品视频网站在线观看 | 亚洲成人一二三 | 免费在线观看成年人视频 | 国产精品久久久久久婷婷天堂 | 亚洲网站在线观看 | www.天天干.com| 又黑又粗又长的欧美一区 | 欧美精品一区二区三区在线播放 | 亚洲精品第一国产综合野 | 女同久久另类99精品国产 | 成人片免费看 | 日韩中文字幕久久 | 久久毛片 | 中文字幕精品一区 | 欧美日韩亚洲视频 | 成人在线播放 | 精品自拍视频在线观看 | 久免费视频 | 亚洲欧美激情网 | 免费黄色片在线观看 | 亚洲网站免费看 | 免费观看一级特黄欧美大片 | 免费在线视频精品 | 国产欧美在线一区 | 一区二区久久精品 | 欧美一区二区三区久久精品视 | 亚洲一区 中文字幕 | 91精品久久久久久久久久 | 午夜影视| 亚洲啊v| wwww.8888久久爱站网 | 亚洲午夜精品久久久久久app | 在线永久看片免费的视频 |