zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于Java实现(PC)民航订票管理系统【100010185】

JAVA管理系统 实现 基于 PC
2023-09-11 14:17:50 时间

民航订票管理系统设计

一、需求分析:

问题描述:设计系统的简单描述

  • 民航订票管理系统实现了航班信息查询,客户定票,客户退票,航班信息管理,航线管理航班延误管理,已订票客户信息管理,会员信息管理等功能。

系统功能描述,对自己所负责的功能模块,可画出所设计模块的操作流程;并分析所需要存储的数据信息。

用户登录

1.航班信息查询功能

该功能模块可以根据出发地和目的地以及拟定的出发时间查询在该出发时间之后的所有相关航班信息。

该功能需要存储一定数量的航班信息,检索到的符合查询要求的航班信息将以表格的形式显示出来。

2.客户定票功能

每一次订票过程首先生成一个订单界面,可以根据客户的要求向订单中增加客户订票信息。

点击添加旅客按钮,生成客户订票管理界面,该界面分为两个选项卡面板(普通客户,经常客户)要求客户完善自己的订票信息。

2.1普通用户

普通用户即非会员客户订票,普通用户可以注册成为会员。当点击确定按钮时,会触发一个存储过程bookingTickets,该存储过程会先判断客户是否为会员,如果是则给予优惠折扣,即优惠折扣=(飞机票价-VIP等级0.1-VIP积分0.05)/飞机票价。如果不是则按照普通客户的标准,不打折。

2.2经常用户

经常用户即会员用户,可根据会员等级和积分获得一定的机票优惠。当点击确定按钮时,会触发一个存储过程bookingTickets,该存储过程会先判断客户是否为会员,如果是则给予优惠折扣,即优惠折扣=(飞机票价-VIP等级0.1-VIP积分0.05)/飞机票价。如果不是则按照普通客户的标准,不打折。

2.3会员注册

2.4支付

每添加一条客户订票信息,该系统就会实时计算出该条订单的合计金额,当客户订票完成时,点击支付按钮并支付相应的票价金额,则该订单完成,客户订票信息成功导入数据库表CustomersBTInformation中,并刷新航班信息表FlightInformation中机票库存信息。

3.客户退票功能

根据客户的身份证号查询该客户的所有订票信息,选中需要退票的订票信息,单击退票按钮完成退票,并刷新数据库表CustomersBTInformation中的客户订票信息以及并刷新航班信息表FlightInformation中机票库存信息。

管理员登录

1航班信息管理

添加

输入航班信息,向数据库表FlightInformation中插入航班信息

删除

根据航班号删除数据库表FlightInformation中相应航班信息

在这里插入图片描述

2.航线管理

添加航线

输入航线信息,向数据库表Airline中插入航线信息

删除航线

3.航班延误管理

在输入要修改的航班号,航线号,以及修改成的出发时间和到达时间。点击“修改”按钮,实现对该航班的延误修改即修改表FlightInformation并通过一个触发器同时修改表CustomersBTInformation中已订购该航班机票的客户订票信息。

4.已订票客户信息管理

实现对客户信息的增删改查功能

查询客户信息

添加客户信息

删除客户信息

5.会员管理

会员注册

会员删除

6.已注册用户信息

添加或删除已注册用户信息

安全性与完整性方面要求

  • 安全性要求

    确保数据库运行安全以及确保数据库中的数据安全。

  • 完整性要求

    设置合理的约束以防止用户向数据库中添加不合语义的数据,完善主外键的设置。使得数据库运行流畅。

  • 存储过程定义

    定义一个购票存储过程,实现在客户购票时判断客户是否是会员如果是的话就根据会员等级和会员积分给与客户相应的机票优惠,如果不是则不给予优惠。

    定义一个购票存储过程,如果客户购买了一张机票,则减少相应的机票库存并修改该班次的上座率。

    定义一个退票存储过程,如果一个客户退票,则修改相应的机票库存,并修改该班次的上座率。

  • 定义触发器

    定义一个删除航线触发器,实现如果删除一条航线,则将该航线下的所有航班信息删除。

    定义一个航班延误触发器,实现如果修改某航班的出发时间和到达时间,同时修改客户订票信息中相应航班的出发和到达时间,实现及时通知客户延误信息。

二、概念结构设计

画出系统整体的 E-R 模型;并对模型中所出现的实体及属性等信息加以说明。

实体及属性说明

订票信息(包含客户信息及航班信息)

客户信息(包含客户姓名,身份证号等基本资料)

航班信息(包含航线信息和航班基本信息)

航线信息(包含航空公司信息和航线基本信息)

三、逻辑结构设计

模式设计:按系统整体 E-R 模型,写出关系模式;并利用数据字典加以描述。(如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、有何约束条件等信息)

模式设计

关系模式

航空公司(航空公司名称,地址,联系方式,描述)

航线(航线编号,起点,终点,里程,航空公司名称)

航班(航线号,航班号,出发地,目的地,起飞时间,到达时间,机型,余票量,票价,航空公司)

客户信息(姓名,身份证号,性别,年龄,手机,家庭住址,会员等级,会员积分)

订票信息(姓名,身份证号,性别,年龄,手机,家庭住址,会员等级,会员积分,航线号,航班号,出发地,目的地,起飞时间,到达时间,折扣,票价)

数据字典

表名:Users

字段名是否主键字段类型字段长度是否允许为空备注
userNamevarchar20用户名
passwordvarchar20密码

表名:Administrators

字段名是否主键字段类型字段长度是否允许为空备注
userNamevarchar20用户名
passwordvarchar20密码

表名:AirCompany

字段名是否主键字段类型字段长度是否允许为空备注
namevarchar30航空公司名称
addressvarchar30航空公司地址
telvarchar20航空公司电话
descriptionvarchar100航空公司描述

表名:Airline

字段名是否主键字段类型字段长度是否允许为空备注
airlineNovarchar20航线编号
originvarchar20出发地
destinationvarchar20目的地
distancefloat航距
aircompanyvarchar30航空公司名称

表名:VIPCustomers

字段名是否主键字段类型字段长度是否允许为空备注
namevarchar20姓名
sexvarchar3性别
ageint年龄
idvarchar20身份证号
telvarchar20电话
addressvarchar50家庭地址
vipgradeintVIP等级
vipscoreintVIP积分

表名:BookTicketOrder

字段名是否主键字段类型字段长度是否允许为空备注
namevarchar20姓名
sexvarchar3性别
ageint年龄
idvarchar20身份证号
telvarchar20电话
addressvarchar30家庭地址
originvarchar20出发地
destinationvarchar20目的地
leaveTimeDateTime出发时间
arriveTimeDateTime到达时间
flightNovarchar20航班号
airlineNovarchar20航线号
seatTypevarchar10座位类型
airCompanyvarchar30航空公司名称
vipgradeintVIP等级
vipscoreintVIP积分
ticketPricefloat票价
discountfloat优惠折扣
actualPricefloat实际票价

表名:FlightInformation

字段名是否主键字段类型字段长度是否允许为空备注
flightNovarchar20航班号
airlineNovarchar20航线号
originvarchar10出发地
destinationvarchar10目的地
leaveTimeDateTime出发时间
arriveTimeDateTime到达时间
totalSeatsint总座位
firstPricefloat头等舱票价
businessPricefloat商务舱票价
economyPricefloat经济舱票价
firstRemainint头等舱剩余
businessRemainint商务舱剩余
economyRemainint经济舱剩余
occupancyfloat占座率
planeModelvarchar10机型
airCompanyvarchar30航空公司名称

表名:CustomersBTInformation

字段名是否主键字段类型字段长度是否允许为空备注
flightNovarchar20航班号
airlineNovarchar20航线号
originvarchar10出发地
destinationvarchar10目的地
leaveTimeDateTime出发时间
arriveTimeDateTime到达时间
totalSeatsint总座位
firstPricefloat头等舱票价
businessPricefloat商务舱票价
economyPricefloat经济舱票价
firstRemainint头等舱剩余
businessRemainint商务舱剩余
economyRemainint经济舱剩余
occupancyfloat占座率
planeModelvarchar10机型
airCompanyvarchar30航空公司名称

子模式设计

视图设计

创建一个视图用于存放根据身份证号码查询出来的客户信息。该视图的字段参照表CustomersBTInformation

四、数据库设计实现

数据库的创建

T-SQL 语句:create database CivilAviationTicketSystem

数据表的创建

T-SQL语句 :

/*用户信息*/
create table Users(
userName varchar(20) not null,
password varchar(20) not null)

/*管理员信息*/
create table Administrators(
userName varchar(20) not null,
password varchar(20) not null)
/*航空公司信息*/
create table AirCompany(name varchar(30) primary key not null,
address varchar(30) not null,
tel varchar(20) not null,
description varchar(100) not null)
/*航线信息*/
create table Airline(airlineNo varchar(20) primary key not null,


origin varchar(20) not null,
destination varchar(20) not null,
distance float not null,
aircompany varchar(30) not null)

alter table Airline add constraint airlineNo_check check(len(airlineNo)>0 and len(airlineNo)<20)

/*VIP客户信息*/
create table VIPCustomers(name varchar(20) not null,
sex varchar(3) not null,
age int,
id varchar(20) not null primary key,
tel varchar(20) not null,
address varchar(50) not null,
vipgrade int,
vipscore int)

alter table VIPCustomers add constraint vipname_check check(len(name)>=1)
alter table VIPCustomers add constraint vipage_check check(age>=0)
alter table VIPCustomers add constraint vipid_check check(len(id)>=15 and len(id)<=18)
alter table VIPCustomers add constraint viptel_check check(len(tel)>=3 and len(tel)<=15)
alter table VIPCustomers add constraint vipgrade_check check(vipgrade>=0)
alter table VIPCustomers add constraint vipscore_check check(vipscore>=0)
/*订单信息*/
create table BookTicketOrder(name varchar(20) not null,
sex varchar(3) not null,
age int,
id varchar(20) not null,
tel varchar(20) not null,
address varchar(30) not null,
origin varchar(20) not null,
destination varchar(20) not null,
leaveTime DateTime not null,
arriveTime DateTime not null,
flightNo varchar(20) not null,
airlineNo varchar(20) not null,
seatType varchar(10) not null,

airCompany varchar(30) not null,
vipgrade int,
vipscore int,
ticketPrice float,             
discount float,
actualPrice float)

alter table BookTicketOrder add constraint listname_check check(len(name)>=1)
alter table BookTicketOrder add constraint listage_check check(age>=0)
alter table BookTicketOrder add constraint listid_check check(len(id)>=15 and len(id)<=18)
alter table BookTicketOrder add constraint listtel_check check(len(tel)>=3 and len(tel)<=15)
alter table BookTicketOrder add constraint listvipgrade_check check(vipgrade>=0)
alter table BookTicketOrder add constraint listvipscore_check check(vipscore>=0)
alter table BookTicketOrder add constraint listticketPrice_check check(ticketPrice>=0)
alter table BookTicketOrder add constraint listdiscount_check check(discount>=0 and discount<=1)
alter table BookTicketOrder add constraint listactualPrice_check check(actualPrice>=0 and actualPrice<=ticketPrice)
/*航班信息*/
create table FlightInformation(flightNo varchar(20) primary key not null,
airlineNo varchar(20)  not null,
origin varchar(10) not null,
destination varchar(10) not null,
leaveTime DateTime not null,
arriveTime DateTime not null,
totalSeats int not null ,
firstPrice float not null ,
businessPrice float not null ,
economyPrice float not null ,
firstRemain int not null ,
businessRemain int not null,
economyRemain int not null ,
occupancy float not null ,
planeModel varchar(10) not null,
airCompany varchar(30) not null)
alter table FlightInformation add constraint totalSeats_check check(totalSeats>0)
alter table FlightInformation drop constraint totalSeats_check
alter table FlightInformation add constraint firstPrice_check check(firstPrice>=0)

alter table FlightInformation add constraint businessPrice_check check(businessPrice>=0)
alter table FlightInformation add constraint economyPrice_check check(economyPrice>=0)
alter table FlightInformation add constraint firstRemain_check check(firstRemain>=0 and firstRemain<= totalSeats)
alter table FlightInformation add constraint businessRemain_check check(businessRemain>=0 and businessRemain<= totalSeats)
alter table FlightInformation add constraint economyRemain_check check(economyRemain>=0 and economyRemain<= totalSeats)
alter table FlightInformation add constraint occupancy_check check(occupancy>=0 and occupancy<= 1)

/*已订票客户信息*/
create table CustomersBTInformation(name varchar(20) not null,
sex varchar(3) not null,
age int,
id varchar(20) not null,
tel varchar(20) not null,
address varchar(30) not null,
origin varchar(20) not null,
destination varchar(20) not null,
leaveTime datetime not null,
arriveTime datetime not null,
flightNo varchar(20) not null,
airlineNo varchar(20) not null,
seatType varchar(10) not null,
airCompany varchar(30) not null,
vipgrade int,
vipscore int,
ticketPrice float,
discount float,
actualPrice float)
alter table CustomersBTInformation add primary key(id,flightNo)  /*将身份证号和航班号设为主键
alter table CustomersBTInformation add constraint BTname_check check(len(name)>=1)
alter table CustomersBTInformation add constraint BTage_check check(age>=0)
alter table CustomersBTInformation add constraint BTid_check check(len(id)>=15 and len(id)<=18)
alter table CustomersBTInformation add constraint BTtel_check check(len(tel)>=3 and len(tel)<=15)
alter table CustomersBTInformation add constraint BTvipgrade_check check(vipgrade>=0)

alter table CustomersBTInformation add constraint BTvipscore_check check(vipscore>=0)
alter table CustomersBTInformation add constraint BTticketPrice_check check(ticketPrice>=0)
alter table CustomersBTInformation add constraint BTdiscount_check check(discount>=0 and discount<= 1)
alter table CustomersBTInformation add constraint BTactualPrice_check check(actualPrice>=0 and actualPrice<= ticketPrice)

视图的创建

T-SQL语句:

if exists(select name from sys.views where name='OneCustomerBTInformation_view') 
drop view OneCustomerBTInformation_view
create view OneCustomerBTInformation_view 
as 
select * from CustomersBTInformation where id='"+id+"'

存储过程的定义实现

T-SQL语句:

测试结果:

测试结果:

测试结果:

触发器的定义实现

测试结果:

自行设计模块中所涉及的操作语句

插入数据操作

客户订票

该界面创建一个订单,将获取客户基本信息及订票信息将信息插入订单表BookTicketOrder中

点击支付按钮,将客户订票信息插入表CustomersBTInformation中,同时删除表BookTiCketOrder中的客户订票信息。

注册会员

完善会员信息,并点击“注册”按钮将会员信息添加到表VIPCustomers中

注册登录用户

完善用户信息,点击“确定”按钮,将用户信息添加到表Users中

添加航班信息

通过该界面管理员可以添加,删除航班信息,航线,以及修改某航班的信息。

完善航班信息并将航班,点击“保存”按钮,并将相应的航班信息添加到表FlightInformation中

完善航线信息,点击“添加航线”,将航线信息添加到表Airline中

删除数据操作

客户退票

用户通过身份证号查找客户订票信息,选中订票信息,点击“删除”按钮之后就将客户订票信息从CustomersBTInformation表中删除。实现退票功能。

删除航班信息

选择要删除的航班信息,点击“删除”按钮,将选中的航班信息从表FlightInformation中删除。

删除航线信息

选中要删除的航线,点击“删除航线”按钮,将选中的航线从Airline表中删除

删除已注册用户信息

删除会员信息

选中要删除的会员信息,点击删除,将会员信息从表VIPCustomers中删除。

删除已订票客户信息

选中要删除的客户订票信息,点击删除,将客户订票信息从表CustomersBTInformation中删除。

修改数据操作

输入要修改的航线号及航班号,输入修改后的航班出发时间和到达时间,点击“修改”按钮,

将修改FlightInFormation中的航班信息

五、系统详细设计及实现

登录模块

选中身份(用户/管理员),输入用户名及密码,点击“登录”按钮。

用户注册模块

输入用户名和密码,点击“确定”按钮

航班信息查询模块

选中出发地和目的地,输入出发日期,查询所有大于该日期的相关航线航班信息

客户订票模块

点击“添加旅客”按钮,出现一个“客户订票管理”界面,完善客户订票信息,并点击“确定”按钮,这里使用到一个存储过程用于判断该客户是否是会员,如果是,就机票打折,如果不是则不打折。

将客户订票信息提交到订单界面。用户可以一次添加多个客户订票信息。点击“支付”按钮完成购票。将客户购票信息存入表CustomersBTInformation中,CustomersBTInformation表使用了两个主键即:flightNo和id,已实现客户可以购买多张不同航班次的机票。

并使用一个存储过程用来更改表FlightInformation中的机票库存和上座率。

客户退票模块

先输入身份证号,查询该身份客户的所有订票信息。选中要删除的客户信息,点击“删除”按钮,实现退票功能,并使用一个存储过程用来更改表FlightInformation中的机票库存和上座率。

航班信息管理模块

添加/删除航班信息

添加航班信息:完善航班信息,点击“保存”按钮实现航班信息的添加

删除航班信息:选中要删除的航班信息,点击“删除”按钮

添加/删除航线

添加航线:完善航线信息,点击“添加航线”按钮。

删除航线:选中要删除的航线,点击“删除航线”按钮。删除航线操作会激发一个触发器同时删除表FlightInformatin中该航线的所有航班

航班延误模块

输入要修改的航班的航班号,航线号,出发时间,到达时间,点击“修改”完成航班延误修改。

已订票客户信息模块

添加客户

删除客户

查询客户

根据输入的身份证号码查询该身份客户的所有订票信息。

会员信息模块

添加会员信息

删除会员信息

已注册用户信息模块

添加用户

删除用户

♻️ 资源

在这里插入图片描述

大小: 2.29MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87347605