课程设计---飞机订票系统

本课程设计介绍了一个飞机订票系统,包括航班信息录入、客户订票、退票、航班查询、订单查询和航班修改等功能。系统采用C语言实现,使用单链表存储航班和客户数据,支持多种查询和操作。通过此次设计,作者深化了对数据结构的理解,提升了编程能力。
摘要由CSDN通过智能技术生成

1. 题目

 本课程设计的题目为:飞机订票系统。

2. 项目描述

 基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。

 

3. 数据及其逻辑结构分析

 1)航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、时间时间起飞城市抵达城市航班票价票价折扣确定航班是否满仓和空座数九个数据项:

航班号

起飞

时间

降落

时间

起飞

城市

抵达

城市

航班

是否满仓

空座数

票价

票价

折扣

字符串

字符串

字符串

字符串

字符串

整数

int

整数

int

浮点数

float

浮点数

float

 

每个结点包括数据域和指针域:

数据域

指针域

 C语言描述如下:

typedef struct flightnode{

 char flight_num[10];//航班号

 char start_time[10];//起飞时间

 char end_time[10];//抵达时间

char start_place[20];//起飞城市

 char end_place[20]; //抵达城市

 int left;           //空座数

float price;        //票价

float price_discount;//票价折扣

int isFull;         //航班是否满仓

 struct flightnode *next;//指向下一个结点

}flightnode;//航班结点

 2客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号、航班号、订票数量和订单号五个数据项:

姓名

证件号

航班号

订票数量

订单号

字符串

字符串

字符串

整数(int

整数(int

每个结点包括数据域和指针域:

数据域

指针域

C语言描述如下:

typedef struct passengernode{//定义客户资料结点

 char name[20];    //姓名

 char ID_num[20];  //证件号

 char flight_num[10];//航班号

int order_num;    //订单号

 int ticket_num;    //订票数量

 struct passengernode *next;//指向下一个结点

}passengernode;/客户结点

3)客户链表:每个数据元素包括头指针和尾指针两个数据项:

每个结点包括两个指针域:

头指针域

尾指针域

C语言描述如下:

typedef struct passengerList{

 passengernode *head;

 passengernode *rear;

}passengerList;

4. 数据的存储结构设计

程序运行时会从文件中将航班数据调入内存,并且以单链表的存储方式进行存储。每个链表结点的数据域有一个用户自定义结构体组成,结构体内包含有详细的航班有关信息。

  5. 系统模块组成

1 录入航班信息模块

void add_flight(flightnode *&h)调用void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)函数,将新航班结点插入航班链表中。

 

2 客户订票模块

int book(flightnode *&h,passengerList *&PList)函数调用int insert_passenger(passengernode *&h,char *name,char *ID_num,char *flight_num,int ticket_num,int order_num)函数,将新客户结点插入客户链表中。


3 客户退票模块

void cancel(passengerList *&PList,flightnode *&h)函数调用int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。

 

4 查询航班模块

void flight_check(flightnode *h)调用void check_all_flight(flightnode *h)函数进行所有航班信息浏览,调用int place_check(flightnode *h,char *start_place,char *end_place)函数按起飞抵达城市对航班进行查询,调用int flight_num_check(flightnode *h,char *flight_num)按航班号对航班进行查询。

 

5 查询订单模块

void passenger_check(passengerList *PList)调用void check_all_passenger(passengerList *PList)函数进行所有订单信息浏览,调用int order_num_check(passengerList *PList,int order_num)函数按订单号对订单进行查询,调用int ID_name_check(passengerList *PList,char *name,char *ID_num)按客户姓名和证件号对订单进行查询。

 

6 修改航班模块

增加航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void add_flight(flightnode *&h)函数,将新航班信息结点插入航班链表中。

删除航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void delete_flight(flightnode *&h,passengerList *&PList)函数将相应的航班信息删除,并删除相应的订单信息。

修改航班时间时,void modify_flight(flightnode *&h,passengerList *&PList)函数修改指定航班的起飞抵达时间。

 项目实现结果

 

(1) 编译链接后显示菜单

 

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值