ASP線上教育系統(一)

才智咖 人氣:1.51W

目   錄
前言 3
第一章 程式設計環境基礎知識 4
1.1 ASP技術簡介 4
1.2 ACCESS2003 技術簡介 4
第二章 需求分析 1
2.1   目標設計 1
2.2   系統功能分析與設計 2
2.3   效能需求 2
第三章 系統設計 4
3.1  資料顯示模組 4
3.1.1 資料資訊顯示頁 5
3.1.2 資料詳細資訊頁 9
3.1.3 資料資訊下載頁 11
3.1.4 提交回復作業頁 12
3.1.5 提交回復作業成功頁 13
3.1.6 教師基本資訊頁 16
3.1.7 資料資訊搜尋頁 20
3.1.8 資料資訊搜尋結果頁 21
3.2  資料管理模組 22
3.2.1 管理員登陸頁 24
3.2.2 驗證管理員帳號頁 24
3.2.3 管理員登陸成功頁 26
3.2.4 增加資料欄目頁 27
3.2.5 增加欄目成功頁 28
3.2.6 修改欄目資訊頁 30
3.2.7 儲存修改的欄目資訊頁 32
3.2.8 刪除欄目資訊頁 34
3.2.9 刪除欄目資訊成功頁 34
3.2.10 釋出資料資訊頁 36
3.2.11 資料資訊釋出成功頁 38
3.2.12 資料資訊列表頁 39
3.2.13 資料資訊修改頁 39
3.2.14 儲存修改的資料資訊頁 42
3.2.15 刪除資料資訊頁 46
3.2.16 刪除資料資訊成功頁 47
3.3  教師管理 50
3.3.1 搜尋教師頁 51
3.3.2 教師搜尋結果頁 52
3.3.3 新增教師資訊頁 53
3.3.4 新增教師成功頁 54
3.3.5 修改教師資訊頁 55
3.3.6 修改教師資訊成功頁 57
3.3.7 刪除教師資訊頁 58
3.3.8 刪除教師資訊成功頁 58
第四章 資料庫結構設計 60
4.1 資料庫需求分析 60
4.2 資料庫邏輯設計 60
4.3 資料庫連線說明 61
第五章 測試和維護 62
5.1 網站維護 62
5.2 網站測試 62
參考文獻 63
致謝 64

ASP線上教育系統(一)

前言
 與傳統教育相比,遠端教育是一種全新的教育模式,它可以突破時間和空間的限制,幫助人們隨時隨地地學習,讓更多的學習者共享優秀教育資源。遠端教育既具有開放性、互動性、協作性和自主性等特點,又具有非同步性、實時性、生動性、整合性和大容量等優勢。因此,在遠端教育系統的建設中,單純地構建各種功能單一的系統並不能完全滿足遠端教育建設的需求,只有那些對資料和資訊進行了有效組織、整合了多種業務、為使用者提供個性化服務的系統才能充分發揮遠端教育的作用。
 使用線上教育系統可以為使用者提供線上教案學習、線上提交作業和查詢教師等服務。
第一章 程式設計環境基礎知識
1.1 ASP技術簡介
 Microsoft Active Server Pages 即我們所稱的ASP,其實是一套微軟開發的伺服器端指令碼環境.Active Server Page 是建立動態網頁的一個很好的工具,它起一種程式語言的作用,可以利用它編寫動態產生HTML的程式程式碼.因此,只要使用者瀏覽Web站點並請求一個ASP頁,Web伺服器就可以處理相應的ASP程式碼,生成HTML程式碼,然後將它傳遞到使用者瀏覽器並顯示出網頁.
 ASP程式的優點:
 1,ASP使用VBScript指令碼語言直接源於VB語言,秉承了VB簡單易學的特點,掌管起來非常容易.
 2,無須編譯,容易編寫,可在伺服器端直接執行.
 3,利用ADO元件輕鬆存取資料庫.
 4,與瀏覽器無關,客戶端只要使用可執行HTML碼的瀏覽器,即可瀏覽ASP所設計的網頁內容.
 5,ASP能與任何ActiveX scripting語言相容.除了可使用VBScript或java script語言來設計外,還通過plug-in的方式,使用由第三方所提供的其他指令碼語言.
 6,ASP技術的處理速度相當快,並且其安全性也很高,ASP的源程式,不會被傳到客戶瀏覽器,因而可以避免所寫的源程式被他人剽竊,也提高了程式的安全性.
 7,ASP的物件和元件:ASP有7個固有物件這7個固有物件分別是Request,Response,Server,Application,Session,ASPError和ObjectContext.
1.2 ACCESS2003 技術簡介
 Access2003 就是關係資料庫開發工具,資料庫能彙集各種資訊以供查詢,儲存和檢索.那麼什麼叫資料庫呢 資料庫(Database)是由一些有意義和有關係的資料(data)所組合而成.一個數據庫中,包含了許多條記錄(Record),而每條記錄是由多個欄位(Field)所組成,不同的欄位存放這不同的資料.所以資料庫的嚴格定義是一組相關記錄的集合,而欄位則是最基本的資料項,也是資料庫中最小的單位.在計算機中用來幫我們管理資料庫的系統,我們稱之為資料庫管理管理系統(Database Management System DBMS).資料庫管理系統是架構在一個或多個數據庫之上,並針對資料庫中的資料進行管理運用.
 Access 的優點在於它能使用資料表示圖或自定義窗體收集資訊,資料表示圖提供了一種類似於 Excel 的電子表格,可以使資料庫一目瞭然.另外,Access 允許建立自定義報表用於列印或輸出資料庫中的資訊.Access也提供了資料儲存庫,可以使用桌面資料庫檔案把資料庫檔案置於網路檔案伺服器,與其他網路使用者共享資料庫.如上所述,Access 作為關係資料庫開發具備了許多優點,可以在一個數據包中同時擁有桌面資料庫的便利和關係資料庫的強大功能.
 
第二章 需求分析
 一個典型的線上教育系統至少應包含資料顯示、資料管理和教師管理3種功
 
能。本站的系統結構如圖2—1所示。
 
 2-1系統結構
 
2.1   目標設計
     線上教育系統所要實現的功能如下。
     ●  資料顯示模組
         ■  顯示資料
         ■  顯示教師介紹
         ■  瀏覽查閱資料
         ■  回覆提交資料
 ●  資料管理模組
         ■  資料欄目管理
         ■  釋出資料
         ■  管理資料
     ●  教師管理模組
         ■  新增教師資訊
         ■  編輯教師資訊
         ■  刪除教師資訊
2.2   系統功能分析與設計
   線上教育系統共分為3個模組:資料顯示模組、資料管理模組和教師管理模組,其功能模組劃分如圖所示。
 
 
2.3   效能需求
   開發環境
WindowsXP作業系統
80G的硬碟空間
AMD2500+處理器
17 # 純平監視器
512記憶體
 適用環境
 1.Windows98/Me/2000/XP作業系統
 2.1G以上的硬碟空間
 3.Inter 賽揚1.0G以上處理器
 4.15 # 普通監視器以上
 5.32M以上記憶體
第三章 系統設計
3.1  資料顯示模組
 資料顯示模組包含以下子模組。
 ●  資料顯示
 ●  資料搜尋
 資料顯示子模組包含以下頁面。
 ●  index.asp
 ●  detail.asp
 ●  download.asp
 ●  teacherinfo.asp
 資料搜尋子模組包含以下頁面。
 ●  search.asp
 ●  list.asp
 各頁面間的關係如圖3-1所示。
      
 
 3-1各頁面間的關係
  
   3.1.1 資料資訊顯示頁
 1. index.asp頁面示例
 圖3-2為顯示資料資訊所看到的頁面。
 
 
 
 圖 3-2  顯示資料資訊
 2. 頁面中需要使用者填寫的HTML表單元素。
 此頁無需填寫HTML表單元素。
 3. 頁面所涉及的資料庫表資訊。
此頁面用來顯示資料資訊,使用了系統中的資料資訊表main和教師資訊表teacher。
 4. 頁面程式碼分析
   ‘引用建立資料庫連線物件函式檔案
 <!--#include file="conn.asp"-->
 ‘引用網站設定檔案 
 <!--#include file="fenlei.asp"-->
 <%’取得網站設定資訊
 sql = "select * from config"
 set rs = server.createobject("adodb.recordset")
 rs.open sql,conn,1,3
 schoolname = rs("schoolname")
 gonggao = rs("gonggao")
 todaytimes = rs("todaytimes")
 times = rs("times")
 ‘今日訪問統計
 if rs("todaydate") <> date() then
 rs("todaydate") = date()
 rs.update
 todaytimes = 0
 end if
 ‘總訪問統計
 if request.cookies("counted") <> "yes" then
 response.cookies("counted") = "yes"
 ‘設定cookies失效時間
 response.cookies("counted").expires = now() + 1/72
 ‘統計數加1
 times = times + 1
 todaytimes = todaytimes + 1
 rs("times") = times
 rs("todaytimes") = todaytimes
 rs.update
 end if
 ‘關閉記錄集物件
 rs.close
 dim num1
 dim rndnum
 Randomize
 %>
 ‘Html頁面顯示部分
 ……
 <%’取最近更新的10條資料記錄
 sql = "select * from main,teacher where main.idofteacher=teacher.teacherid order by main.times desc"
 rs.open sql,conn,1,1
 ‘顯示最近更新的10條資料記錄
 for i = 1 to 10
 if rs.eof then
 response.write "<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>"
 else
 if len(rs("title")) > 10 then
 filetitle = left(rs("title"),10)&"..."
 else
 filetitle = rs("title")
 end if
 %>
 <tr><td align=left>&nbsp;<img src=images/arrow.gif>
 <a href=# title="<%=rs("title")%>" onclick=java script:showdetail(<%=rs("mainid")%>);><%=filetitle%></a>
 </td><td align=center><a href=teacherinfo.asp?id=<%=rs("teacherid")%> title="檢視<%=rs("teacher")%>的個人專集"><%=rs("teacher")%></a></td>
 <td align=center><%=rs("times")%></td>
 <td align=left>&nbsp;&nbsp;<%=rs("fenlei2")%></td></tr>
 <%‘取下一條資料記錄
 rs.movenext
 end if
 next
 ‘關閉記錄集物件
 rs.close
 %>
3.1.2 資料詳細資訊頁
  1. etail.asp頁面示例
  圖3-3為顯示資料詳細資訊的頁面。

圖3-3  資料詳細資訊
  2. 頁面中需要使用者填寫的Html表單元素。
  此頁無需填寫Html表單元素。
  3. 面所涉及的資料庫表資訊。
  此頁使用了系統中的資料資訊表main和教師資訊表teacher。
  4. 頁面程式碼分析
  ‘引用建立資料庫連線物件函式檔案
 <!--#include file="conn.asp"-->
 ‘引用網站設定檔案
 <!--#include file="fenlei.asp"-->
 <%’取得要顯示資料資訊的id號
 id = request("id")
 if id = "" then
  conn.close
  set conn = nothing
  response.write "<script>alert('沒有找到您要檢視的記錄');window.close();</script>"
  response.end
 end if
 ‘開啟記錄集物件
 set rs = server.createobject("adodb.recordset")
 sql = "select * from main,teacher,type where main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and main.mainid="&id
 ‘取得資料詳細資訊
 rs.open sql,conn,1,1
 ‘如果資料詳細資訊不存在則提示錯誤
 if rs.bof and rs.eof then
  rs.close
  set rs = nothing
  conn.close
  set conn = nothing
  response.write "<script>alert('沒有找到您要檢視的記錄');window.close();</script>"
  response.end
 else
 %>
 ‘Html頁面顯示部分,顯示資料的詳細資訊
 ……
 <%’關閉記錄集物件
 rs.close
 set rs = nothing
 ‘關閉資料庫連線物件
 conn.close
 set conn = nothing
 end if
3.1.3 資料資訊下載頁
  1. download.asp頁面示例
  圖3-4 為閱讀資料資訊所看到的頁面。

圖3-4  閱讀資料資訊
  2. 頁面中需要使用者填寫的Html表單元素
  此頁無需填寫Html表單元素。
  3. 頁面所涉及的資料庫表資訊
  此頁使用了系統中的資料資訊表main。
  4. 頁面程式碼分析
 <%’取得要顯示資料資訊的id號
 id = trim(request("id"))
 if id = "" then
  conn.close
  set conn = nothing
  response.write "<script>alert('沒有找到您要閱讀的資料');window.close();</script>"
  response.end
 end if
 sql = "select * from main where mainid="&id
 set rs = server.createobject("adodb.recordset")
 ‘取得資料詳細資訊
 rs.open sql,conn,1,3
 ‘如果資料詳細資訊不存在則提示錯誤
 if rs.bof and rs.eof then
  rs.close
  set rs = nothing
  conn.close
  set conn = nothing
  response.write "<script>alert('沒有找到您要閱讀的資料');window.close();</script>"
  response.end
 ‘如果資料詳細資訊存在
 Else
 ‘該資料閱讀數加1
  rs("times") = rs("times") + 1
  rs.update
 ‘頁面下載或者開啟資料資訊
  response.redirect rs("fileurl")
 ‘關閉記錄集物件
  rs.close
  set rs = nothing
 ‘關閉資料庫連線物件
  conn.close
  set conn = nothing
 end if
 %>
3.1.4 提交回復作業頁
  1. redetail.asp頁面示例
  圖3-5為提交回復作業資訊所看到的頁面。

圖3-5  提交回復作業資訊
  2. 頁面中需要使用者填寫的Html表單元素
  此頁中有3個表單元素,如表1所示。
  表1                 redetail.asp頁的表單元素
 名稱  表單元素型別  含義 最大長度
Name Text 學生姓名 20
Title Text 作業標題 20
Message Textarea 作業答案 100
  3. 頁面所涉及的資料庫表資訊
  此頁面用來顯示提交回復作業資訊,並沒有涉及到資料庫表的操作。
  4. 頁面程式碼分析
 ‘Html頁面表單提交到redetailok.asp提交作業答案
 <form action="redetailok.asp" method="post" >
 ‘Html頁面顯示部分
 ……
 </form>
3.1.5 提交回復作業成功頁
  1. 頁面中需要使用者填寫的Html表單元素
  此頁無需填寫Html表單元素。
  2. 頁面所涉及的資料庫表資訊
  此頁使用了系統中的回覆作業資訊記錄表work。
  3. 頁面程式碼分析
 ‘引用建立資料庫連線物件函式檔案
 <!--#include file="conn.asp"-->
 <%’學生姓名必須要輸入
 name = trim(request("name"))
 if name = "" then
  response.write "<script>alert('請輸入學生姓名');history.go(-1);</script>"
  conn.close
  set conn = nothing
  response.end
 end if
 if len(name) > 5 then
  response.write "<script>alert('學生姓名不得超過5個漢字');history.go(-1);</script>"
  conn.close
  set conn = nothing
  response.end
 end if
 ‘作業標題必須要輸入
 title = trim(request("title"))
 if title = "" then
  response.write "<script>alert('請輸入作業標題');history.go(-1);</script>"
  conn.close
  set conn = nothing
  response.end
 end if
 ‘作業答案必須要輸入
 message = trim(request("message"))
 if message = "" then
  response.write "<script>alert('請輸入作業答案');history.go(-1);</script>"
  conn.close
  set conn = nothing
  response.end
 end if
 ‘作業的id號必須存在
 reid = trim(request("reid"))
 if reid = "" then
  response.write "<script>alert('非法操作');history.go(-1);</script>"
  conn.close
  set conn = nothing
  response.end
 end if
 
 sql = "select * from work where name='"&name&"' and reid="&reid
 set rs = server.createobject("adodb.recordset")
 ‘查詢作業表中是否存在學生姓名和回覆作業的id號相同的記錄存在
 rs.open sql,conn,1,3
 ‘如果存在則說明學生已經提交過作業不能再提交了
 if not (rs.bof and rs.eof) then
  rs.close
  set rs = nothing
  conn.close
  set conn = nothing
  response.write "<script>alert('你已經提交過作業了');history.go(-1);</script>"
  response.end
 else
 ‘如果不存在則新增作業答案記錄
  rs.addnew
  rs("reid")=reid
  rs("name")=name
   rs("title")=title
    rs("message")=message
 ‘新增作業答案記錄成功
  rs.update
 ‘關閉記錄集物件
  rs.close
  set rs = nothing
 ‘關閉資料庫連線物件
  conn.close
  set conn = nothing
 end if
 response.write "<script>alert('新增成功');window.location.href='index.asp';</script>"
 %>
3.1.6 教師基本資訊頁
  1. teacherinfo.asp頁面示例
  圖3-6為顯示教師基本資訊所看到的頁面。

圖3-6  顯示教師基本資訊
  2. 頁面中需要使用者填寫的Html表單元素
  此頁無需填寫Html表單元素。
  3. 頁面所涉及的資料庫表資訊
  此頁面用來顯示教師基本資訊,此頁使用了系統中的資料資訊表main和教師資訊表teacher。
  4. 頁面程式碼分析
 <%’取得要顯示教師資訊的id號
 id = trim(request("id"))
 if id = "" then
  conn.close
  set conn = nothing
  response.write "<script>alert('請不要搗亂');top.window.location.href='index.asp';</script>"
  response.end
 end if
 ‘判斷使用者是否是管理員
 if session("admin") = "admin" then
  isadmin = true
 else
  isadmin = false
 end if
 ‘判斷使用者是否是教師
 if session("teacherid") <> "" then
  isteacher = true
 else
  isteacher = false
 end if
 ‘取得教師詳細資訊
 sql = "select * from teacher where teacherid="&id
 set rs = server.createobject("adodb.recordset")
 rs.open sql,conn,1,1
 %>
 ‘Html頁面顯示部分,顯示教師資訊
 ……
 <%’關閉記錄集物件
 rs.close
 end if
 ‘取得欄目資訊
 sql = "select * from type"
 rs.open sql,conn,1,1
 set rs1 = server.createobject("adodb.recordset")
 ‘所有欄目資訊
 do while not rs.eof
  sql1 = "select count(mainid) from main where idofteacher="&id&" and idoftype="&rs("typeid")
 ‘取得教師在該欄目發表的資料總數
  rs1.open sql1,conn,1,1
  counter = rs1(0)
  rs1.close
 ‘發表的資料總數如果是3的倍數
  if counter mod 3 = 0 then
 ‘定義顯示資料記錄的框架的高度
   iframeheight = 20*(int(counter/3)+1)
  else
   iframeheight = 20*(int(counter/3)+2)
  end if
 ‘框架的高度最大值為220
  if iframeheight > 220 then iframeheight = 220
 %>
 <tr><td align="center" class="header" colspan=3>已在本站釋出的<%=rs("type")%>(共<%=counter%>件)</td></tr>
 <tr><td align="center" colspan=3>
 ‘顯示資料記錄的框架頁
 <iframe name="titleof<%=rs("typeid")%>" frameborder=0 width=100% height=<%=iframeheight%> scrolling=no src=titlelist.asp?type=<%=rs("typeid")%>&id=<%=id%>></iframe>
 </td></tr>
 <%’取下一個欄目
  rs.movenext
 loop
 ‘關閉記錄集物件
 set rs1 = nothing
 ‘關閉記錄集物件
 rs.close
 set rs = nothing
 %>
 </table>
 <%’如果使用者既不是管理員也不是教師
 if not isadmin and not isteacher then
 %>
 <!--#include file="foot.asp"-->
 <%
 end if
 %>
 </body>
 </html>
 <%’關閉資料庫連線物件
 conn.close
 set conn = nothing
 %>
3.1.7 資料資訊搜尋頁
  1. search.asp頁面示例
  圖3-7為搜尋資料資訊所看到的頁面。

圖3-7搜尋資料資訊
  2. 頁面中需要使用者填寫的Html表單元素
  此頁共有5個表單元素,如表2所示。
  表2                    search.asp頁的表單元素
名稱  表單元素型別 含義 最大長度
fenlei1 Text 所屬學院 20
feilei2 Text 所屬系 20
Teacher Text 教師姓名 10
Course Text