国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于php網(wǎng)上航空購(gòu)票系統(tǒng)的實(shí)現(xiàn)

2013-01-01 00:00:00張東
科技資訊 2013年3期

摘 要:隨著計(jì)算機(jī)和互聯(lián)網(wǎng)開始走進(jìn)家庭,網(wǎng)上航空售票系統(tǒng)也展現(xiàn)出巨大的優(yōu)勢(shì)。在家中操作電腦,就可以查到全部的航班信息,輕點(diǎn)鼠標(biāo)就可以完成訂票付款。本文采用了PHP語(yǔ)言和MySQL數(shù)據(jù)庫(kù)相結(jié)合,配合前臺(tái)HTML語(yǔ)言的支持,共同實(shí)現(xiàn)Web頁(yè)面的顯示和后臺(tái)數(shù)據(jù)的查詢和更新。

關(guān)鍵詞:計(jì)算機(jī) 互聯(lián)網(wǎng) 購(gòu)票系統(tǒng) PHP MySQL HTML

中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)01(c)-0025-02

1 用戶注冊(cè)登錄功能的實(shí)現(xiàn)

在用戶注冊(cè)頁(yè)面中,用戶需要在信息表中輸入用戶名、密碼、確認(rèn)密碼和電子郵箱地址四項(xiàng)內(nèi)容。用戶的注冊(cè)頁(yè)面使用表單變量來處理用戶輸入的信息,用戶提交數(shù)據(jù)后,系統(tǒng)會(huì)驗(yàn)證用戶名是否符合要求、兩次輸入的密碼是否一致、電子郵箱地址是否正確,如果輸入有誤將會(huì)自動(dòng)轉(zhuǎn)到注冊(cè)出錯(cuò)頁(yè)面,并會(huì)顯示相應(yīng)的錯(cuò)誤信息。在系統(tǒng)檢查輸入的信息無誤后即可注冊(cè)成功,注冊(cè)成功后會(huì)有提示頁(yè)面,并設(shè)置為延時(shí)3秒后跳轉(zhuǎn)到查詢頁(yè)面,這時(shí)為已登錄狀態(tài),不需要用戶再進(jìn)入用戶登錄頁(yè)面進(jìn)行登錄。

在用戶登錄部分,需要用戶填寫用戶名和密碼,系統(tǒng)根據(jù)輸入的用戶名在數(shù)據(jù)庫(kù)中的login數(shù)據(jù)表查找到密碼,然后進(jìn)行比對(duì),如果密碼正確,用戶就能登錄成功。在登錄成功后,系統(tǒng)將用戶的編號(hào)和用戶名保存在session變量中,以便之后的每一個(gè)頁(yè)面都可以調(diào)用。登錄成功后,也會(huì)自動(dòng)跳轉(zhuǎn)到航班查詢頁(yè)面,方便用戶立即開始航班的查詢和預(yù)定。

實(shí)現(xiàn)用戶登錄功能的部分代碼:

if($submit)

{

if(!$_nick) $error="請(qǐng)?zhí)顚懹脩裘?;

if((!isset($error)) and checknick($_nick)) $error="該用戶名不存在";

if((!isset($error)) and (!$_password)) $error="請(qǐng)?zhí)顚懨艽a";

if(!isset($error))

{

bd3egZO5SFKr1Uosm8TfIA==

$p=checkpassword($id);

if($_password!=$p) $error="密碼不正確";

}

if(!isset($error))

{

$_SESSION["_userid"]="$id";

$_SESSION["_nick"]="$nick";

header("location:login_ok.php");

}

else

{

header("location:login_error.php?error=$error");

}

}

2 航班查詢和機(jī)票預(yù)訂的功能的實(shí)現(xiàn)

航班查詢功能是用出發(fā)城市、到達(dá)城市和出發(fā)日期三個(gè)條件的復(fù)合查詢,用戶輸入三個(gè)查詢條件后,點(diǎn)擊查詢按鈕開始查詢。為了方便用戶輸入日期,本系統(tǒng)加入了一個(gè)日歷控件,在鼠標(biāo)點(diǎn)擊出發(fā)日期后的文本框時(shí),控件會(huì)自動(dòng)出現(xiàn),用戶可以通過點(diǎn)擊控件上的按鈕選擇日期。

用戶查詢的結(jié)果會(huì)逐行顯示在航班選擇頁(yè)面上,直航的航班會(huì)優(yōu)先排列在表格考上的部分,中途需要中轉(zhuǎn)的航班在表格的備注欄中有標(biāo)注。在這個(gè)頁(yè)面上還可以點(diǎn)擊頁(yè)面中箭頭圖標(biāo)按起飛時(shí)間或者機(jī)票價(jià)格進(jìn)行排序,更加方便地幫助用戶選擇合適的航班出行。在每一個(gè)航班艙位對(duì)應(yīng)的價(jià)格之前都有一個(gè)單選按鈕,用戶可以通過這個(gè)單選按鈕來選中準(zhǔn)備預(yù)訂機(jī)票的航班,點(diǎn)擊下一步按鈕可繼續(xù)機(jī)票預(yù)訂。

用戶選擇航班和艙位后點(diǎn)擊下一步,進(jìn)入乘客信息頁(yè)面。在這個(gè)頁(yè)面,用戶需要填寫乘客姓名、證件號(hào)碼和聯(lián)系人信息、聯(lián)系電話。在頁(yè)面的上方還會(huì)顯示上一步所選航班的信息,供用戶確認(rèn)。

在訂票流程的最后一步,是訂單確認(rèn)。在訂單確認(rèn)頁(yè)面中,會(huì)顯示全部的航班信息、乘客信息和聯(lián)系人信息,用戶需再次認(rèn)真檢查,核實(shí)無誤后點(diǎn)擊確認(rèn)按鈕即可完成機(jī)票的預(yù)訂。

在整個(gè)航班查詢和機(jī)票預(yù)訂功能中,最核心的是查詢功能。查詢的實(shí)現(xiàn)過程涉及到多條件的查詢和輸出,和需要中轉(zhuǎn)航線的處理。多條件查詢的實(shí)現(xiàn)是使用一條查詢語(yǔ)句同時(shí)匹配數(shù)據(jù)表中的出發(fā)城市、到達(dá)城市、出發(fā)日期三個(gè)條件,并且還要滿足剩余票量不等于零。檢查剩余票量的工作完全是后臺(tái)完成的,不會(huì)在前臺(tái)頁(yè)面上有所體現(xiàn)。在數(shù)據(jù)的輸出時(shí),使用了循環(huán)控制,把查詢到的結(jié)果逐行輸出到表格中,設(shè)置循環(huán)終止條件為查詢結(jié)果為空。

如何查詢中途需要中轉(zhuǎn)的航線是航班查詢中的一個(gè)難點(diǎn)問題。為了解決這個(gè)問題,本系統(tǒng)設(shè)計(jì)使用了兩條查詢語(yǔ)句和嵌套的兩次循環(huán)來輸出查詢結(jié)果。即第一次先查詢出發(fā)城市和出發(fā)日期兩個(gè)條件滿足的航班,第二次將第一次查詢結(jié)果中的到達(dá)城市作為新的出發(fā)城市,和用戶需要的到達(dá)城市兩個(gè)條件再次進(jìn)行查詢,這樣的兩次循環(huán)之后就可以得到中途中轉(zhuǎn)一次的航線,然后再最后一次循環(huán)中,將兩條航班的信息顯示在表格的同一行中,并將機(jī)票的價(jià)格自動(dòng)計(jì)算出來。

航班的選擇是通過一個(gè)單選按鈕來實(shí)現(xiàn)的。要實(shí)現(xiàn)這部分的功能,這個(gè)單選按鈕必須能夠傳遞航班編號(hào)和用戶所選艙位兩種信息。為了實(shí)現(xiàn)這樣的功能,本系統(tǒng)設(shè)置單選按鈕的值為第一個(gè)字符是用來區(qū)別艙位,之后用六位來指明所選航班的編號(hào),如果有中轉(zhuǎn),最后六位為轉(zhuǎn)乘的航班編號(hào)。使用這樣的方法,把點(diǎn)選按鈕的值變成一個(gè)包含多個(gè)信息的字符型變量,在后續(xù)的頁(yè)面需要使用這些信息時(shí),再用相應(yīng)的函數(shù),把單選按鈕的值按位取出,得到相應(yīng)的信息。這樣就解決了使用一個(gè)單選按鈕完成多個(gè)信息的傳遞工作。

本部分還通過查詢語(yǔ)句設(shè)置不同的條件,實(shí)現(xiàn)了對(duì)起飛時(shí)間或機(jī)票價(jià)格的排序功能。

航班查詢和機(jī)票預(yù)訂功能的部分代碼如下:

$sql1="select * from flightinfo where _from='".$_SESSION[s_from]."'and (_date='".$_SESSION[s_date]."')and (_remain!=0) order by _takeoff ";

$result1=mysql_query($sql1);

while($row1=mysql_fetch_array($result1))

{

$sql2="select * from flightinfo where _from='".$row1[_to]."' and (_to='".$_SESSION[s_to]."')";

$result2=mysql_query($sql2);

while($row2=mysql_fetch_array($result2))

{

echo "".$row1[_flight]."
".$row2[_flight]."".$row1[_from]."
".$row2[_from]."".$row1[_to]."
".$row2[_to]."".$row1[_date]."".$row1[_takeoff]."
".$row2[_takeoff]."".$row1[_arrive]."
".$row2[_arrive]."".($row1[_priceA]+$row2[_priceA])."".($row1[_priceB]+$row2[_priceB])."".$row1[_company]."
".$row2[_company]."中轉(zhuǎn)";

}

}

3 管理員管理功能的實(shí)現(xiàn)

本系統(tǒng)設(shè)計(jì)管理員為系統(tǒng)指定,不能自行添加和修改。管理員可以使用系統(tǒng)指定的管理員編號(hào)和登錄密碼來登錄網(wǎng)上航空售票管理系統(tǒng)。管理員成功登錄后可以選擇查詢航班或者更新航班。在查詢時(shí),同樣需要輸入航班號(hào)和日期。系統(tǒng)會(huì)通過這兩個(gè)條件查詢出該次航班的所有已預(yù)訂的機(jī)票的詳細(xì)信息,包括聯(lián)系人信息和乘客信息,結(jié)果會(huì)逐行地顯示在表格中,同時(shí)也會(huì)在最下方顯示剩余的票量。管理員添加、修改和刪除航班信息的操作,需要分別對(duì)待,其中修改和刪除功能是需要先輸入航班號(hào)和日期查詢到指定的航班,然后進(jìn)行修改和刪除操作。無論是添加、修改還是刪除都需要管理員對(duì)信息的準(zhǔn)確性進(jìn)行認(rèn)真的檢查,核實(shí)無誤后才會(huì)寫入數(shù)據(jù)庫(kù)。值得一提的是,因?yàn)閯h除航班信息的操作可能會(huì)涉及到部分已經(jīng)訂票的乘客需要退票或者改簽的問題,所以本系統(tǒng)為了在刪除機(jī)票后不丟失原有的訂單信息,特別設(shè)計(jì)刪除航班信息時(shí)在數(shù)據(jù)庫(kù)中的一個(gè)表中保留一個(gè)備份,這樣管理員還是可以通過查詢數(shù)據(jù)庫(kù)找到之前刪除的航班信息。管理員添加、修改和刪除航班信息功能的實(shí)現(xiàn)效果。

4 數(shù)據(jù)庫(kù)的操作

本系統(tǒng)使用的是MySQL數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)連接的工作放在了一個(gè)指定的文件中,系統(tǒng)需要連接數(shù)據(jù)庫(kù)時(shí)只需要調(diào)用這個(gè)文件,就可以完成數(shù)據(jù)庫(kù)的連接。系統(tǒng)中最主要的對(duì)數(shù)據(jù)庫(kù)的更新操作是系統(tǒng)生成訂單時(shí)保存航班信息和用戶信息。這一部分功能被設(shè)計(jì)在一個(gè)中轉(zhuǎn)頁(yè)面中進(jìn)行,這個(gè)頁(yè)面延時(shí)3秒自動(dòng)跳轉(zhuǎn),實(shí)際上就是在進(jìn)行寫入數(shù)據(jù)庫(kù)的操作。它將之前所有填寫的數(shù)據(jù)和會(huì)話變量中的數(shù)據(jù)分別寫入相應(yīng)的數(shù)據(jù)表中,在這個(gè)過程中還需要將剛剛自動(dòng)生成的乘客編號(hào)再次取出保存在訂單信息表中。有關(guān)這個(gè)細(xì)節(jié)的實(shí)現(xiàn)方法,并沒有使用普通的查詢功能,而是使用了一個(gè)指定的函數(shù),將上一步中自動(dòng)生成的量臨時(shí)放入一個(gè)變量中保存,待下一步存入數(shù)據(jù)庫(kù)。生成訂單時(shí)寫入數(shù)據(jù)庫(kù)的操作的部分代碼如下:

include "mysql.inc.php";

session_start();

$sql1="insert into psgrinfo (_name,_idnum) values ('$_SESSION[name]','$_SESSION[idnum]')";

mysql_query($sql1);

$psgr_id=mysql_insert_id();

$price_sum=("$_SESSION[_price1]"+"$_SESSION[_price2]");

$sql2="insert into orderinfo values('','$_SESSION[flight_id1]','$_SESSION[flight_id2]','$_SESSION[_cabin]','$price_sum','$psgr_id','','','$_SESSION[contact]','$_SESSION[phone]',' $_SESSION[_userid]')";

mysql_query($sql2);

5 結(jié)語(yǔ)

在全國(guó)經(jīng)濟(jì)高速發(fā)展的大背景下,人們的生活和工作節(jié)奏越來越快,航空出行在市場(chǎng)中占的比例越來越大。市場(chǎng)越大,意味著競(jìng)爭(zhēng)越激烈,而售票環(huán)節(jié)的優(yōu)劣將直接決定公司的發(fā)展前景。另一方面,只有在這種激烈的競(jìng)爭(zhēng)環(huán)境下,才能更好地發(fā)揮網(wǎng)上航空售票系統(tǒng)的優(yōu)勢(shì),同時(shí)競(jìng)爭(zhēng)也能激勵(lì)這一系統(tǒng)的更好發(fā)展。

參考文獻(xiàn)

[1] 施家慶.基于PHP的SFF-MVC框架研究[D].北京:國(guó)防科學(xué)技術(shù)大學(xué),2009.

[2] 鄭靈翔.基于MVC模式的嵌入式Web設(shè)計(jì)方法[J].自然科學(xué),2009(3):96-97.

[3] 楊智宇.PHP5+MySQL動(dòng)態(tài)網(wǎng)站開發(fā)指南[M].北京:科學(xué)出版社,2009.

[4] 鄒天思,潘凱華.PHP網(wǎng)絡(luò)編程標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2009.

无为县| 凤庆县| 大丰市| 义乌市| 手机| 江永县| 平谷区| 普宁市| 焉耆| 安义县| 临夏市| 宣武区| 榆社县| 枞阳县| 屏南县| 安泽县| 永清县| 特克斯县| 寻甸| 精河县| 白沙| 白银市| 若羌县| 旺苍县| 射阳县| 石阡县| 鄂伦春自治旗| 莎车县| 沈丘县| 通化市| 资源县| 嘉义县| 大余县| 都江堰市| 阿荣旗| 商城县| 安宁市| 左贡县| 保靖县| 仁怀市| 西畴县|