基于php和mysql实现的简易民航订票系统实验

基于PHP和MySQL实现的民航订票系统实验

实验内容

实验简述:
民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有查询航班路线和剩余票数,以及网上订票等功能。客户又可以分为两类:一类是普通客户,对于普通客户只有普通的查询和订票功能,没有相应的机票优惠;另一类是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。

实验要求:
(1)根据需求建立ER模型
(2)ER模型转化为关系模式
(3)建立相应的数据库
(4)用一种语言编写前端(这里采用PHP语言)

实验步骤

根据需求建立ER模型:
ER图
ER模型转化为关系模式:
在这里插入图片描述
建立相应的数据库:
在这里插入图片描述
源代码:

//建航空公司表
create table Company(
Cid int primary key,
Cname varchar(20),
Caddr varchar(40),
Ctel varchar(20),
password varchar(20)
);
//建航线表
create table air_Route(
Rid int primary key,
start_place varchar(20),
end_place varchar(20),
distance float,
total_time float
);
//建飞机表
create table Plane(
Pid int primary key,
Ptype varchar(20),
seats int
);
//建机场表
create table Airport(
Aid int primary key,
Aname varchar(20),
Aaddr varchar(40),
Atel varchar(20),
password varchar(20)
);
//建客户表
create table Customer(
Cus_id int primary key,
Cus_name varchar(20),
Cus_tel varchar(20),
is_vip tinyint,
integration int,
password varchar(20)
);
//建航班表
create table Flight(
Fid int primary key,
Aid int,
Rid int,
Pid int,
start_time datetime,
last_ticket int,
price float,
delay int,
foreign key(Aid) references Airport(Aid),
foreign key(Rid) references air_Route(Rid),
foreign key(Pid) references Plane(Pid)
);
//建订单表
create table Order_ticket(
Oid int primary key, //自动增加
Cus_id int,
Fid int,
pay float,
foreign key(Cus_id) references Customer(Cus_id),
foreign key(Fid) references Flight(Fid)
);

前端设计流程图:
在这里插入图片描述

前端部分代码展示:

// order_manage.php
<?php
session_start();
if(isset($_GET['id'])){
	$Cus_id=$_GET['id'];
    $_SESSION['Cus_id']=$Cus_id;
}
$Cus_id=$_SESSION['Cus_id'];
require "conn.php";
$sql_1="select * from order_ticket where Cus_id=$Cus_id";
$result_1=$conn->query($sql_1);
?>
<a href="back_to_customer.php">返回</a>
<h2>订单信息:</h2>
<a href="add_order.php">订票</a>
<?php
while($row=$result_1->fetch_assoc()){
?>
<?php
$Fid=$row['Fid'];
$sql_2="select * from flight where Fid=$Fid";
$result_2=$conn->query($sql_2);
while ($row_1=$result_2->fetch_assoc()) {
	if($row_1['delay']==1){
		$_SESSION['is_delay']='是';
	}
	else $_SESSION['is_delay']='否';
?>
<h4>航班信息</h4>
<!-- <p>机场编号:<?php echo $row_1['Aid'];?> | 航线编号:<?php echo $row_1['Rid'];?> | 飞机编号:<?php echo $row_1['Pid'];?></p> -->
<?php
$Aid=$row_1['Aid'];
$sql_3="select * from airport where Aid=$Aid";
$result_3=$conn->query($sql_3);
while ($row2=$result_3->fetch_assoc()) {
?>
<p>机场信息 》 名称:<?php echo $row2['Aname'];?> | 地址:<?php echo $row2['Aaddr'];?> | 联系方式:<?php echo $row2['Atel'];?></p>
<?php
}
$Pid=$row_1['Pid'];
$sql_4="select * from plane where Pid=$Pid";
$result_4=$conn->query($sql_4);
while ($row3=$result_4->fetch_assoc()) {
?>
<p>飞机信息  》 <?php echo $row3['Ptype'];?></p>
<?php
}
$Rid=$row_1['Rid'];
$sql_4="select * from air_route where Rid=$Rid";
$result_4=$conn->query($sql_4);
while ($row3=$result_4->fetch_assoc()) {
?>
<p>航线信息 》 起点:<?php echo $row3['start_place'];?> | 终点:<?php echo $row3['end_place'];?> | 里程:<?php echo $row3['distance'];?> | 时长:<?php echo $row3['total_time'];?>h</p>
<?php
}
?>
<p>起飞时间:<?php echo $row_1['start_time'];?> | 余票:<?php echo $row_1['last_ticket'];?> | 票价:<?php echo $row_1['price'];?> | 是否延迟:<?php echo $_SESSION['is_delay'];?></p>
<p>实际票价:<?php echo $row['pay'];?></p>
<?php
if($_SESSION['is_delay']=='是'){
	echo "请注意:您的航班由于某种因素出现延机,请关注新的航班信息!";
}
?>
<p><a href="delete_order.php? id=<?php echo $row['Oid'];?>">退票</p> 
<?php 
}
}
?>

由于涉及的的php文件较多,所以只展示一个php文件。

结果展示

首页:
在这里插入图片描述

航空公司登录页面:
在这里插入图片描述

航空公司注册页面:
在这里插入图片描述

机场和用户的登录、注册页面类似。

航空公司首页:
在这里插入图片描述

航线管理:
在这里插入图片描述

航线修改:
在这里插入图片描述

航线删除后(如果该航线已经被安排为航班且有人购买票则不能删除,作为外键):
在这里插入图片描述

飞机管理页面:
在这里插入图片描述

删除飞机:
在这里插入图片描述

机场首页:
在这里插入图片描述

航班管理首页(增加的航班必须要建立在航线和飞机存在的情况下,否则失败):
在这里插入图片描述

延机:
在这里插入图片描述

延机之前,用户订单界面:
在这里插入图片描述

延机之后机场航班管理界面:
在这里插入图片描述

延机之后用户订单显示延机提示信息:
在这里插入图片描述

普通用户订单界面:
在这里插入图片描述

退票后界面:

在这里插入图片描述

Vip用户界面(订票后):
在这里插入图片描述

Vip客户订单界面(满足积分换优惠的条件后价格更便宜):
在这里插入图片描述

退票之后vip客户界面:
请添加图片描述

后续

  • 采用原生框架,样式较为简洁,但基本功能已经全部实现,交流请联系 QQ:1557575204
  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值