六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

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

學校教學網站應用設計

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

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

學校網站資料庫應用
教學上使用網站資料庫,可以透過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?


主站蜘蛛池模板: 欧美一区二区三区四区在线观看 | 青青青青青免精品视频 | 天美传媒影视在线网址 | 四虎精品永久在线网址 | 色偷偷影院 | 香蕉视频一区 | 越南高清xxxxx18 | 在线免费精品视频 | 午夜快播 | 制服丝袜自拍偷拍 | 在线观看欧美亚洲 | 色噜噜狠狠狠狠色综合久 | 日本卡一卡2卡3卡4精品卡无人区 | 中文字幕一精品亚洲无线一区 | 青青国产线免观看手机版精品 | 天天干天天看 | 天堂资源在线中文 | 日本高清视频在线 | 日本三级韩国三级香港三级网站 | 三级香蕉 | 日韩欧美黄色片 | 天堂影视网 | 天天干网址 | 一级毛片一级毛片一级毛片一级毛片 | 欧美一区二区激情视频 | 日韩.欧美.国产.无需播放器 | 色丁香在线 | 最近手机中文字幕1页 | 欧美视频免费在线播放 | 有码日韩| 一级淫 | 天堂中文字幕在线 | 亚洲成a人片在线观看中文动漫 | 日韩黄色大片 | 日本三级2018亚洲视频 | 日本高清免费不卡在线播放 | 四虎影院永久免费 | 天天亚洲综合 | 天天干天天做天天射 | 婷婷久月 | 天天干夜夜操 |