<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      學校教學網站應用設計

      [摘要]這里我們介紹學校教學網站應用設計,包括聯考線上查榜系統、學生成績線上查詢系統、線上學校注冊選課系統、研討會線上報名系統、網路教學系統等應用的點子、設計實例、以及詳細解說,讓您快速地設計出各種學校教學...

      這里我們介紹學校教學網站應用設計,包括聯考線上查榜系統、學生成績線上查詢系統、線上學校注冊選課系統、研討會線上報名系統、網路教學系統等應用的點子、設計實例、以及詳細解說,讓您快速地設計出各種學校教學的網站應用。

      學校網站資料庫應用
      教學上使用網站資料庫,可以透過Internet、或Intranet提供以下的應用∶
      * 聯考線上查榜*
      * 線上查詢成績單、或出勤狀況*
      * 線上學校注冊選課*
      * 研討會線上報名*
      * 網路教學
      右上角標示*的應用,本節將提供設計的范例,并詳加解說。
      執行本章資料庫的范例,所用的資料庫可為Microsoft Access、Microsoft SQL Server、或Text檔案(讀者可修改成其他支援ODBC的資料庫,詳見1-6-5節),須於NT安裝IIS 3.0,并於「控制臺」中的「ODBC」,新建一個名稱為「BookSamp」的資料來源,驅動程式為「Microsoft Access Driver」、「SQL Server」、或「Microsoft Text 驅動程式」。
      5-1
      聯考線上查榜系統
      「聯考線上查榜系統」,可以透過Internet,提供線上查榜成績和放榜結果的功能。
      放榜時,考生可以透過Internet、或Intranet,連線上學校的「聯考線上查榜系統」,輸入準考證編號,查詢各種考試(譬如聯考、研究所、就業考等)放榜的結果,包括成績、和考取科系等
      資訊。
      設計實例
      讓我們執行一個實例。
      ( 范例 data1.asp 聯考線上查榜
      若要查詢資料,於用戶端使用瀏覽器,瀏覽本書所附安裝於網站伺服器的data1.asp,於「準考證編號」處輸入準考證編號後,譬如輸入準考證編號123456,按下「查榜」按鈕,即可顯示查詢的結果如下,包括姓名、總分、考上科系∶ 
      放榜時,幾家歡樂幾家愁,也有人落榜的,輸入準考證編號123457,顯示「沒考上」如下∶ 
      輸入錯誤的準考證編號時,必須告訴人家,譬如輸入準考證編號654321,顯示「找不到」如下∶

      設計實例詳細解說
      建立資料表
      首先使用Microsoft Access、Microsoft SQL Server 、Text檔案、或任何一種支援ODBC的資料庫,建立一個資料表School。
      使用Microsoft Access建立一個資料表School,如下∶ 

      於欄名NAME、ID、SCORE、RESULT分別輸入姓名、準考證編號、總分、考上科系,考上科系若為落榜時,輸入「X」。
      或使用Microsoft SQL Server建立一個資料表School,如下∶ 

      或使用Text檔案建立一個資料表School,如下∶ 

      設計輸入表單
      接著,設計輸入表單form,以讓考生輸入準考證編號ID1,按下「查榜」按鈕submit時,即使用POST的方式將輸入資料傳送到網站伺服器,并執行於「form action=...」所設定的data1.asp檔
      案(與form為同一個ASP檔案),程式碼如下∶
      <form action="data1.asp" method="post">
      準考證編號: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10> 

      <INPUT TYPE=submit VALUE="查榜" name="Action">
      </form>
      網站伺服器執行data1.asp檔案,首先經由Request.Form("ID1")取得考生所輸入的準考證編號ID1,若ID1非空白時,表示為表單輸入所呼叫執行。
      查詢資料庫
      使用「Server.CreateObject」建立連線的物件,并使用「Open」開啟待存取查詢資料庫
      BookSamp。
      再使用SELECT的SQL指令查詢資料庫的資料,設定SQL指令,查詢為ID符合準考證編號Request.Form("ID1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的動作,并將查詢結果儲存到RecordSets物件RS。
      程式碼如下∶
      <%
      IF Request.Form("ID1") THEN
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT NAME,ID,SCORE,RESULT FROM School WHERE ID='" & Request.Form("ID1") & 
      "'"
      Set RS = Conn.Execute(SQL)
      %>
      <HR>
      查榜結果:<br>
      接著,要顯示查詢的結果了。
      首先,由「 IF RS.EOF THEN ...」判斷是否找到ID為準考證編號Request.Form("ID1")的資料,若RS.EOF為TRUE,則顯示「找不到此準考證編號」。
      若RS.EOF為FALSE表示有找到符合查詢條件的資料,由「IF RS(3)="X" THEN...」判斷第四個欄位(欄位編號由0算起)是否為「X」(表示落榜)。若落榜( RS(3)="X"),則顯示「報歉 <%=RS(0) %>, 沒考上!」,RS(0)為第一個欄位代表考生的姓名。
      程式碼,如下∶
      查榜結果:<br>
      <% IF RS.EOF THEN %>
      <FONT COLOR="#FF0000">找不到此準考證編號 <% =Request.Form("ID1") %> !</FONT> 
      <% ELSE %>
      <% IF TRIM(RS(3))="X" THEN %>
      準考證編號 <% =Request.Form("ID1") %> <BR>
      <FONT COLOR="#FF0000">報歉 <% =RS(0) %>, 沒考上!</FONT>
      若考上,則顯示考上的結果,包括姓名、準考證編號、總分、考上科系,分別由RecordSets物件的RS(0)、RS(1) 、RS(2)、RS(3) 取得。
      RS.Fields.Count表示RecordSets物件的欄位數,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各欄位的資料。配合<TABLE>表格的HTML語法,將結果填入表格的各欄位當中。
      若還有下一筆資料,使用RS.MoveNext移到下一筆的位置。
      程式碼,如下∶
      <% ELSE %>
      <FONT COLOR="#0000FF">
      準考證編號 <% =Request.Form("ID1") %> <BR>
      <% =RS(0) %>, 恭喜您考上 <% =RS(3) %> !<BR>
      </FONT> 

      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD BGCOLOR="#800000"><FONT>姓名</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>準考證編號</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>總分</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>考上科系</FONT></TD>
      </TR> 
      <% Do While Not RS.EOF %>
      <TR> 
      <% For i = 0 to RS.Fields.Count - 1 %>
      <TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
      <% Next %>
      </TR>
      <%
      RS.MoveNext
      Loop
      RS.Close
      Conn.Close
      %> 
      </TABLE> 
      <% END IF %> 
      <% END IF %>
      <HR>
      <% END IF %>
      最後,使用RS.Close關閉RecordSet,使用Conn.Close關閉資料庫。
      全部的程式碼,如下∶
      <HTML>
      <HEAD>
      <TITLE>聯考線上查榜系統</TITLE>
      <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5">
      </HEAD>
      <CENTER> 
      <BODY BGCOLOR=#FFFFFF>
      <FONT SIZE=+2 COLOR="#0000FF">聯考線上查榜系統</FONT> 
      <%
      IF Request.Form("ID1") THEN
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa","" 
      SQL = "SELECT NAME,ID,SCORE,RESULT FROM School WHERE ID='" & Request.Form("ID1") & "'"
      Set RS = Conn.Execute(SQL)
      %> 
      <HR>
      查榜結果:<br>
      <% IF RS.EOF THEN %>
      <FONT COLOR="#FF0000">找不到此準考證編號 <% =Request.Form("ID1") %> !</FONT> 
      <% ELSE %>
      <% IF TRIM(RS(3))="X" THEN %>
      準考證編號 <% =Request.Form("ID1") %> <BR>
      <FONT COLOR="#FF0000">報歉 <% =RS(0) %>, 沒考上!</FONT> 
      <% ELSE %>
      <FONT COLOR="#0000FF">
      準考證編號 <% =Request.Form("ID1") %> <BR>
      <% =RS(0) %>, 恭喜您考上 <% =RS(3) %> !<BR>
      </FONT> 
      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD BGCOLOR="#800000"><FONT>姓名</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>準考證編號</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>總分</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>考上科系</FONT></TD>
      </TR> 
      <% Do While Not RS.EOF %>
      <TR> 
      <% For i = 0 to RS.Fields.Count - 1 %>
      <TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
      <% Next %>
      </TR>
      <%
      RS.MoveNext
      Loop
      RS.Close
      Conn.Close
      %>
      </TABLE> 
      <% END IF %> 
      <% END IF %>
      <HR>
      <% END IF %> 
      <BR> 
      <form action="data1.asp" method="post">
      準考證編號: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10>
      <INPUT TYPE=submit VALUE="查榜" name="Action">
      </form> 
      <HR>
      </CENTER>
      </BODY>
      </HTML>
      學會了嗎?

      5-2
      學生成績線上查詢系統
      「學生成績線上查詢系統」,可以透過Internet,提供查詢成績、出勤狀況的功能。
      家長或學生,可以透過Internet,連線上學校的「學生成績線上查詢系統」,輸入學號,查詢成績單、名次。
      也可以加上出勤狀況的線上查詢功能。若學生沒有來上課,可自動發E-Mail通知家長。家長可以線上查詢家庭作業,以及老師對其子女的建議。家長也可線上留言給老師一些教學上、管教上的建議。
      設計實例
      讓我們執行一個實例。
      ( 范例 data4.asp 學生成績線上查詢
      若要查詢資料,於用戶端使用瀏覽器,瀏覽本書所附安裝於網站伺服器的data4.asp,於「學號」處輸入學號,譬如輸入學號123456後,按下「成績查榜」按鈕,即可顯示查詢的結果如下,包括姓名、各科成績、總分∶ 
      輸入錯誤的學號時,必須告訴人家找不到,譬如輸入學號123123,顯示「找不到」如下∶ 
      設計實例詳細解說
      建立資料表
      首先使用Microsoft Access、Microsoft SQL Server 、Text檔案、或任何一種支援ODBC的資料庫,建立一個資料表Student。
      於欄名NAME、ID、SCORE1~5分別輸入姓名、學號、各科成績。
      使用Microsoft Access建立一個資料表Student,如下∶ 
      或使用Microsoft SQL Server建立一個資料表Student,如下∶ 
      或使用Text檔案建立一個資料表Student,如下∶ 
      設計輸入表單
      接著,設計輸入表單form,以讓查詢者輸入學號ID1,按下「成績查詢」按鈕submit時,即使用POST的方式將輸入資料傳送到網站伺服器,并執行於「form action=...」所設定的data4.asp檔案(與form為同一個ASP檔案),
      程式碼如下∶
      <form action="data4.asp" method="post">
      學號: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10>
      <INPUT TYPE=submit VALUE="成績查詢" name="Action">
      </form>
      網站伺服器執行data4.asp檔案,首先經由Request.Form("ID1")取得查詢者所輸入的學號ID1,若ID1非空白時,表示為表單輸入所呼叫執行。
      查詢資料庫
      使用「Server.CreateObject」建立連線的物件,并使用「Open」開啟待存取查詢資料庫BookSamp。
      再使用SELECT的SQL指令查詢資料庫的資料,設定SQL指令,查詢為ID符合學號
      Request.Form("ID1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的動作,并將查詢結果儲存到RecordSets物件RS。
      程式碼如下∶
      <%
      IF Request.Form("ID1") THEN 
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa","" 
      SQL = "SELECT ID,NAME,SCORE1,SCORE2,SCORE3,SCORE4,SCORE5 FROM Student WHERE ID='" & 
      Request.Form("ID1") & "'" 
      Set RS = Conn.Execute(SQL) 
      %>
      <HR>
      查詢結果:<br>
      接著,要顯示查詢的結果了。
      首先,由「 IF RS.EOF THEN ...」判斷是否找到ID為學號Request.Form("ID1")的資料,若
      RS.EOF為TRUE,則顯示「找不到此學號」。
      程式碼,如下∶
      查詢結果:<br>
      <% IF RS.EOF THEN %>
      <FONT COLOR="#FF0000">找不到此學號 <% =Request.Form("ID1") %> !</FONT>
      若找到ID為學號Request.Form("ID1")的資料,則顯示查詢結果,包括姓名、各科成績,分別由RecordSets物件的RS(0)、RS(1)、RS(2)~RS(6) 取得。
      總分的計算,由「If Left(RS(i).Name,5) = "SCORE" Then...」判斷是否以SCORE為起頭的欄位,若是則由「 total = total + RS(i) 」將各科成績加總起來。RS.Fields.Count表示RecordSets物件的欄位數,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各欄位的資料。配合<TABLE>表格的HTML語法,將結果填入表格的各欄位當中。
      若還有下一筆資料,使用RS.MoveNext移到下一筆的位置。
      程式碼,如下∶
      <% ELSE %>
      <FONT COLOR="#0000FF">
      學號 <% =Request.Form("ID1") %> <BR>
      <% =RS(1) %>, 成績為下表:<BR>
      </FONT>
      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>姓名</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>數學</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>英文</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>國文</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>自然</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>社會</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>總分</FONT></TD> 
      </TR>
      <% Do While Not RS.EOF %>
      <TR>
      <% 
      total = 0
      For i = 0 to RS.Fields.Count - 1 
      If Left(RS(i).Name,5) = "SCORE" Then
      total = total + RS(i)
      End If
      %>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
      <% Next %>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% = total %></FONT></TD>
      </TR>
      <%
      RS.MoveNext
      Loop
      RS.Close
      Conn.Close
      %>
      </TABLE> 
      <% END IF %>
      最後,使用RS.Close關閉RecordSet,使用Conn.Close關閉資料庫。
      全部的程式碼,如下∶
      <HTML>
      <HEAD>
      <TITLE>學生成績線上查詢系統</TITLE>
      <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5">
      </HEAD>
      <CENTER>
      <BODY BGCOLOR=#FFFFFF>
      <FONT SIZE=+2 COLOR="#0000FF">學生成績線上查詢系統</FONT> 
      <%
      IF Request.Form("ID1") THEN
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT ID,NAME,SCORE1,SCORE2,SCORE3,SCORE4,SCORE5 FROM Student WHERE ID='" & 
      Request.Form("ID1") & "'"
      Set RS = Conn.Execute(SQL)
      %>
      <HR>
      查詢結果:<br> 
      <% IF RS.EOF THEN %>
      <FONT COLOR="#FF0000">找不到此學號 <% =Request.Form("ID1") %> !</FONT> 
      <% ELSE %>
      <FONT COLOR="#0000FF">
      學號 <% =Request.Form("ID1") %> <BR>
      <% =RS(1) %>, 成績為下表:<BR>
      </FONT>
      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>姓名</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>數學</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>英文</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>國文</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>自然</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>社會</FONT></TD>
      <TD BGCOLOR="#800000"><FONT>總分</FONT></TD> 
      </TR>
      <% Do While Not RS.EOF %>
      <TR>
      <% 
      total = 0 
      For i = 0 to RS.Fields.Count - 1 
      If Left(RS(i).Name,5) = "SCORE" Then
      total = total + RS(i)
      End If
      %>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
      <% Next %>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% = total %></FONT></TD>
      </TR>
      <%
      RS.MoveNext
      Loop
      RS.Close
      Conn.Close
      %>
      </TABLE> 
      <% END IF %>
      <HR>
      <% END IF %> 
      <BR> 
      <form action="data4.asp" method="post"> 
      學號: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10>
      <INPUT TYPE=submit VALUE="成績查詢" name="Action">
      </form>
      <HR>
      </CENTER>
      </BODY>
      </HTML>
      5-3
      線上學校注冊選課系統
      「線上學校注冊選課系統」,可以透過Internet、或Intranet,提供選修課程、完成注冊手續的功能。
      學生可以透過Internet、或Intranet,連線上學校的「線上學校注冊選課系統」,輸入其學號、要選修的課程後,完成注冊手續。
      選課系統將自動統計每一個選修課程的報名人數,若超過名額,將自動告之,要求學生選修其他的課程。
      選修課程時,選課系統提供可以增加、取消、查詢選修課程的功能。
      學生可以線上查詢各選修課程的授課內容簡介。
      完成注冊後,課程時刻表將自動匯集於螢幕上顯示、或發E-Mail通知學生。
      學費可由信用卡、劃撥、或銀行轉帳來支付。
      設計實例
      讓我們執行一個實例。
      ( 范例 data15.asp 線上學校注冊選課
      若要線上學校注冊選課,於用戶端使用瀏覽器,瀏覽本書所附安裝於網站伺服器的data15.asp,
      於「選修課程」處選擇選修課程如婚姻學,於「學號」處輸入學號如123456後,按下「選課」按鈕,即可顯示選課的結果如下,包括學號、選修課程、選課順序∶ 
      選修課程時,若選修的課程已經選過,則重覆選修相同的課程,將顯示「已經選過課」如下∶ 

      選修課程時,若超過選修課程的50個名額時,則顯示「名額已滿」如下∶ 
      取消選課
      選修課程後,可以取消所選修的課程,於「選修課程」處選擇待取消選修課程如婚姻學,於「學號」處輸入學號如123456後,按下「取消選課」按鈕,即可顯示取消選課的結果如下∶
      若待取消的課程尚未選過,則取消選課時將顯示「找不到」如下∶ 
      查詢選課
      選修課程後,可以查詢所有選修的課程,僅須於「學號」處輸入學號如123456後,按下「查詢選課」按鈕,即可顯示查詢選課的結果如下∶ 
      查詢選課時,若尚未選課,則查詢選課時將顯示「找不到」如下∶ 

      設計實例詳細解說
      建立資料表
      首先使用Microsoft Access、Microsoft SQL Server 、Text檔案、或任何一種支援ODBC的資料庫,建立一個資料表ClassCount,儲存選課人數、和最後選課順序。
      這個資料表系供選課和取消選課時,記錄選課人數、和最後選課順序號碼之用。
      建立欄位TOTAL、COUNT0、CLASS,分別代表一個選課記錄的選課人數、最後選課順序號碼、選修
      課程名稱。
      建立資料表時不必輸入資料。
      使用Microsoft Access建立一個資料表ClassCount,如下∶ 
      或使用Microsoft SQL Server建立一個資料表ClassCount,如下∶ 
      或使用Text檔案建立一個資料表ClassCount,如下∶ 
      尚需要建立另一個資料表ClassReg,儲存選課的記錄,建立欄位ID、COUNT0、CLASS,分別代表一筆選修課程的學號、選課順序號碼、選修課程名稱。這個資料表系供選課、查詢選課、和取消選課時,記錄所選修課程、和選課順序號碼之用。建立資料表時不必輸入資料。
      使用Microsoft Access建立一個資料表ClassReg,如下∶ 
      或使用Microsoft SQL Server建立一個資料表ClassReg,如下∶ 
      或使用Text檔案建立一個資料表ClassReg,如下∶ 
      設計輸入的表單
      接著,設計輸入的表單form,當學生選擇選修課程CLASS1,輸入學號ID1,按下「查榜」按鈕submit時,即使用POST的方式將輸入資料傳送到網站伺服器,并執行於「form action=...」所設定的data15.asp檔案(與form為同一個ASP檔案),程式碼如下∶
      線上學校選課, 請輸入以下資料:<br>
      <form action="data15.asp" method="post">
      <FONT COLOR="#FF8080">■ </FONT>選修課程: 
      <select name="CLASS1">
      <OPTION SELECTED>微電腦
      <OPTION>熱傳學
      <OPTION>電子學
      <OPTION>半導體
      <OPTION>記憶體
      <OPTION>網路學
      <OPTION>婚姻學
      <OPTION>家政學
      </select> 
      <br> 
      <FONT COLOR="#FF8080">■ </FONT>學號 (如123456): 
      <INPUT TYPE=TEXT VALUE="123456" NAME="ID1" SIZE=10><BR>
      <INPUT TYPE=submit VALUE="選課" name="Action">
      <INPUT TYPE=submit VALUE="取消選課" name="Action"><br>
      <INPUT TYPE=submit VALUE="查詢選課" name="Action"> 僅須填入學號<br>
      </form>
      網站伺服器執行data15.asp檔案,首先經由Request.Form("Action")取得所按submit按鈕上的顯示文字VALUE,Left(Request.Form("Action"),2)系只取前兩個中文字,若Request.Form("Action")非空白時,表示為表單輸入所呼叫執行。
      由「SELECT CASE Left(Request.Form("Action"),2) 」判斷是按了那個按鈕。若按鈕上前兩個字為「選課」時,則執行AddReg() 副程式;若為「取消」時,則執行DeleteReg() 副程式;若
      為「查詢」時,則執行CheckReg() 副程式。
      <%
      SELECT CASE Left(Request.Form("Action"),2)
      CASE "選課"
      AddReg()
      CASE "取消"
      DeleteReg()
      CASE "查詢"
      CheckReg()
      END SELECT
      %>
      選課
      按了「選課」按鈕時,將執行AddReg() 副程式。
      首先,使用「Server.CreateObject」建立連線的物件,并使用「Open」開啟待存取查詢資料庫BookSamp。
      再尋找所待新增的選課記錄,以檢查是否已經選過課,使用SELECT的SQL指令查詢資料庫的資料,於ClassReg資料表,設定SQL指令,查詢為欄位ID符合所輸入學號Request.Form("ID1"),和欄位CLASS符合所選擇選修課程Request.Form("CLASS1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的動作,并將查詢結果儲存到RecordSets物件RS。
      程式碼如下∶
      Sub AddReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT * FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = 
      '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      %>
      接著,要顯示執行的結果了。
      首先於ClassReg資料表,尋找選課的記錄,由「IF RS.EOF THEN ...」判斷是否找到欄位ID符合所輸入學號ID1,和欄位CLASS符合所選擇選修課程CLASS1的資料。
      若RS.EOF為TRUE,表示此選修課程尚未選課,再尋找所待選修的課程是否已經有人選過課。於ClassCount資料表,設定SQL指令,查詢為CLASS符合所選擇選修課程Request.Form("CLASS1")的資料。若RS.EOF為TRUE,表示此選修課程尚未有人選課,則於ClassCount資料表,使用「INSERT INTO...」指令新增一筆資料。此筆新增資料的選課人數TOTAL、和最後選課順序號碼COUNT0都設定為1,選修課程名稱CLASS設定為Request.Form("CLASS1")。
      然後再於ClassReg資料表,使用「INSERT INTO...」指令新增一筆資料。此筆新增資料的選課順序號碼COUNT0設定為1,學號ID為Request.Form("ID1"),選修課程名稱CLASS為Request.Form("CLASS1")。
      顯示執行的結果時,配合<TABLE>表格的HTML語法,將結果填入表格的各欄位當中。
      程式碼,如下∶
      IF RS.EOF THEN 
      RS.Close 
      SQL = "SELECT * FROM ClassCount WHERE CLASS = '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      IF RS.EOF THEN
      '此科次尚未有人選課 ! 於ClassCount新增一筆
      SQL = "INSERT INTO ClassCount(COUNT0, TOTAL, CLASS) VALUES(1,1,'" & 
      LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL) 
      'ClassReg新增一筆
      SQL = "INSERT INTO ClassReg(COUNT0, ID, CLASS) VALUES(1,'" & Request.Form("ID1") & 
      "','" & LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL)
      %> 
      <FONT COLOR="#0000FF">選課 OK ! 選課順序為第 1 號</FONT> 
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR> 
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %>
      </FONT>
      </TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">
      <%=LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">1</FONT></TD>
      </TR> 
      </TABLE>
      若找到ID符合所輸入學號ID1,和CLASS符合所選擇選修課程CLASS1的資料,即RS.EOF為FALSE,表示此課程已有人選課。
      由「IF RS(0) < 50 THEN...」判斷RS(0) 選課人數TOTAL是否超過50個名額。
      若未超過,則於ClassCount資料表,使用「UPDATE...」指令,將此筆資料的選課人數TOTAL、和最後選課順序號碼COUNT0都加一。
      然後,再於ClassReg資料表,使用「INSERT INTO...」指令新增一筆資料。此筆新增資料的學號ID為Request.Form("ID1") ,選課順序號碼COUNT0為ClassCount資料表的加一後之COUNT0新值,選修課程名稱CLASS為Request.Form("CLASS1")。
      接著,顯示執行的結果時,配合<TABLE>表格的HTML語法,將於ClassReg資料表新增的資料,填入表格的各欄位當中顯示出來。
      程式碼,如下∶
      <% ELSE 
      IF RS(0) < 50 THEN 
      '此課程已有人選課 ! ClassCount的COUNT,TOTAL增一 
      TotalNo = RS(0)+1
      CountNo = RS(1)+1 
      SQL = "UPDATE ClassCount SET TOTAL = " & TotalNo & ",COUNT0 = " & CountNo & " WHERE 
      CLASS = '" & LEFT(Request.Form("CLASS1"),3) & "'" 
      Set RS = Conn.Execute(SQL) 
      'ClassReg新增一筆
      SQL = "INSERT INTO ClassReg(COUNT0, ID, CLASS) VALUES(" & CountNo & ",'" & 
      Request.Form("ID1") & "','" & LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL)
      %> 
      <FONT COLOR="#0000FF">選課 OK ! 選課順序為第 <% =CountNo %> 號</FONT> 
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =CountNo %></FONT></TD>
      </TR> 
      </TABLE>
      若此課程的選課人數TOTAL超過50個名額,則顯示「本選修課程名額已滿 ! 請選修其他課程 !」。接著,顯示執行的結果,配合<TABLE>表格的HTML語法,將學號和選修課程的資料,填入表格的各欄位當中顯示出來。程式碼,如下∶
      <% ELSE %>
      <% '50名額已滿 %>
      <FONT COLOR="#FF0000">報歉 !</FONT><br>
      <FONT COLOR="#FF0000">本選修課程名額已滿 ! 請選修其他課程 !</FONT> 
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> 
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      </TR> 
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF %> 
      <% END IF %>
      當於ClassReg資料表,由「IF RS.EOF THEN ...」判斷是否找到ID符合所輸入學號ID1,和CLASS符合所選擇選修課程CLASS1的資料時,若RS.EOF為FALSE,表示此選修課程已經選課,則顯示「報歉! 已經選過課! 選課順序為第...號」。接著,顯示執行的結果,配合<TABLE>表格的HTML語法,將學號、選修課程、和選課順序的資料,填入表格的各欄位當中顯示出來。
      程式碼,如下∶
      <% ELSE %>
      <% '已經選修 %>
      <FONT COLOR="#FF0000">報歉 !</FONT><br>
      <FONT COLOR="#FF0000">已經選過課 !</FONT> 選課順序為第 <% =RS(1) %> 號</FONT> 

      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF 
      Conn.Close
      End Sub %>
      最後,使用Conn.Close關閉資料庫。
      取消選課
      按了「取消選課」按鈕時,將執行DeleteReg() 副程式。
      首先,先尋找到所待取消的選課記錄,使用「Server.CreateObject」建立連線的物件,并使用「Open」開啟待存取查詢資料庫BookSamp。
      再使用SELECT的SQL指令查詢資料庫的資料,於ClassReg資料表,設定SQL指令,查詢為ID符合所輸入學號Request.Form("ID1"),和CLASS符合所選擇選修課程Request.Form("CLASS1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的動作,并將查詢結果儲存到RecordSets物件RS。
      由「IF RS.EOF THEN ...」判斷是否找到所待取消的選課記錄,若RS.EOF為TRUE,表示此選修課程尚未選課,則顯示「找不到 ! 尚未選課 !」。
      程式碼如下∶
      <%
      Sub DeleteReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa","" 

      SQL = "SELECT * FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = 
      '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      %> 

      <HR>
      <FONT COLOR="#0000FF">取消選課結果:</FONT><br>
      <% 
      IF RS.EOF THEN 
      '找不到 ! 尚未選課 ! 
      %>
      <FONT COLOR="#FF0000">找不到 ! 尚未選課 !</FONT>
      若找到所待取消的選課記錄,則於ClassReg資料表,使用「DELETE FROM...」指令刪除此筆資料。
      然後,再於ClassCount資料表,使用「UPDATE...」指令,將此筆課程的選課人數TOTAL減一。
      接著,顯示執行的結果,配合<TABLE>表格的HTML語法,將於ClassReg資料表刪除的資料,填入表格的各欄位當中,以顯示出來。
      程式碼,如下∶
      <% ELSE 
      '取消選課 ! 
      'ClassReg刪除一筆
      SQL = "DELETE FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = '" 
      & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL) 

      'ClassCount的TOTAL減一
      'RS.Close 
      SQL = "SELECT * FROM ClassCount WHERE CLASS = '" & LEFT(Request.Form("CLASS1"),3) & 
      "'"
      Set RS = Conn.Execute(SQL)
      IF RS.EOF THEN
      %>
      <FONT COLOR="#FF0000">找不到選課資料 !</FONT>
      <% 

      ELSE
      TotalNo = RS(0)-1 

      SQL = "UPDATE ClassCount SET TOTAL = " & TotalNo & " WHERE CLASS = '" & 
      LEFT(Request.Form("CLASS1"),3) & "'" 

      Set RS = Conn.Execute(SQL)
      %>
      <FONT COLOR="#FF0000">選課已經取消 !</FONT> 
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF 
      END IF
      Conn.Close
      End Sub %>
      最後,使用Conn.Close關閉資料庫。
      查詢選課
      按了「查詢選課」按鈕時,執行CheckReg() 副程式。
      首先,先尋找到所待查詢的選課記錄,使用「Server.CreateObject」建立連線的物件,并使用
      「Open」開啟待存取查詢資料庫BookSamp。
      再使用SELECT的SQL指令查詢資料庫的資料,於ClassReg資料表,設定SQL指令,查詢為ID符合所
      輸入學號Request.Form("ID1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的
      動作,并將查詢結果儲存到RecordSets物件RS。
      由「IF RS.EOF THEN ...」判斷是否找到所待查詢學號的所有選課記錄,若RS.EOF為TRUE,表示
      此學號的學生尚未選課,則顯示「找不到 ! 尚未選課 !」。
      程式碼如下∶
      <%
      Sub CheckReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa","" 

      SQL = "SELECT ID,CLASS,COUNT0 FROM ClassReg WHERE ID = '" & Request.Form("ID1") & 
      "'" 

      Set RS = Conn.Execute(SQL)
      %>
      <HR>
      <FONT COLOR="#0000FF">查詢選課結果:</FONT><br> 

      <% 
      IF RS.EOF THEN 
      '找不到 ! 尚未選課 ! 
      %>
      <FONT COLOR="#FF0000">找不到 ! 尚未選課 !</FONT>
      若找到ID為學號Request.Form("ID1")的資料,則顯示查詢的結果,包括學號、選修課程、選課
      順序,分別由RecordSets物件的RS(0)、RS(1)、RS(2)取得。
      RS.Fields.Count表示RecordSets物件的欄位數,由「For i = 0 to RS.Fields.Count - 1」取
      得RS(i) 各欄位的資料。配合<TABLE>表格的HTML語法,將結果填入表格的各欄位當中。
      若還有下一筆資料,使用RS.MoveNext移到下一筆的位置。
      程式碼,如下∶
      <% ELSE %>
      <% '有選課 ! %>
      <FONT COLOR="#0000ff">選課如下:</FONT> 

      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR> 

      <% j = 1 %> 
      <% Do While Not RS.EOF %> 

      <TR> 

      <% For i = 0 to RS.Fields.Count - 1 %>
      <% If INT(j/2)*2 <> j Then %>
      <TD BGCOLOR="E8FFFF" ALIGN=CENTER>
      <FONT COLOR="#000000"><%= RS(i) %></FONT></TD> 

      <% Else %>
      <TD ALIGN=CENTER BGCOLOR="#C0FFFF">
      <FONT COLOR="#000000"><%= RS(i) %></FONT></TD>
      <% END IF %> 

      <% Next %>
      </TR>
      <%
      RS.MoveNext
      j = j + 1
      Loop
      %>
      </TABLE> 

      <% END IF 
      RS.Close
      Conn.Close
      End Sub %>
      最後,使用RS.Close關閉RecordSet,使用Conn.Close關閉資料庫。
      全部的程式碼,如下∶
      <HTML>
      <HEAD>
      <TITLE>線上學校注冊選課系統</TITLE>
      <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5">
      </HEAD> 

      <BODY BGCOLOR=#FFFFFF>
      <FONT SIZE=+2 COLOR="#0000FF">線上學校注冊選課系統</FONT>
      <%
      SELECT CASE Left(Request.Form("Action"),2) 

      CASE "選課"
      AddReg() 

      CASE "取消"
      DeleteReg() 

      CASE "查詢"
      CheckReg() 

      END SELECT 

      Sub AddReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT * FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      %> 

      <HR>
      <FONT COLOR="#0000FF">選課結果:</FONT><br> 

      <% 
      IF RS.EOF THEN 
      RS.Close 
      SQL = "SELECT * FROM ClassCount WHERE CLASS = '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      IF RS.EOF THEN
      '此科次尚未有人選課 ! 於ClassCount新增一筆
      SQL = "INSERT INTO ClassCount(COUNT0, TOTAL, CLASS) VALUES(1,1,'" & 
      LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL) 

      'ClassReg新增一筆
      SQL = "INSERT INTO ClassReg(COUNT0, ID, CLASS) VALUES(1,'" & Request.Form("ID1") & 
      "','" & LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL)
      %>
      <FONT COLOR="#0000FF">選課 OK ! 選課順序為第 1 號</FONT>
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">1</FONT></TD>
      </TR> 
      </TABLE> 

      <% ELSE 
      IF RS(0) < 50 THEN 
      '此課程已有人選課 ! ClassCount的COUNT0,TOTAL增一 
      TotalNo = RS(0)+1
      CountNo = RS(1)+1
      SQL = "UPDATE ClassCount SET TOTAL = " & TotalNo & ",COUNT0 = " & CountNo & " WHERE 
      CLASS = '" & LEFT(Request.Form("CLASS1"),3) & "'" 
      Set RS = Conn.Execute(SQL) 

      'ClassReg新增一筆
      SQL = "INSERT INTO ClassReg(COUNT0, ID, CLASS) VALUES(" & CountNo & ",'" & 
      Request.Form("ID1") & "','" & LEFT(Request.Form("CLASS1"),3) & "')"
      Set RS = Conn.Execute(SQL)
      %>
      <FONT COLOR="#0000FF">選課 OK ! 選課順序為第 <% =CountNo %> 號</FONT>
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =CountNo %></FONT></TD>
      </TR> 
      </TABLE> 

      <% ELSE %>
      <% '50名額已滿 %>
      <FONT COLOR="#FF0000">報歉 !</FONT><br>
      <FONT COLOR="#FF0000">本選修課程名額已滿 ! 請選修其他課程 !</FONT>
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF %> 

      <% END IF %>



      <% ELSE %>
      <% '已經選修 %>
      <FONT COLOR="#FF0000">報歉 !</FONT><br>
      <FONT COLOR="#FF0000">已經選過課 !</FONT> 選課順序為第 <% =RS(1) %> 號</FONT>
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR> 

      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF 
      Conn.Close
      End Sub %> 

      <%
      Sub DeleteReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT * FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = 
      '" & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL)
      %>
      <HR>
      <FONT COLOR="#0000FF">取消選課結果:</FONT><br>
      <% 
      IF RS.EOF THEN 
      '找不到 ! 尚未選課 ! 
      %>
      <FONT COLOR="#FF0000">找不到 ! 尚未選課 !</FONT>
      <% ELSE 
      '取消選課 ! 
      'ClassReg刪除一筆
      SQL = "DELETE FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = '" 
      & LEFT(Request.Form("CLASS1"),3) & "'"
      Set RS = Conn.Execute(SQL) 

      'ClassCount的TOTAL減一
      'RS.Close 
      SQL = "SELECT * FROM ClassCount WHERE CLASS = '" & LEFT(Request.Form("CLASS1"),3) & 
      "'"
      Set RS = Conn.Execute(SQL)
      IF RS.EOF THEN
      %>
      <FONT COLOR="#FF0000">找不到選課資料 !</FONT>
      <% 

      ELSE
      TotalNo = RS(0)-1
      SQL = "UPDATE ClassCount SET TOTAL = " & TotalNo & " WHERE CLASS = '" & 
      LEFT(Request.Form("CLASS1"),3) & "'" 
      Set RS = Conn.Execute(SQL)
      %> 

      <FONT COLOR="#FF0000">選課已經取消 !</FONT> 
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% 
      =LEFT(Request.Form("CLASS1"),3) %></FONT></TD>
      </TR> 
      </TABLE>
      <% END IF 
      END IF
      Conn.Close
      End Sub %>



      <%
      Sub CheckReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT ID,CLASS,COUNT0 FROM ClassReg WHERE ID = '" & Request.Form("ID1") & 
      "'"
      Set RS = Conn.Execute(SQL)
      %>
      <HR>
      <FONT COLOR="#0000FF">查詢選課結果:</FONT><br>
      <% 
      IF RS.EOF THEN 
      '找不到 ! 尚未選課 ! 
      %> 

      <FONT COLOR="#FF0000">找不到 ! 尚未選課 !</FONT>
      <% ELSE %> 

      <% '有選課 ! %>
      <FONT COLOR="#0000ff">選課如下:</FONT> 

      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>學號</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選修課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>選課順序</FONT></TD>
      </TR>
      <% j = 1 %> 
      <% Do While Not RS.EOF %>
      <TR>
      <% For i = 0 to RS.Fields.Count - 1 %>
      <% If INT(j/2)*2 <> j Then %>
      <TD BGCOLOR="E8FFFF" ALIGN=CENTER>
      <FONT COLOR="#000000"><%= RS(i) %></FONT></TD>
      <% Else %>
      <TD ALIGN=CENTER BGCOLOR="#C0FFFF">
      <FONT COLOR="#000000"><%= RS(i) %></FONT></TD>
      <% END IF %>
      <% Next %>
      </TR> 

      <%
      RS.MoveNext
      j = j + 1
      Loop
      %>
      </TABLE> 

      <% END IF 
      RS.Close
      Conn.Close
      End Sub %> 

      <HR>
      線上學校選課, 請輸入以下資料:<br>
      <form action="data15.asp" method="post">
      <FONT COLOR="#FF8080">■ </FONT>選修課程:
      <select name="CLASS1">
      <OPTION SELECTED>微電腦
      <OPTION>熱傳學
      <OPTION>電子學
      <OPTION>半導體
      <OPTION>記憶體
      <OPTION>網路學
      <OPTION>婚姻學
      <OPTION>家政學
      </select>
      <br> 

      <FONT COLOR="#FF8080">■ </FONT>學號 (如123456): 
      <INPUT TYPE=TEXT VALUE="123456" NAME="ID1" SIZE=10><BR>
      <INPUT TYPE=submit VALUE="選課" name="Action">
      <INPUT TYPE=submit VALUE="取消選課" name="Action"><br>
      <INPUT TYPE=submit VALUE="查詢選課" name="Action"> 僅須填入學號<br>
      </form> 

      <HR> 

      </BODY>
      </HTML>
      學會了嗎?

      5-4
      研討會線上報名系統
      「研討會線上報名系統」,可以透過Internet,提供線上報名研討會的功能。想要參加研討會的學生,可以透過Internet,連線上「研討會線上報名系統」,輸入其身分證號碼、要報名的研討會課程後,即可完成報名手續。報名系統將自動統計每一個研討會課程的報名人數,若超過名額,將自動告之,要求報名其他的課程。
      報名研討會時,報名系統提供可以增加、取消、查詢報名課程的功能。
      學生可以線上查詢各研討會課程的授課內容簡介。
      學費可由信用卡、劃撥、或銀行轉帳來支付。
      設計實例
      讓我們執行一個實例。
      ( 范例 data16.asp 研討會線上報名
      若要線上報名研討會,於用戶端使用瀏覽器,瀏覽本書所附安裝於網站伺服器的data16.asp,於「參加研討會課程」處選擇課程如Windows NT,於「身份證號碼」處輸入身份證號碼如A123456789後,按下「報名」按鈕,即可顯示報名的結果如下,包括身份證號碼、課程、和報名順序∶ 
      報名研討會時,若課程已經報名過,則重覆報名相同的課程時將顯示「已經報名」如下∶ 
      報名研討會時,若超過研討會課程的50個名額時,將顯示「名額已滿」如下∶ 
      取消報名
      報名研討會後,可以取消所報名的課程,於「研討會課程」處選擇待取消的課程如Windows NT,於「身份證號碼」處輸入身份證號碼如A123456789後,按下「取消報名」按鈕,即可顯示取消報名的結果如下∶ 
      若待取消的課程尚未報名過,則取消報名時將顯示「找不到」如下∶ 
      查詢報名
      報名研討會後,可以查詢所有報名的課程,僅須於「身份證號碼」處輸入身份證號碼如A123456789後,按下「查詢報名」按鈕,即可顯示所有報名的課程如下∶ 
      查詢報名時,若尚未報名,則查詢報名時將顯示「找不到」如下∶ 

      設計實例詳細解說
      建立資料表
      首先使用Microsoft Access、Microsoft SQL Server 、Text檔案、或任何一種支援ODBC的資料庫,建立一個資料表ClassCount,儲存報名人數、和最後報名順序。
      這個資料表系供報名和取消報名時,記錄報名人數、和最後報名順序號碼之用。建立欄位TOTAL、COUNT0、CLASS,分別代表一個研討會課程的報名人數、最後報名順序號碼、研討會課程名稱。建立資料表時不必輸入資料。
      使用Microsoft Access建立一個資料表ClassCount,如下∶ 
      或使用Microsoft SQL Server建立一個資料表ClassCount,如下∶ 
      或使用Text檔案建立一個資料表ClassCount,如下∶ 
      尚需要建立另一個資料表ClassReg,儲存報名的記錄,建立欄位ID、COUNT0、CLASS,分別代表一筆報名記錄的報名者身份證號碼、報名順序號碼、報名課程名稱。這個資料表系供報名、查詢報名、和取消報名時,記錄所報名課程、和報名順序號碼之用。建立資料表時不必輸入資料。
      使用Microsoft Access建立一個資料表ClassReg,如下∶ 
      或使用Microsoft SQL Server建立一個資料表ClassReg,如下∶ 
      或使用Text檔案建立一個資料表ClassReg,如下∶ 

      設計輸入的表單
      接著,設計輸入的表單form,當學生選擇研討會課程CLASS1,輸入報名者身份證號碼ID1,按下「報名」等按鈕submit時,即使用POST的方式將輸入資料傳送到網站伺服器,并執行於「form action=...」所設定的data16.asp檔案(與form為同一個ASP檔案),
      程式碼如下∶
      報名研討會, 請輸入以下資料:<br>
      <form action="data16.asp" method="post">
      <FONT COLOR="#FF8080">■ </FONT>參加研討會課程: 

      <select name="CLASS1">
      <OPTION SELECTED>Office 97
      <OPTION>VB 5.0
      <OPTION>IIS 3.0
      <OPTION>IE 4.0
      <OPTION>Windows NT
      <OPTION>Internet Web Server
      <OPTION>Web Master
      </select>
      <br>
      <FONT COLOR="#FF8080">■ </FONT>報名者身份證號碼: 
      <INPUT TYPE=TEXT VALUE="A123456789" NAME="ID1" SIZE=10><BR>
      <INPUT TYPE=submit VALUE="報名" name="Action">
      <INPUT TYPE=submit VALUE="取消報名" name="Action"><br>
      <INPUT TYPE=submit VALUE="查詢報名" name="Action"> 僅須填入身份證號碼<br>
      </form>
      網站伺服器執行data16.asp檔案,首先經由Request.Form("Action")取得所按submit按鈕上的顯示文字VALUE,Left(Request.Form("Action"),2)系只取前兩個中文字,若Request.Form("Action")非空白時,表示為表單輸入所呼叫執行。
      由「SELECT CASE Left(Request.Form("Action"),2) 」判斷是按了那個按鈕。若按鈕上前兩個字為「報名」時,則執行AddReg() 副程式;若為「取消」時,則執行DeleteReg() 副程式;若為「查詢」時,則執行CheckReg() 副程式。
      <%
      SELECT CASE Left(Request.Form("Action"),2)
      CASE "報名"
      AddReg()
      CASE "取消"
      DeleteReg()
      CASE "查詢"
      CheckReg()
      END SELECT
      %>
      報名
      按了「報名」按鈕時,將執行AddReg() 副程式。
      首先,使用「Server.CreateObject」建立連線的物件,并使用「Open」開啟待存取查詢資料庫BookSamp。
      再尋找所待新增的報名記錄,以檢查是否已經報過名,使用SELECT的SQL指令查詢資料庫的資料,於ClassReg資料表,設定SQL指令,查詢身份證號碼欄位ID符合所輸入Request.Form("ID1"),和課程欄位CLASS符合所選擇Request.Form("CLASS1")的資料,下個「Execute」指令,即可開始執行存取查詢資料庫的動作,并將查詢結果儲存到RecordSets物件RS。
      程式碼如下∶
      Sub AddReg()
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open "BookSamp","sa",""
      SQL = "SELECT * FROM ClassReg WHERE ID = '" & Request.Form("ID1") & "' AND CLASS = 
      '" & Request.Form("CLASS1") & "'"
      Set RS = Conn.Execute(SQL)
      接著,要顯示執行的結果了。
      首先於ClassReg資料表,尋找報名的記錄,由「IF RS.EOF THEN ...」判斷是否找到身份證號碼欄位ID符合所輸入Request.Form("ID1"),和課程欄位CLASS符合所選擇Request.Form("CLASS1")的資料。
      若RS.EOF為TRUE,表示此課程尚未報名,再尋找所待報名的課程是否已經有人報過名。於ClassCount資料表,設定SQL指令,查詢課程欄位CLASS符合所選擇Request.Form("CLASS1")的資料。若RS.EOF為TRUE,表示此課程尚未有人報名,則於ClassCount資料表,使用「INSERT 
      INTO...」指令新增一筆資料。此筆新增資料的報名人數欄位TOTAL、和最後報名順序號碼欄位COUNT0都設定為1,課程名稱欄位CLASS設定為Request.Form("CLASS1")。
      然後再於ClassReg資料表,使用「INSERT INTO...」指令新增一筆資料。此筆新增資料的身份證號碼欄位ID為Request.Form("ID1") ,報名順序號碼欄位COUNT0為1,課程名稱欄位CLASS為Request.Form("CLASS1")。顯示執行的結果時,配合<TABLE>表格的HTML語法,將結果填入表格的各欄位當中。
      程式碼,如下∶
      <FONT COLOR="#0000FF">線上報名結果:</FONT><br>
      <% 
      IF RS.EOF THEN 
      RS.Close 
      SQL = "SELECT * FROM ClassCount WHERE CLASS = '" & Request.Form("CLASS1") & "'"
      Set RS = Conn.Execute(SQL) 

      IF RS.EOF THEN
      '此課程尚未有人報名 ! 於ClassCount新增一筆
      SQL = "INSERT INTO ClassCount(COUNT0, TOTAL, CLASS) VALUES(1,1,'" & 
      Request.Form("CLASS1") & "')"
      Set RS = Conn.Execute(SQL) 

      'ClassReg新增一筆
      SQL = "INSERT INTO ClassReg(COUNT0, ID, CLASS) VALUES(1,'" & Request.Form("ID1") & 
      "','" & Request.Form("CLASS1") & "')"
      Set RS = Conn.Execute(SQL)
      %>
      <FONT COLOR="#0000FF">報名 OK ! 報名順序為第 1 號</FONT>
      <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
      <TR>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>身份證號碼</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>研討會課程</FONT></TD>
      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>報名順序</FONT></TD>
      </TR>
      <TR>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("CLASS1") 
      %></FONT></TD>
      <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">1</FONT></TD>
      </TR> 
      </TABLE>
      若找到ID符合所輸入身份證號碼ID1,和CLASS符合所選擇課程CLASS1的資料,即RS.EOF為FALSE,表示此課程已有人報名。
      由「IF RS(0) < 50 THEN...」判斷RS(0) 報名人數TOTAL是否超過50個名額。
      若未超過,則於ClassCount資料表,使用「UPDATE...」指令,將此筆資料的報名人數TOTAL、和最後報名順序號碼COUNT0都加一。
      然後,再於ClassReg資料表,使用「INSERT INTO...」指令新增一筆資料。此筆新增資料的身份證號碼ID為Request.Form("ID1"),報名順序號碼COUNT0為ClassCount?


      日韩精品一区二区三区高清