【项目1】航空订票管理系统——一个完整的系统级项目的设计与实现(技术栈:MySQL + Java + Hibernate + Swing)

《Java 学习笔记:从入门到实战 / 张晓博编著》学习笔记


前言

本文将介绍如何利用 Hibernate 来开发一个航空订票管理系统。

目的:牢固掌握 SQL 后台数据库的建立、维护以及前台应用程序的开发,为以后深入的学习打下坚实的基础。

本文技术栈:MySQL + Java + Hibernate + Swing
Java集成开发工具:IntelliJ IDEA 2021.2
数据库管理工具:Navicat


一、系统概述和总体设计

本项目的系统规划书分为如下两个部分:
(1)系统需求分析文档
(2)系统运行流程说明

1、系统需求分析

使用航空订票管理系统的用户主要是航空公司信息管理员,电话(网点)售票员,具体功能如下所示。
(1)航班功能管理模块
航班管理模块的主要功能包括:飞机信息和航班信息的添加、删除、修改。
(2)网点信息管理模块
针对机票销售网点添加、删除、修改和查询,且可查看哪些网站是否在线经营。
(3)订票管理功能模块
订单管理模块的功能相对于其他模块来说要复杂一点。机票查询和订票的添加、删除、修改。

根据需求分析中用户的要求设计系统的体系结构,如果所示。在体系结构示意图中,每一个叶结点是一个最小的功能模块。每一个功能模块都需要针对不同的表完成相同的数据库操作,即添加记录、删除记录、查询记录、更新记录。

在这里插入图片描述

2、系统 demo 流程

模拟系统的运行过程:运行服务器系统后,首先会弹出服务器对话框,对用户的身份进行认证并确定用户的权限。然后使用 admin 用户(系统管理员)登录,创建其他用户,可以在系统维护菜单下系统管理添加、修改、删除操作。运行客户端系统后,首先会弹出客户端对话框,对用户的身份进行认证并确定用户的权限。如果需要登录系统,建议使用 user 用户进行登录,否则向系统管理员申请账户。

在系统初始化时,有两个默认的用户:系统管理员、普通用户。系统管理员用户为 admin,密码为 admin,网点用户为 user,密码为 user,由程序设计人员添加到数据库表中。

在这里插入图片描述
进入系统后,首先需要增加基础信息。基础信息包括:飞机信息、航班信息。基础信息是航空订票管理系统的基础数据,它为航空订票管理系统其他模块提供数据参考,见下表:

基础信息 具体说明
飞机信息 包括型号、头等舱座位数、公务舱座位数、经济舱座位数和最大航程属性描述等
航班信息 包括航班编号,出发地、目的地、起飞时间、到达时间、开始生效日期、结束日期、总公里数和全价等
航班信息查询 包括查询起始地址和到达地址的航班信息
网点管理 包括添加网点、修改网点和删除网点信息,查询网点是否在线。查看所有订单,分类查看网点订单,业绩分析统计
订票管理 包括添加订单、修改订单和删除订单信息,查询航班信息和网点登录

二、数据库设计

本项目系统的开发主要包括后台数据库的建立、测试数据录入以及前台应用程序的开发两个方面。数据库设计是系统设计开发的一个重要组成部分,数据库设计的好坏直接影响到程序编码的复杂程度。

1、选择数据库

结合本项目的目的并发性情况,并根据远程访问数据库的特性。在开发数据库管理信息系统时需要根据用户需求系统功能性能要求等因素,选择后台数据库相应的数据库访问接口。考虑到系统所要管理的数据量比较大和数据的准确性,且需要多用户同时运行访问。因为本项目需要实现多网点同时销售,所以一定要考虑数据的并发性和其他数据库的特性。并发性决定了整个项目的访问效率,应用程序的开发采用目前比较流行的 Hibernate 数据库访问技术,Hibernate 不仅负责从 Java 类到数据库表的映射(还包括从 Java 数据类型到 SQL 数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短了手动处理 SQL 和 JDBC 上的开发时间。随着消费市场日新月异的发展,后期升级问题也方便解决。所以综合考虑之下,本项目选择 MySQL 数据库

要点:
后台数据库:MySQL 数据库
相应的数据库访问技术:Hibernate

2、数据库结构的设计

由需求分析的规划可知整个项目对象有五种信息,所以对应的数据库也需要包含着五种信息,系统需要包含五个数据库表,各个数据库表的具体设计结构如下所示。

(1)用户信息表 user,用来保存用户信息,结构如表所示。

编号 字段名称 数据结构 说明
1 oid bigint(20) 网点 ID
2 name varchar(12) 网点名称
3 passwd varchar(12) 网点密码
4 city varchar(20) 城市
5 address varchar(20) 地址

(2)航班信息表 flight,用来保存航班信息,结构如表所示。

编号 字段名称 数据结构 说明
1 oid bigint(20) 航班ID
2 first_class_remain_seats int(11) 头等舱余位数
3 business_class_remain_seats int(11) 商务舱余位数
4 economy_class_remain_seats int(11) 经济舱余位数
5 priceOff double 折扣
6 calendar datetime 飞行日期
7 schid bigint(20) 航班计划 ID

(3)航班计划信息表 flightscheduler,用来保存航班计划信息,结构如表所示。

编号 字段名称 数据结构 说明
1 oid bigint(20) 航班计划 ID
2 flightNumber varchar(6) 航班号
3 fromAddress varchar(10) 出发地
4 toAddress varchar(10) 目的地
5 length int(11) 里程
6 scheduler tinyint(4) 班次
7 price double 价格
8 startDate datetime 有效开始日期
9 endDate datetime 结束日期
10 fromhour int(11) 起飞时
11 frommin int(11) 起飞分
12 tohour int(11) 到达时
13 tomin int(11) 到达分
14 planemodel bigint(20) 飞机ID

(4)飞机信息表 planemodel,用来保存飞机信息,结构如表所示。

编号 字段名称 数据结构 说明
1 oid bigint(20) 飞机 ID
2 model varchar(255) 型号
3 first_class_seats int(11) 头等舱数量
4 business_class_seats i
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 普通用户表(users) 字段名称 型 记录内容 是否为空 备注 user_id Varchar2(50) 用户名 0 主键 password Varchar2(20) 密码 0 name Varchar2(20) 用户姓名 1 telephone Varchar2(20) 固定电话 1 mobile Varchar2(20) 手机 1 address Varchar2(100) 用户地址 1 email Varchar2(50) Email 1 管理员表(administrators) 字段名称 型 记录内容 是否为空 备注 admin_id Varchar2(50) 用户名 0 主键 password Varchar2(20) 密码 0 id_number Varchar2(20) 身份证号 0 name Varchar2(20) 管理员真实姓名 0 telephone Varchar2(20) 固定电话 1 mobile Varchar2(20) 手机 0 address Varchar2(100) 管理员家庭地址 0 email Varchar2(50) Email 0 登录表(login) 字段名称 型 记录内容 是否为空 备注 id Varchar2(20) 用户名 0 主键 password Varchar2(20) 密码 0 订单表(order) 字段名称 型 记录内容 是否为空 备注 auto number 序号 0 主键,自增长 order_id Vachar2(100) 订单编号 0 user_id Varchar2(20) 用户id 0 外键(用户表) ticket_id Varchar2(40) 票编号 0 外键(票务信息) time Date 下单时间 0 票务信息(tickets) 字段名称 型 记录内容 是否为空 备注 ticket_id Vachar2(100) 机票编号 0 主键 airline Varchar2(50) 所属航空公司 0 外键(航班信息) filght_number Varchar2(50) 航班号 0 外键(航班信息) cab Varchar2(50) 舱位型 0 pirce number 舱位对应价格 0 外键(航班信息) 航班信息表(flight_info) 字段名称 型 记录内容 是否为空 备注 filght_number Vachar2(30) 航班号 0 由航空公司提供,主键 start_time Varchar2(40) 出发时间 0 end_time Varchar2(40) 到达时间 0 range_type Varchar2(10) 往返型 0 单程,往返 departure Varchar2(40) 始发地 0 destination Varchar2(40) 目的地 0 airline Varchar2(30) 航空公司 0 price number 机票基础价格 0 用户操作记录表(deal_log) 字段名称 型 记录内容 是否为空 备注 auto number 用户编号 0 主键,自增长 user_id Varchar2(30) 用户id 0 外键(普通用户) op_type Varchar2(40) 操作型 0 订票,退票,改签 ticket_id Varchar2(40) 机票编号 0 外键(票务信息) time Varchar2(10) 时间 0

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值