Board logo

標題: [教學] (實戰專題) 網路試卷 下篇 [打印本頁]

作者: 小誌    時間: 2010-5-24 15:57     標題: (實戰專題) 網路試卷 下篇

輸出試卷

將讀取進來的『考試題目』顯示在網頁中讓受測學生作答,這是『網路試卷-試卷網頁』的另一個ASP程式機制,我們將透過此機制把讀取的資料庫考題資料輸出至網頁中。
  1. <%
  2. '顯示考題
  3. '讀取資料表的資料錄直到資料錄全部讀取完畢
  4. DO While not recobject.EOF
  5. '顯示題目及配分
  6. Response.Write "<hr size=1><font color=blue>"&recobject(2)&_
  7. "、"&recobject(3)&"&nbsp&nbsp("&recobject(9)&"分)</font><br>"
  8. '顯示備選的答案項目
  9. For I= 1 to 4
  10. Response.Write "<font color=red>("&I&")</font><input type='"&"Radio"&_
  11. "' name='No"&recobject(2)&"' value="&I&">"&recobject("答案"&I)&"<br>"
  12. Next
  13. '將資料錄向後移一筆,顯示下一個題目
  14. recobject.MoveNext
  15. Loop
  16. '關閉資料庫
  17. recobject.CLOSE
  18. conobject.CLOSE
  19. %>
複製代碼
[attach]865[/attach]

提示
Response.write 方法:負責將字串資訊輸出至使用者端,也可與HTML標示混合使用。標準的HTML標籤資料可直接書寫於ASP程式中,這些單純的HTML標籤資料在ASP程式執行後即會原原本本的直接傳送給瀏覽者的瀏覽器進行解譯的動作,但是,如果是變動性的資料,如日期、時間等,就必須使用 Response 物件的 『write 』方法來編寫。


question.asp
  1. <%
  2. '承接來自Indoor.asp的學號、姓名資料
  3. studentname=Request("studentname")
  4. number=Request("number")
  5. '開啟exam.mdb資料庫中的first(題目)資料表
  6. '建立資料庫連結物件conobject
  7.    Set conobject = Server.CreateObject("ADODB.Connection")
  8. '利用MapPath方法取得資料完整真實路徑   
  9.    DBPath = Server.MapPath("exam.mdb")
  10. '利用Open方法打開資料庫      
  11.    conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  12. '建立存取資料庫物件recobject      
  13.    Set recobject=Server.CreateObject("ADODB.Recordset")
  14.    SQL="SELECT * From "&"first"&" ORDER by 題號"
  15.    recobject.Open SQL,conobject,1,1,1
  16. '先將資料表的資料錄移至第一筆   
  17.    recobject.MoveFirst  
  18. %>
  19. <HTML>
  20. <HEAD>
  21. <TITLE>網路試卷-試卷網頁</TITLE>
  22. </HEAD>
  23. <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">
  24. <div align="center"><font color="red" face="新細明體" size="6">網路試卷-試卷網頁</font></div>
  25. <form action="grad.asp" method="get">
  26. <input type="hidden" name="studentname" value="<%=studentname%>">
  27. <input type="hidden" name="number" value="<%=number%>">  
  28. <%
  29. '顯示考題
  30. '讀取資料表的資料錄直到資料錄全度讀取完畢
  31.   DO While not recobject.EOF
  32. '顯示題目及配分  
  33.   Response.Write "<hr size=1><font color=blue>"&recobject(2)&_
  34.                  "、"&recobject(3)&"&nbsp&nbsp("&recobject(9)&"分)</font><br>"
  35. '顯示備選的答案項目                 
  36.   For I= 1 to 4
  37.     Response.Write "<font color=red>("&I&")</font><input type='"&"Radio"&_
  38.     "' name='No"&recobject(2)&"' value="&I&">"&recobject("答案"&I)&"<br>"
  39.   Next
  40. '將資料錄向後移一筆,顯示下一個題目  
  41.   recobject.MoveNext
  42.   Loop
  43. '關閉資料庫  
  44.   recobject.CLOSE
  45.   conobject.CLOSE
  46. %>
  47. <hr size="1">
  48. <div align="center"><input type="submit" value="交卷"></div>
  49. </form>
  50. </BODY>
  51. </HTML>
複製代碼

作者: 小誌    時間: 2010-5-24 16:01

評分及公佈成績
當受測學生填寫好試卷並按下『網路試卷-試卷網頁』中的『交卷』按鈕後,就會連結進入『評分及公佈成績』的網頁,在本例中我們將這個網頁檔案名稱定為:『grad.asp』在這個網頁中ASP程式將進行分數的計算,並且將評分後的成績送至資料庫檔案中儲存,不僅如此,ASP程式還會馬上將評定的成績結果立即顯示在網頁中。現在我們接著來撰寫這個『評分及公佈成績』的網頁與網頁中的ASP程式。

在我們網頁中主要的ASP程式機制中,我們將要進行:



question.asp
  1. <%
  2. '承接來自question.asp的資料
  3. studentname=Request("studentname")
  4. number=Request("number")
  5. '開啟exam.mdb資料庫中的first考題資料表
  6. '在此開啟資料庫是用來讀取答案與寫入計算後的成績
  7. '建立資料庫連結物件conobject
  8.    Set conobject = Server.CreateObject("ADODB.Connection")
  9. '利用MapPath方法取得資料完整真實路徑      
  10.    DBPath = Server.MapPath("exam.mdb")
  11. '利用Open方法打開資料庫      
  12.    conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  13. '建立存取資料庫物件recobject        
  14.    Set recobject=Server.CreateObject("ADODB.Recordset")   
  15. '讀取資料表內容   
  16.    SQL="SELECT * From "&"first"&" ORDER by 題號"
  17.    recobject.Open SQL,conobject,1,1,1
  18. '先將資料表的資料錄移至第一筆      
  19.    recobject.MoveFirst
  20. '先將計算的總分設為0   
  21.    Score=0
  22.    Response.Write "<div align=center><font color=green face=新細明體 size=6>網路試卷-成績批改</font></div>"
  23. '將正確答案及受測學生選的答案一起顯示比對   
  24.    Do While Not recobject.EOF
  25.    Sel=Request("No"&recobject(2))
  26.    Ans=recobject(8)
  27. '計算成績,答對的題目加上該題應得分數
  28. '同時告知該題目是答對還是答錯
  29.    IF Trim(Sel)=Trim(Ans) then
  30.           Score=Score+recobject(9)
  31.       RM="-->答對"
  32.    ELSE
  33.       RM="-->答錯"
  34.    End IF
  35.    Ans=recobject(Ans+3)
  36.    yourans=recobject(Sel+3)
  37. '將試題批改的結果輸出至網頁中
  38.    Response.Write "<hr size=1>"&recobject(2)&_
  39.                  "&nbsp&nbsp"&recobject(3)&"<font color=red>"&RM&"</font><br>"
  40.    recobject.MoveNext
  41.    LOOP
  42.    recobject.CLOSE
  43.    conobject.CLOSE
  44. '開啟exam.mdb中的student資料表,顯示受測學生的成績
  45.    Set conobject = Server.CreateObject("ADODB.Connection")
  46.    DBPath = Server.MapPath("exam.mdb")
  47.    conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  48.    Set recobject=Server.CreateObject("ADODB.Recordset")
  49.    SQL="SELECT * From student where 學號="&number&" and 姓名='"&studentname&"'"
  50.    recobject.Open SQL,conobject,1,3
  51.       recobject.MoveFirst
  52. '將批改後的受測學生成績存入資料庫中
  53.       recobject("first")=Score
  54.       recobject.Update
  55. %>
  56. <HTML>
  57. <HEAD>
  58. <TITLE>網路試卷-成績批改</TITLE>
  59. </HEAD>
  60. <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">
  61. <hr size="1">
  62. <!-- 顯示應考學生的資料 -->
  63. <table align="center" border="0" width="50%">
  64. <tr><td align="center" width="50%"><font color="blue">
  65. 姓名:<%=studentname%></font></td>
  66. <td align="center" width="50%"><font color="blue">
  67. 學號:<%=number%></font></td></tr>
  68. </table>
  69. <!-- 顯示應考學生的成績 -->
  70. <table align="center" border="1" width="50%">
  71. <tr><td align="center" width="50%">考試進度</td><td align="center" width="50%">分數</td></tr>
  72. <tr><td align="center">本次測驗成績</td><td align="center">
  73. <!--將成積不及格的分數以紅色顯示-->
  74. <%
  75.   IF Score<50 THEN
  76. Response.Write "<font color=red>"&Score&"分,死當</font>"
  77.   ELSEIF Score<60 THEN
  78. Response.Write "<font color=red>"&Score&"分,補考</font>"
  79.   ELSE
  80. Response.Write Score&"分,及格"
  81.   END IF
  82. recobject.CLOSE
  83. conobject.CLOSE
  84. %>
  85. </td></tr>
  86. </table>
  87. <hr size="1">
  88. <p>
  89. <!-- 重新填寫測驗卷 -->
  90. </p>
  91. <divalign="center">
  92. <a ref="indoor.asp?studentname=<%=studentname%>&number=<%=number%>">[再考一次]</div>
  93. </BODY>
  94. </HTML>
複製代碼

作者: 小誌    時間: 2010-5-24 16:07

使用Access來建立資料庫與資料表
在本範例中我們將學生資料,考題題目與答案、成績計算結果等三項資料記錄放在資料庫檔案中,而我們所使用的資料庫為Access格式的*.mdb資料庫檔案,接下來就為各位簡單的介紹如何建立這個資料庫檔案。



 請注意:
受測學生名單的姓名與學號務必先行建立於資料庫的資料表中,否則在『網路試卷-試場大門』網頁的ASP程式讀取資料庫中的受測學生名單資料來與受測學生所填的資料作比較時,如果受測學生所填的資料不在資料表名單上將會出現錯誤訊息,至於『first』欄位則是用來紀錄『評分及公佈成績』的網頁中ASP程式所進行的分數計算結果。


(實戰專題) 網路試卷完整範例壓縮檔下載:[attach]876[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)