民航订票管理系统
独乐乐不如众乐乐!!!
这个是一个数据库课设,用的技术是java,很原始,适合大一大二的小白同学。
大家抄的时候记得更改,每年期末就一大堆关注!!!!
而且别只关注呀,多点点赞,也可以评论和我交流呀!!!
项目地址:https://gitee.com/gao_x/air-ticket
文章目录
1.要求
1.1.基本要求
民航订票系统主要分为机场、航空公司和客户三方的服务。
- 航空公司提供航线和飞机的资料;
- 机场则对在本机场起飞和降落的航班和机票进行管理;
- 客户能得到的服务应该有查询路线和剩余票数,以及网上订票等功能;
- 客户可以分为两类:一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠;另一类是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策;
- 机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息;
1.2.拓展要求
- 用户可以对系统进行反馈留言,促进开发者改良系统
- 可以在前台添加广告,是前台展示功能更加丰富
- 后台具有信息功能,可以生成对可视化图标和表格展示
- 管理员除最高管理员之外,其他人不可访问更改管理员
2.需求分析
2.1.系统功能分析
- 后台航班信息管理:主要是指添加航班信息,删除航班信息,查询航班信息和航班信息详细情况查看等。
- 后台订单信息管理:后台订单信息管理主要包括订单列表,查询订单信息,订单信息的删除等
- 后台用户信息管理:主要指注册用户的展示与按条件查询注册用户。
- 后台广播信息管理:主要指添加广播信息,删除广播信息等。
- 后台广告信息管理:主要指添加广告信息,删除广告信息等。
- 后台管理员管理:主要指最高管理员可以进行授权管理员和删除管理员
- 后台信息统计:统计订单量,用户量,及一些其他信息。
- 前台登录与注册管理:包括前台系统用户的注册于登录。
- 前台首页信息展示:主要是指航班信息展示、航班信息查询、航班信息详情、登录用户信息展示、留言板和 个人信息详情与修改等。
- 前台订单页面:主要是订单内容的填写和订单详情。
- 前台订单支付:订单支付成功界面。
2.2.系统用列图
2.2.1前台功能
2.2.2后台功能
2.3.数据流图
2.4.数据字典
2.4.1.数据存储
- 用户数据表
数据存储 | 用户数据表 |
---|---|
输入 | 用户数据 |
输出 | 账户信息 |
说明 | 记录用户数据 |
- 会员数据表
数据存储 | 会员数据表 |
---|---|
输入 | 会员信息(姓名,身份证号) |
输出 | 订单积分优惠 |
说明 | 记录会员数据,计算积分优惠 |
- 订单数据表
数据存储 | 订单数据表 |
---|---|
输入 | 订单信息 |
输出 | 管理界面 |
说明 | 记录订单数据 |
- 航班数据表
数据存储 | 航班数据表 |
---|---|
输入 | 管理员添加 |
输出 | 用户界面 |
说明 | 记录航班数据 |
- 留言数据表
数据存储 | 留言数据表 |
---|---|
输入 | 用户留言信息 |
输出 | 管理员界面 |
说明 | 记录留言反馈信息 |
- 广播数据表
数据存储 | 广播数据表 |
---|---|
输入 | 管理员添加 |
输出 | 用户界面 |
说明 | 记录广播数据 |
- 广告数据表
数据存储 | 广告数据表 |
---|---|
输入 | 管理员添加 |
输出 | 用户界面 |
说明 | 记录广告数据 |
2.4.2.处理过程
用户登录
功能 | 用户登录 |
---|---|
输入 | 用户信息 |
输出 | 登陆成功,登陆失败 |
- 用户注册
功能 | 用户注册 |
---|---|
输入 | 用户名密码 |
输出 | 成功,失败,用户已存在 |
- 会员注册
功能 | 会员注册 |
---|---|
输入 | 会员信息 |
输出 | 成功,失败,用户已存在 |
- 订单生产
功能 | 机票预订 |
---|---|
输入 | 订单信息 |
输出 | 预定成功或失败 |
- 留言生产
功能 | 留言生产 |
---|---|
输入 | 留言内容 |
输出 | 留言成功或失败 |
- 广播信息添加
功能 | 广播信息添加 |
---|---|
输入 | 广播信息 |
输出 | 添加成功或失败 |
其他 | 如广播信息为航班延误则修改航班 |
- 广告信息添加
功能 | 广告信息添加 |
---|---|
输入 | 广告信息 |
输出 | 添加成功或失败 |
- 航班信息添加
功能 | 航班信息添加 |
---|---|
输入 | 航班信息 |
输出 | 添加成功与失败 |
- 管理员登陆
功能 | 管理员登录 |
---|---|
输入 | 账号密码 |
输出 | 登陆成功与登录失败 |
- 管理员添加
功能 | 管理员添加 |
---|---|
输入 | 账号,密码 |
输出 | 添加成功或失败 |
3.数据库设计
3.1概念结构设计
3.2.逻辑结构设计
管理员(admin):
用户名(user),密码(pwd)
留言评论(discuss):
留言id(id),日期(Time),留言用户(userName),内容(message)
航班(Filght):
航班id(flightId),航班号(flightNumber),航班起点(flightStart),航班终点(flightEnd),始发机场(flightStartAir),到达机场(flightEndAir),起飞时间(flightStartTime),到达时间(flightEndTime),头等舱价格(flightHighPrice),头等舱座位数(flightHighNumber),商务舱价格(flightMidPrice),商务舱座位数(flightMidNumber),经济舱价格(flightLowPrice),经济舱座位数(filghtLowNumber),延误(delay)
订单(order):
订单id(orderId),订单名称(orderName),下单用户(orderUser),航班id(flightId),乘客姓名(personName),订单日期(orderDate),仓别(Grade),乘客身份证号(persionid),订单金额(orderMoney1),实付金额(oederMoney2),联系人(contcatName),联系人电话(contactPhone)
用户(user):
用户名(userName),用户密码(userPwd)
会员(person)
用户名(username),会员姓名(personName),会员身份证号(personId),会员积分(userScore)
广播(radio)
广播id(radionId),广播描述(radiodescribe)
广告实体(advert):
广告id(advertId),广告描述(advertDescribe),广告url(url),广告图片(picture)
3.3.数据表设计
管理员:
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
user | varchar | 16 | 0 | 否 | 账号 |
pwd | varchar | 32 | 0 | 否 | 密码 |
留言评论:
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
id | int | 11 | 0 | 否 | 留言id |
time | date | 0 | 0 | 否 | 日期 |
userName | varchar | 32 | 0 | 否 | 留言用户 |
message | text | 0- | 0 | 否 | 内容 |
航班实体:
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
flightId | varchar | 225 | 0 | 否 | 航班id |
flightNumber | varchar | 225 | 0 | 否 | 航班号 |
flightStart | varchar | 225 | 0 | 否 | 航班起点 |
flightEnd | varchar | 225 | 0 | 否 | 航班终点 |
flightStartAir | varchar | 225 | 0 | 否 | 航班始发机场 |
flightEndAir | varchar | 225 | 0 | 否 | 航班终点机场 |
flightStartTime | datatime | 0 | 0 | 否 | 航班始发时间 |
flightEndTime | datatime | 0- | 0 | 否 | 航班那到达时间 |
flightHighPrice | double | 10 | 2 | 是 | 航班头等舱价格 |
flightHighNumber | int | 11 | 0 | 是 | 航班头等舱 座位数 |
flightMidPrice | double | 10 | 2 | 是 | 航班商务舱价格 |
flightMidNumber | int | 11- | 0 | 是 | 航班商务舱座位数 |
flightLowPrice | double | 10 | 2 | 是 | 航班经济舱价格 |
filghtLowNumber | int | 11 | 0 | 是 | 航班经济舱座位数 |
delay | bool | 是否延误 |
订单实体
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
orderId | varchar | 225 | 0 | 否 | 订单id |
orderName | varchar | 225 | 0 | 否 | 订单id |
orderUser | varchar | 16 | 0 | 否 | 下单用户 |
flightId | varchar | 225 | 0 | 否 | 航班号 |
personName | varchar | 16 | 0 | 否 | 乘客姓名 |
orderDate | date | 0 | 0 | 否 | 下单时间 |
Grade | varchar | 3 | 0 | 否 | 舱别 |
persionid | varchar | 225 | 0 | 否 | 乘客身份证号 |
orderMoney1 | double | 20 | 2 | 否 | 订单金额 |
orderMoney2 | double | 20 | 2 | 否 | 实付金额 |
contcatName | varchar | 16 | 0 | 否 | 联系人姓名 |
contactPhone | varchar | 11 | 0 | 否 | 联系人电话 |
用户实体
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
userName | varchar | 16 | 0 | 否 | 账号 |
userPwd | varchar | 225 | 0 | 否 | 密码 |
会员实体
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
userName | varchar | 16 | 0 | 否 | 账号 |
personName | varchar | 16 | 0 | 否 | 会员姓名 |
personId | varchar | 225 | 0 | 否 | 会员身份证号 |
personScore | int | 11 | 0 | 否 | 会员积分 |
广播实体
广播id(radionId),广播描述(radiodescribe)
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
radionId | varchar | 225 | 0 | 否 | 广播id |
radiodescribe | varchar | 225 | 0 | 否 | 广播描述 |
广告
列名 | 类型 | 长度 | 小数点 | 是否为空 | 说明 |
---|---|---|---|---|---|
advertId | varchar | 225 | 0 | 否 | 广告id |
advertDescribe | varchar | 225 | 0 | 否 | 广告描述 |
url | varchar | 225 | 0 | 否 | 广告链接 |
picture | varchar | 225 | 0 | 否 | 图片 |
3.4.创建表代码
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- admin
CREATE TABLE `admin` (
`user` varchar(16) CHARACTER NOT NULL COMMENT '管理员用户名',
`pwd` varchar(32) CHARACTER NOT NULL COMMENT '管理员密码',
PRIMARY KEY (`user`)
) ;
-- discuss
CREATE TABLE `discuss` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`time` date NOT NULL,
`userName` varchar(32) CHARACTER NOT NULL,
`message` text CHARACTER NOT NULL,
PRIMARY KEY (`id`) ,
INDEX `userName`(`userName`)
) ;
-- flight
CREATE TABLE `flight` (
`flightId` varchar(255) CHARACTER NOT NULL COMMENT '航班ID',
`flightNumber` varchar(255) CHARACTER NOT NULL COMMENT '航班号',
`flightStart` varchar(255) CHARACTER NOT NULL COMMENT '航班起点',
`flightEnd` varchar(255) CHARACTER NOT NULL COMMENT '航班终点',
`flightStartAir` varchar(255) CHARACTER NOT NULL COMMENT '航班始发机场',
`flightEndAir` varchar(255) CHARACTER NOT NULL COMMENT '航班到达机场',
`flightStartTime` datetime(0) NOT NULL COMMENT '航班起飞时间',
`flightEndTime` datetime(0) NOT NULL COMMENT '航班到达时间',
`flightHighPrice` double(10, 2) NULL DEFAULT NULL COMMENT '头等舱价格',
`flightHighNumber` int(11) NULL DEFAULT NULL COMMENT '头等舱座位数',
`flightMidPrice` double(10, 2) NULL DEFAULT NULL COMMENT '商务舱价格',
`flightMidNumber` int(10) NULL DEFAULT NULL COMMENT '商务舱座位数',
`flightLowPrice` double(10, 2) NULL DEFAULT NULL COMMENT '经济舱价格',
`flightLowNumber` int(11) NULL DEFAULT NULL COMMENT '经济舱座位数',
PRIMARY KEY (`flightId`, `flightNumber`)
) ;
-- order
CREATE TABLE `order` (
`orderId` varchar(255) CHARACTER NOT NULL COMMENT '订单id',
`orderName` varchar(255) CHARACTER NOT NULL COMMENT '订单名称',
`orderUser` varchar(16) CHARACTER NOT NULL COMMENT '下单用户',
`flightNumber` varchar(255) CHARACTER NOT NULL COMMENT '航班号',
`personName` varchar(16) CHARACTER NOT NULL COMMENT '乘客姓名',
`orderDate` date NOT NULL COMMENT '订单日期',
`grade` varchar(3) CHARACTER NOT NULL COMMENT '舱别',
`personId` varchar(225) CHARACTER NOT NULL COMMENT '乘客身份证号',
`orderMoney1` double(20, 2) NOT NULL COMMENT '原价',
`orderMoney2` double(20, 2) NOT NULL COMMENT '折扣后价钱',
`contactName` varchar(16) CHARACTER NOT NULL COMMENT '联系人',
`contactPhone` varchar(11) CHARACTER NOT NULL COMMENT '联系人电话',
PRIMARY KEY (`orderId`)
) ;
-- user
CREATE TABLE `user` (
`userName` varchar(16) CHARACTER NOT NULL COMMENT '用户名',
`userPwd` varchar(225) CHARACTER NOT NULL COMMENT '用户密码',
PRIMARY KEY (`userName`)
) ;
-- person
CREATE TABLE `person` (
`userName` varchar(16) CHARACTER NOT NULL COMMENT '用户名',
`personName` varchar(16) CHARACTER NOT NULL COMMENT '乘客姓名',
`personId` varchar(225) CHARACTER NOT NULL COMMENT '乘客身份证号',
`userScore` int(11) NULL DEFAULT NULL COMMENT '用户积分',
PRIMARY KEY (`userName`)
) ;
-- radio
CREATE TABLE `radio` (
`radioId` varchar(225) CHARACTER NOT NULL COMMENT '广播id',
`radioDescribe` varchar(255) CHARACTER NOT NULL COMMENT '广播内容',
PRIMARY KEY (`radioId`)
) ;
-- advert
CREATE TABLE `advert` (
`advertId` varchar(225) CHARACTER NOT NULL COMMENT '广告id',
`advertDescribe` varchar(255) CHARACTER NOT NULL COMMENT '广告内容',
`url` varchar(255) CHARACTER NOT NULL COMMENT 'url',
`picture` varchar(255) CHARACTER NOT NULL COMMENT 'picture',
PRIMARY KEY (`advertId`)
);
4.系统总设计
本系统分为前台子系统和后台子系统,具体功能如下
前台:
- 用户登录
- 用户注册
- 航班查询
- 机票详情
- 机票预订
- 订单支付
- 订单查看
- 用户留言
- 个人信息查看与修改,积分变更
后台:
- 航班信息管理
- 订单信息管理
- 用户信息管理
- 留言评论管理
- 广播信息管理
- 广告信息管理
- 个人信息管理
- 信息统计
详细子功能如下图:
5.代码开发
5.1.开发环境相关
开发后台服务语言:openjdk version “11.0.10” 2021-01-19
服务器:Apache Tomcat/8.5.73
数据库:MySql 5.7.36
操作系统:Windows10
开发工具:intelliJ IEDA 2021.3、Navicat permium15
5.2.开发所用技术
Web前端:HTML,CSS,JavaScript,Bootstrap
Web后端:jsp+servlet
版本控制工具:git version 2.33.1.windows.1
5.3.源代码目录简介
-
airTicket 项目文件夹
-
src
-
main 项目主文件夹
- java 项目java部分文件夹
- com.
- admin admin管理部分后端代码
- bean admin后端各实体定义
- dao admin后端各实体操作
- filter 过滤器,防止未登录访问
- servlet admin部分主要功能代码
- util 存放工具类,定义数据库连接
- user
- bean 用户部分的各实体定义
- dao 用户部分的各实体操作
- filter 过滤器,防止未登录访问
- servlet 用户部分功能主要代码
- admin admin管理部分后端代码
- com.
- webapp
- admin admin部分的jsp前端代码
- css
- default 用户部分的jsp前端代码
- fonts
- images
- js
- WEB-INF
- web.xml 各servlet和filter的配置位置
- index.jsp 主页
- list.jsp 飞机查询列表页
- login.jsp 前台登录页
- register.jsp 前台注册页
test
- java 项目java部分文件夹
-
-
target 编译后的.class文件
-
5.4.项目代码
由于代码过多,这里不便放置,这里提供源码地址
https://gitee.com/gao_x/air-ticket
6.系统展示
6.1.后台
后台主页:
航班添加页面:
航班列表页:
管理员添加页:只有最高权限可以访问
管理员列表页:只有最高权限可以访问
权限不足页面:普通管理员无法进行管理员授权等等
6.2.前台
前台主页:
前台列表页:
订单生成页:
个人订单管理页面
注册页:
因为部分页面相似,在这里不做图片展示。因部署在云服务器可通过以下连接查看。(已经失效,我服务器重置了,没重新部署)
主页: http://110.42.210.89:8080/airticket_war/
管理端:http://110.42.210.89:8080/airticket_war/admin/
账号:admin
密码:admin