明辉站/技术开发/内容

旅游网站应用设计

技术开发2023-08-15 阅读
[摘要]这篇文章介绍运输旅游网站应用设计,包括时刻表线上查询系统、线上机票车票订位系统、旅行社线上查询报名系统、旅馆线上查询预约系统、邮件运送线上查询预约系统、等应用的点子、设计实例、以及详细解说,让您快速地设计出各种运输旅游的网站应用。运输网站资料库应用运输旅游方面,使用网站资料库,可以透过Intern...

这篇文章介绍运输旅游网站应用设计,包括时刻表线上查询系统、线上机票车票订位系统、旅行社线上查询报名系统、旅馆线上查询预约系统、邮件运送线上查询预约系统、等应用的点子、设计实例、以及详细解说,让您快速地设计出各种运输旅游的网站应用。

运输网站资料库应用
运输旅游方面,使用网站资料库,可以透过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 驱动程式」。详见附录 范例磁片。

1
时刻表线上查询系统
「时刻表线上查询系统」,可以透过Internet,提供查询时刻表的功能。
旅客透过Internet,连线上航空公司(铁路局、公路局)的「时刻表线上查询系统」,可以线上查询航空班机(火车票、公路局车票)时刻表。
「时刻表线上查询系统」也可以提供旅游促销活动、班次起飞到达误点,或旅游地点的住宿旅馆、饮食餐厅、天气预告、娱乐地点等资讯。
设计实例
让我们执行一个实例。
( 范例 data8.asp 飞机班机时刻表线上查询
若要查询资料,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data8.asp,即可显示查询的飞机班机时刻表如下,包括班次、离/到时刻、机型∶ 

设计实例详细解说
建立资料表
首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表AirTimeTable。
於栏名FLIGHT、TIME、AIRCRAFT分别输入班次、离/到时刻、机型的资料。
使用Microsoft Access建立一个资料表AirTimeTable,如下∶ 
或使用Microsoft SQL Server建立一个资料表AirTimeTable,如下∶ 
或使用Text档案建立一个资料表AirTimeTable,如下∶ 

查询资料库
接著,网站伺服器执行data8.asp档案,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,设定SQL指令,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
程式码如下∶
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT FLIGHT,TIME,AIRCRAFT FROM AirTimeTable"
Set RS = Conn.Execute(SQL)
%>
接著,要显示查询的结果了。
首先,由「 IF RS.EOF THEN ...」判断是否找到飞机班机时刻表的资料,若RS.EOF为TRUE,则显示「本月无航空班机」。
若找到飞机班机时刻表的资料,则显示考上的结果,包括班次、离/到时刻、机型,分别由RecordSets物件的RS(0)、RS(1) 、RS(2) 取得。
RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。
由「If INT(j/2)*2 <> j Then... 」判断显示奇偶笔的班机时刻资料,奇偶列显示不同的颜色。
若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。
程式码,如下∶
<% 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="#000080"><FONT>班次</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#000080"><FONT>离/到 时刻</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#000080"><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
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>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT FLIGHT,TIME,AIRCRAFT FROM AirTimeTable"
Set RS = Conn.Execute(SQL)
%>
<HR> 
<% 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="#000080"><FONT>班次</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#000080"><FONT>离/到 时刻</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#000080"><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
RS.Close
Conn.Close
%>
</TABLE> 
<% END IF %> 
<HR>
</CENTER>
</BODY>
</HTML>

2
线上机票车票订位系统
「线上机票车票订位系统」,可以透过Internet,提供机票、火车票、公路局车票预约订位的功能。
旅客透过Internet,连线上航空公司(铁路局、公路局)的「线上机票车票订位系统」,可以由电脑输入班机、身分证号码、日期,完成机票(火车票、公路局车票)订位手续。
订位系统将自动统计每一个班次的订位人数,若超过名额,将自动告之,要求旅客订位其他的班次。
订位时,订位系统提供可以增加、取消、查询订位的功能。
旅客可以线上查询航空班机(火车票、公路局车票)时刻表。
费用可由信用卡、划拨、或银行转帐来支付。
设计实例
让我们执行一个实例。
( 范例 data11.asp 线上机票订位
若要线上订位机票,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data11.asp,於「身分证字号」处输入身分证字号如A123456789,於「搭机日期」处输入搭机日期如870707,於「搭机班次」处输入搭机班次如103後,按下「订位」按钮,即可显示机票订位的结果如下,包括身分证字号、搭机日期、搭机班次、定位顺序∶ 
线上订位机票时,若此班次已经订位过,则重覆订位相同的班次将显示「已经订过位」如下∶ 
线上订位机票时,若超过订位的300个名额时,则显示「机位已满」如下∶ 

取消订位
线上订位机票後,可以取消所订位的记录,於「身分证字号」处输入身分证字号如A123456789,於「搭机日期」处输入搭机日期如870707,於「搭机班次」处输入搭机班次如103後,按下「取消订位」按钮,即可显示取消订位的结果如下∶ 
若待取消的班次尚未订位过,则取消订位时显示「尚未订位」如下∶ 

查询订位
线上订位机票後,可以查询所有订位的记录,仅须於「身分证字号」处输入身分证字号如A123456789後,按下「查询」按钮,即可显示查询的结果如下∶ 
查询订位时,若尚未订位,则查询订位将显示「尚未订位」如下∶ 

班机时刻表
按下「班机时刻表」按钮,即可显示查询班机时刻表的结果如下∶ 

设计实例详细解说
建立资料表
首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表AirCount,储存一个班次的预约订位人数、和最後订位顺序号码。
这个资料表系供订位和取消订位时,记录一个班次的预约订位人数、和最後订位顺序号码之用。
建立栏位TOTAL、COUNT0、DATE0、FLIGHT,分别代表一个班次的预约订位人数、最後订位顺序号码、日期、班机。建立资料表时不必输入资料。
使用Microsoft Access建立一个资料表AirCount,如下∶ 
或使用Microsoft SQL Server建立一个资料表AirCount,如下∶ 
或使用Text档案建立一个资料表AirCount,如下∶ 
尚需要建立另一个资料表AirTicket,储存预约订位的记录,建立栏位ID、COUNT0、DATE0、FLIGHT,分别代表一笔预约订位记录的身分证号码、订位顺序号码、日期、班机。
这个资料表系供订位、查询订位、和取消订位时,记录一笔预约订位记录之用。建立资料表时不必输入资料。
使用Microsoft Access建立一个资料表AirTicket,如下∶ 
或使用Microsoft SQL Server建立一个资料表AirTicket,如下∶ 
或使用Text档案建立一个资料表AirTicket,如下∶ 

设计输入的表单
接著,设计输入的表单form,当客户输入身分证字号ID1、搭机日期DATE1、搭机班次FLIGHT1,按下「订位」等的按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data11.asp档案(与form为同一个ASP档案),程式码如下∶
机票订位, 请输入:<br>
<form action="data11.asp" method="post"> 
<FONT COLOR="#FF8080">■ </FONT>身分证字号 (如A123456789): 
<INPUT TYPE=TEXT VALUE="A123456789" NAME="ID1" SIZE=10><BR>
<FONT COLOR="#FF8080">■ </FONT>搭机日期 (如87年7月1日请输入870701): 
<INPUT TYPE=TEXT VALUE="870701" NAME="DATE1" SIZE=6><BR>
<FONT COLOR="#FF8080">■ </FONT></FONT>搭机班次 (如103): 
<INPUT TYPE=TEXT VALUE="103" NAME="FLIGHT1" SIZE=3><BR> 
<INPUT TYPE=submit VALUE="订位" name="Action">
<INPUT TYPE=submit VALUE="取消订位" name="Action"><br>
<INPUT TYPE=submit VALUE="查询" name="Action"> 仅须填入身分证字号<br>
</form> 
<form>
<INPUT TYPE=button VALUE="班机时刻表" OnClick="location.href='data8.asp'">
</form>
若按下「班机时刻表」的按钮时,执行data8.asp,以查询班机时刻表。
网站伺服器执行data11.asp档案,首先经由Request.Form("Action")取得所按submit按钮上的显示文字VALUE,Left(Request.Form("Action"),2)系只取前两个中文字,若Request.Form("Action")非空白时,表示为表单输入所呼叫执行。
由「SELECT CASE Left(Request.Form("Action"),2) 」判断是按了那个按钮。若按钮上前两个字为「订位」时,则执行AddTicket() 副程式;若为「取消」时,则执行DeleteTicket() 副程式;若为「查询」时,则执行CheckTicket() 副程式。
<%
SELECT CASE Left(Request.Form("Action"),2)
CASE "订位"
AddTicket()
CASE "取消"
DeleteTicket()
CASE "查询"
CheckTicket()
END SELECT
%>
订位
按了「订位」按钮时,将执行AddTicket() 副程式。
首先,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再寻找所待新增的订位记录,以检查是否已经订过位,使用SELECT的SQL指令查询资料库的资料,於AirTicket资料表,设定SQL指令,查询身分证字号栏位ID符合所输入Request.Form("ID1"),和栏位DATE0符合所输入搭机日期Request.Form("DATE1"),及栏位FLIGHT符合所输入搭机日期Request.Form("FLIGHT1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
程式码如下∶
Sub AddTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT * FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'"
Set RS = Conn.Execute(SQL)
接著,要显示执行的结果了。
首先於AirTicket资料表,检查是否已经订过位,由「IF RS.EOF THEN ...」判断。若RS.EOF为TRUE,表示此客户对於此班次尚未订过位,再寻找是否所待订位的班次已经有人订过位。於AirCount资料表,设定SQL指令,查询栏位DATE0符合所输入搭机日期Request.Form("DATE1"),及栏位FLIGHT符合所输入搭机日期Request.Form("FLIGHT1")的资料。若RS.EOF为TRUE,表示此班次尚未有人订位,则於AirCount资料表,使用「INSERT INTO...」指令新增一笔资料。此笔新增资料的订位人数栏位TOTAL、和最後订位顺序号码栏位COUNT0都设定为1,搭机日期栏位DATE0设定为Request.Form("DATE1"),及搭机日期栏位FLIGHT设定为Request.Form("FLIGHT1")。
然後再於AirTicket资料表,使用「INSERT INTO...」指令新增一笔资料。此笔新增资料的订位顺序号码栏位COUNT0设定为1,身分证字号栏位ID设定为Request.Form("ID1"),搭机日期栏位DATE0设定为Request.Form("DATE1"),及搭机日期栏位FLIGHT设定为Request.Form("FLIGHT1")。
显示执行的结果时,配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。
程式码,如下∶
<FONT COLOR="#0000FF">订位结果:</FONT><br>
<% 
IF RS.EOF THEN 
RS.Close 
SQL = "SELECT * FROM AirCount WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL) 
IF RS.EOF THEN
'此班次尚未有人订位 ! 於AirCount新增一笔
SQL = "INSERT INTO AirCount(COUNT, TOTAL, DATE0, FLIGHT) VALUES(1,1,'" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')"
Set RS = Conn.Execute(SQL) 
'AirTicket新增一笔
SQL = "INSERT INTO AirTicket(COUNT0, ID, DATE0, FLIGHT) VALUES(1,'" & Request.Form("ID1") & "','" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')" 
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">1</FONT></TD>
</TR> 
</TABLE>
若此班次已有人订位,即RS.EOF为FALSE。由「IF RS(0) < 300 THEN...」判断RS(0) 订位人数TOTAL是否超过300个名额。
若未超过,则於AirCount资料表,使用「UPDATE...」指令,将此笔资料的订位人数TOTAL、和最後订位顺序号码COUNT0都加一。
然後,再於AirTicket资料表,使用「INSERT INTO...」指令新增一笔资料。此笔新增资料的订位顺序号码栏位COUNT0为AirCount资料表的加一後之COUNT0新值,身分证字号栏位ID设定为Request.Form("ID1"),搭机日期栏位DATE0设定为Request.Form("DATE1"),及搭机日期栏位FLIGHT设定为Request.Form("FLIGHT1")。
接著,显示执行的结果时,配合<TABLE>表格的HTML语法,将於AirTicket资料表新增的资料,填入表格的各栏位当中显示出来。
程式码,如下∶
<% ELSE 
IF RS(0) < 300 THEN 
'此班次已有人订位 ! AirCount的COUNT0,TOTAL增一
TotalNo = RS(0)+1
CountNo = RS(1)+1 
SQL = "UPDATE AirCount SET TOTAL = " & TotalNo & ",COUNT0 = " & CountNo & " WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL) 
'AirTicket新增一笔
SQL = "INSERT INTO AirTicket(COUNT0, ID, DATE0, FLIGHT) VALUES(" & CountNo & ",'" & Request.Form("ID1") & "','" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')" 
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =CountNo %></FONT></TD>
</TR> 
</TABLE>
若此班次的订位人数TOTAL超过300个名额时,则显示「机位已满 ! 请定其他班次 !」。
接著,显示执行的结果,配合<TABLE>表格的HTML语法,将身分证字号和搭机日期等输入资料,填入表格的各栏位当中显示出来。
程式码,如下∶
<% ELSE %>
<% '300机位已满 %>
<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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
</TR> 
</TABLE>
<% END IF %> 
<% END IF %>
当於AirTicket资料表,由「IF RS.EOF THEN ...」判断检查是否已经订过位,。若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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD>
</TR> 
</TABLE>
<% END IF 
Conn.Close
End Sub %>
最後,使用Conn.Close关闭资料库。
取消订位
按了「取消订位」按钮时,将执行DeleteTicket() 副程式。
首先,先寻找到所待取消的订位记录,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,於AirTicket资料表,设定SQL指令,查询身分证字号栏位ID符合所输入Request.Form("ID1"),和栏位DATE0符合所输入搭机日期Request.Form("DATE1"),及栏位FLIGHT符合所输入搭机日期Request.Form("FLIGHT1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
由「IF RS.EOF THEN ...」判断是否找到所待取消的订位记录,若RS.EOF为TRUE,表示此客户对於此班次尚未订位,则显示「找不到 ! 尚未订位 !」。
程式码如下∶
<%
Sub DeleteTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL)
%>
<HR>
<FONT COLOR="#0000FF">取消订位结果:</FONT><br> 
<% 
IF RS.EOF THEN 
'找不到 ! 尚未订位 ! 
%>
<FONT COLOR="#FF0000">找不到 ! 尚未订位 !</FONT>
若找到所待取消的订位记录,则於AirTicket资料表,使用「DELETE FROM...」指令删除此笔资料。
然後,再於AirCount资料表,使用「UPDATE...」指令,将此笔课程的选课人数TOTAL减一。
接著,显示执行的结果,配合<TABLE>表格的HTML语法,将於AirTicket资料表删除的资料,填入表格的各栏位当中,以显示出来。
程式码,如下∶
<% ELSE 
'取消已经订过位 ! 
'AirTicket删除一笔
SQL = "DELETE FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL) 
'AirCount的TOTAL减一
SQL = "SELECT * FROM AirCount WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL)
IF RS.EOF THEN
%>
<FONT COLOR="#FF0000">找不到订位资料 !</FONT>
<% 
ELSE
TotalNo = RS(0)-1
SQL = "UPDATE AirCount SET TOTAL = " & TotalNo & " WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
</TR> 
</TABLE> 
<% END IF 
END IF
Conn.Close
End Sub %>
最後,使用Conn.Close关闭资料库。
查询订位
按了「查询订位」按钮时,执行CheckTicket() 副程式。
首先,先寻找到所待查询的选课记录,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,於AirTicket资料表,设定SQL指令,查询身分证字号栏位ID符合所输入Request.Form("ID1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
由「IF RS.EOF THEN ...」判断是否找到所待查询身分证字号的所有订位记录,若RS.EOF为TRUE,表示此客户尚未订位,则显示「找不到 ! 尚未订位 !」。
程式码如下∶
<%
Sub CheckTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT ID,DATE0,FLIGHT,COUNT0 FROM AirTicket 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>
<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 "订位"
AddTicket() 
CASE "取消"
DeleteTicket() 
CASE "查询"
CheckTicket() 
END SELECT 
Sub AddTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL)
%> 
<HR>
<FONT COLOR="#0000FF">订位结果:</FONT><br> 
<% 
IF RS.EOF THEN 
RS.Close 
SQL = "SELECT * FROM AirCount WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'"
Set RS = Conn.Execute(SQL) 
IF RS.EOF THEN
'此班次尚未有人订位 ! 於AirCount新增一笔
SQL = "INSERT INTO AirCount(COUNT0, TOTAL, DATE0, FLIGHT) VALUES(1,1,'" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')"
Set RS = Conn.Execute(SQL) 
'AirTicket新增一笔
SQL = "INSERT INTO AirTicket(COUNT0, ID, DATE0, FLIGHT) VALUES(1,'" & Request.Form("ID1") & "','" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')"
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000">1</FONT></TD>
</TR> 
</TABLE> 
<% ELSE 
IF RS(0) < 300 THEN 
'此班次已有人订位 ! AirCount的COUNT0,TOTAL增一
TotalNo = RS(0)+1
CountNo = RS(1)+1 
SQL = "UPDATE AirCount SET TOTAL = " & TotalNo & ",COUNT0 = " & CountNo & " WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL) 
'AirTicket新增一笔
SQL = "INSERT INTO AirTicket(COUNT0, ID, DATE0, FLIGHT) VALUES(" & CountNo & ",'" & Request.Form("ID1") & "','" & Request.Form("DATE1") & "','" & Request.Form("FLIGHT1") & "')" 
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =CountNo %></FONT></TD>
</TR> 
</TABLE> 
<% ELSE %>
<% '300机位已满 %>
<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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD>
</TR> 
</TABLE>
<% END IF 
Conn.Close
End Sub %> 
<%
Sub DeleteTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
Set RS = Conn.Execute(SQL)
%>
<HR>
<FONT COLOR="#0000FF">取消订位结果:</FONT><br> 
<% 
IF RS.EOF THEN 
'找不到 ! 尚未订位 ! 
%>
<FONT COLOR="#FF0000">找不到 ! 尚未订位 !</FONT> 
<% ELSE '取消已经订过位 ! AirTicket删除一笔
SQL = "DELETE FROM AirTicket WHERE ID = '" & Request.Form("ID1") & "' AND DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'"
Set RS = Conn.Execute(SQL) 
'AirCount的TOTAL减一
'RS.Close 
SQL = "SELECT * FROM AirCount WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'"
Set RS = Conn.Execute(SQL) 
IF RS.EOF THEN
%>
<FONT COLOR="#FF0000">找不到订位资料 !</FONT> 
<%
ELSE
TotalNo = RS(0)-1
SQL = "UPDATE AirCount SET TOTAL = " & TotalNo & " WHERE DATE0 = '" & Request.Form("DATE1") & "' AND FLIGHT = '" & Request.Form("FLIGHT1") & "'" 
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>
<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("DATE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("FLIGHT1") %></FONT></TD>
</TR> 
</TABLE> 
<% END IF 
END IF
Conn.Close
End Sub %> 
<%
Sub CheckTicket()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT ID,DATE0,FLIGHT,COUNT0 FROM AirTicket 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>
<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="data11.asp" method="post"> 
<FONT COLOR="#FF8080">■ </FONT>身分证字号 (如A123456789): 
<INPUT TYPE=TEXT VALUE="A123456789" NAME="ID1" SIZE=10><BR>
<FONT COLOR="#FF8080">■ </FONT>搭机日期 (如87年7月1日请输入870701): 
<INPUT TYPE=TEXT VALUE="870701" NAME="DATE1" SIZE=6><BR>
<FONT COLOR="#FF8080">■ </FONT></FONT>搭机班次 (如103): 
<INPUT TYPE=TEXT VALUE="103" NAME="FLIGHT1" SIZE=3><BR> 
<INPUT TYPE=submit VALUE="订位" name="Action">
<INPUT TYPE=submit VALUE="取消订位" name="Action"><br>
<INPUT TYPE=submit VALUE="查询" name="Action"> 仅须填入身分证字号<br>
</form> 
<form>
<INPUT TYPE=button VALUE="班机时刻表" OnClick="location.href='data8.asp'">
</form> 
<HR>
</BODY></HTML>

3
其他运输旅游网站应用
其他的运输旅游网站应用,如下∶
旅行社线上查询报名系统
「旅行社线上查询报名系统」,可以透过Internet,提供旅游资讯、旅行团报名的功能。
想旅游的人,透过Internet,连线上旅行社的「旅行社线上查询报名系统」,可以查询旅游促销活动、旅游行程日期安排,或旅游地点的住宿旅馆、饮食餐厅、天气预告、娱乐地点图文简介等资讯。
可以由电脑输入身分证号码、参考旅行团次,完成旅行团报名手续。
已经报名参加的人,可以查询申请签证的处里结果、旅游注意事项、天气预告等资讯。
旅馆线上查询预约系统
「旅馆线上查询预约系统」,可以透过Internet,提供旅馆住宿资讯、预约房间的功能。
想旅游住宿的人,透过Internet,连线上旅馆的「旅馆线上查询预约系统」,可以查询旅馆住宿房间种类、房间图片、住宿费、促销活动、旅馆地址、交通工具、附近旅游地点的图文简介、饮食餐厅、天气预告等资讯。
预约系统,并提供透过Internet预约房间的服务。在电脑输入身分证号码、预约日期、房间种类,即可完成旅馆房间预约的手续。
预约时,预约系统提供可以增加、取消、查询预约的功能。
住宿费用可由信用卡、划拨、或银行转帐来支付。
邮件运送线上查询预约系统
「邮件运送线上查询预约系统」,可以透过Internet,提供查询运送状况、预约快递的功能。
想查询邮件运送状况的人,透过Internet,连线上邮局、快递公司的「邮件运送线上查询预约系统」,在电脑输入要查询的邮件运送号码,即可查询邮件运送的状况,是否已经到达。
送达时将自动传送E-Mail通知客户。
「邮件运送线上查询预约系统」也可提供快递预约的功能,客户透过Internet,输入要预约的取货地点、运送种类、取货日期、寄送地点等,即可完成快递预约的手续,通知来取货。
预约时,预约系统提供可以增加、取消、查询预约的功能。
送货人员取货、送达时,透过Internet,更新运送的状况。

……

相关阅读