实验内容
实验简述:
民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有查询航班路线和剩余票数,以及网上订票等功能。客户又可以分为两类:一类是普通客户,对于普通客户只有普通的查询和订票功能,没有相应的机票优惠;另一类是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。
实验要求:
(1)根据需求建立ER模型
(2)ER模型转化为关系模式
(3)建立相应的数据库
(4)用一种语言编写前端(这里采用PHP语言)
实验步骤
根据需求建立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