基于php网上航空购票系统的实现
2013-01-01张东
摘 要:随着计算机和互联网开始走进家庭,网上航空售票系统也展现出巨大的优势。在家中操作电脑,就可以查到全部的航班信息,轻点鼠标就可以完成订票付款。本文采用了PHP语言和MySQL数据库相结合,配合前台HTML语言的支持,共同实现Web页面的显示和后台数据的查询和更新。
关键词:计算机 互联网 购票系统 PHP MySQL HTML
中图分类号:TP311.52 文献标识码:A 文章编号:1672-3791(2013)01(c)-0025-02
1 用户注册登录功能的实现
在用户注册页面中,用户需要在信息表中输入用户名、密码、确认密码和电子邮箱地址四项内容。用户的注册页面使用表单变量来处理用户输入的信息,用户提交数据后,系统会验证用户名是否符合要求、两次输入的密码是否一致、电子邮箱地址是否正确,如果输入有误将会自动转到注册出错页面,并会显示相应的错误信息。在系统检查输入的信息无误后即可注册成功,注册成功后会有提示页面,并设置为延时3秒后跳转到查询页面,这时为已登录状态,不需要用户再进入用户登录页面进行登录。
在用户登录部分,需要用户填写用户名和密码,系统根据输入的用户名在数据库中的login数据表查找到密码,然后进行比对,如果密码正确,用户就能登录成功。在登录成功后,系统将用户的编号和用户名保存在session变量中,以便之后的每一个页面都可以调用。登录成功后,也会自动跳转到航班查询页面,方便用户立即开始航班的查询和预定。
实现用户登录功能的部分代码:
if($submit)
{
if(!$_nick) $error="请填写用户名";
if((!isset($error)) and checknick($_nick)) $error="该用户名不存在";
if((!isset($error)) and (!$_password)) $error="请填写密码";
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 航班查询和机票预订的功能的实现
航班查询功能是用出发城市、到达城市和出发日期三个条件的复合查询,用户输入三个查询条件后,点击查询按钮开始查询。为了方便用户输入日期,本系统加入了一个日历控件,在鼠标点击出发日期后的文本框时,控件会自动出现,用户可以通过点击控件上的按钮选择日期。
用户查询的结果会逐行显示在航班选择页面上,直航的航班会优先排列在表格考上的部分,中途需要中转的航班在表格的备注栏中有标注。在这个页面上还可以点击页面中箭头图标按起飞时间或者机票价格进行排序,更加方便地帮助用户选择合适的航班出行。在每一个航班舱位对应的价格之前都有一个单选按钮,用户可以通过这个单选按钮来选中准备预订机票的航班,点击下一步按钮可继续机票预订。
用户选择航班和舱位后点击下一步,进入乘客信息页面。在这个页面,用户需要填写乘客姓名、证件号码和联系人信息、联系电话。在页面的上方还会显示上一步所选航班的信息,供用户确认。
在订票流程的最后一步,是订单确认。在订单确认页面中,会显示全部的航班信息、乘客信息和联系人信息,用户需再次认真检查,核实无误后点击确认按钮即可完成机票的预订。
在整个航班查询和机票预订功能中,最核心的是查询功能。查询的实现过程涉及到多条件的查询和输出,和需要中转航线的处理。多条件查询的实现是使用一条查询语句同时匹配数据表中的出发城市、到达城市、出发日期三个条件,并且还要满足剩余票量不等于零。检查剩余票量的工作完全是后台完成的,不会在前台页面上有所体现。在数据的输出时,使用了循环控制,把查询到的结果逐行输出到表格中,设置循环终止条件为查询结果为空。
如何查询中途需要中转的航线是航班查询中的一个难点问题。为了解决这个问题,本系统设计使用了两条查询语句和嵌套的两次循环来输出查询结果。即第一次先查询出发城市和出发日期两个条件满足的航班,第二次将第一次查询结果中的到达城市作为新的出发城市,和用户需要的到达城市两个条件再次进行查询,这样的两次循环之后就可以得到中途中转一次的航线,然后再最后一次循环中,将两条航班的信息显示在表格的同一行中,并将机票的价格自动计算出来。
航班的选择是通过一个单选按钮来实现的。要实现这部分的功能,这个单选按钮必须能够传递航班编号和用户所选舱位两种信息。为了实现这样的功能,本系统设置单选按钮的值为第一个字符是用来区别舱位,之后用六位来指明所选航班的编号,如果有中转,最后六位为转乘的航班编号。使用这样的方法,把点选按钮的值变成一个包含多个信息的字符型变量,在后续的页面需要使用这些信息时,再用相应的函数,把单选按钮的值按位取出,得到相应的信息。这样就解决了使用一个单选按钮完成多个信息的传递工作。
本部分还通过查询语句设置不同的条件,实现了对起飞时间或机票价格的排序功能。
航班查询和机票预订功能的部分代码如下:
$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 "
".$row2[_flight]."
".$row2[_from]."
".$row2[_to]."
".$row2[_takeoff]."
".$row2[_arrive]."
".$row2[_company]."
}
}
3 管理员管理功能的实现
本系统设计管理员为系统指定,不能自行添加和修改。管理员可以使用系统指定的管理员编号和登录密码来登录网上航空售票管理系统。管理员成功登录后可以选择查询航班或者更新航班。在查询时,同样需要输入航班号和日期。系统会通过这两个条件查询出该次航班的所有已预订的机票的详细信息,包括联系人信息和乘客信息,结果会逐行地显示在表格中,同时也会在最下方显示剩余的票量。管理员添加、修改和删除航班信息的操作,需要分别对待,其中修改和删除功能是需要先输入航班号和日期查询到指定的航班,然后进行修改和删除操作。无论是添加、修改还是删除都需要管理员对信息的准确性进行认真的检查,核实无误后才会写入数据库。值得一提的是,因为删除航班信息的操作可能会涉及到部分已经订票的乘客需要退票或者改签的问题,所以本系统为了在删除机票后不丢失原有的订单信息,特别设计删除航班信息时在数据库中的一个表中保留一个备份,这样管理员还是可以通过查询数据库找到之前删除的航班信息。管理员添加、修改和删除航班信息功能的实现效果。
4 数据库的操作
本系统使用的是MySQL数据库,将数据库连接的工作放在了一个指定的文件中,系统需要连接数据库时只需要调用这个文件,就可以完成数据库的连接。系统中最主要的对数据库的更新操作是系统生成订单时保存航班信息和用户信息。这一部分功能被设计在一个中转页面中进行,这个页面延时3秒自动跳转,实际上就是在进行写入数据库的操作。它将之前所有填写的数据和会话变量中的数据分别写入相应的数据表中,在这个过程中还需要将刚刚自动生成的乘客编号再次取出保存在订单信息表中。有关这个细节的实现方法,并没有使用普通的查询功能,而是使用了一个指定的函数,将上一步中自动生成的量临时放入一个变量中保存,待下一步存入数据库。生成订单时写入数据库的操作的部分代码如下:
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 结语
在全国经济高速发展的大背景下,人们的生活和工作节奏越来越快,航空出行在市场中占的比例越来越大。市场越大,意味着竞争越激烈,而售票环节的优劣将直接决定公司的发展前景。另一方面,只有在这种激烈的竞争环境下,才能更好地发挥网上航空售票系统的优势,同时竞争也能激励这一系统的更好发展。
参考文献
[1] 施家庆.基于PHP的SFF-MVC框架研究[D].北京:国防科学技术大学,2009.
[2] 郑灵翔.基于MVC模式的嵌入式Web设计方法[J].自然科学,2009(3):96-97.
[3] 杨智宇.PHP5+MySQL动态网站开发指南[M].北京:科学出版社,2009.
[4] 邹天思,潘凯华.PHP网络编程标准教程[M].北京:人民邮电出版社,2009.