数据结构课程设计:飞机订票系统设计与实现(里面附有源代码!)(2)

2025-06-25

主函数 录入 航班信息 订 票 退 票 查询航班 查询订单 修改航班信息 退 出 浏览 全部 航班 信息 按航 班号 查询 航班 信息 按起 飞抵 达城 市查 询航 班信 息 浏览 全部 订单 信息 按订 单号 查询 订单 信息 按客 户姓 名和 证件 号查 询订 单信 息 增加 删除 修改 航班 航班 航班 信息 信息 起飞 抵达 时间 2.3.2 算法设计

void init_flight(flightnode *&h):要建立一个以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表。

void init_passengerList(passengerList *&pList):建立一个带有头指针和尾指针的空链表,存储带有顾客信息的结点。

void save_flight(flightnode *h):保存航班信息到指定数据文件中。

void load_flight(flightnode *&h):从存储航班信息的文件导入航班信息到航班链表中。

void save_passenger(passengerList *PList):保存客户信息到指定数据文件中。

void load_passenger(passengerList *&PList):从存储客户信息的文件导入客户信息到客户链表中。

void add_flight(flightnode *&h):录入航班信息后调用insert_flight函数增加航班。 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):在录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中。

int book(flightnode *&l,passengerList *&PList):要完成客户订票,将客户结点插入客户链表中,并修改相应的航班信息。

void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char

*ID_num,char *flight_num,int ticket_num):在顾客订票后,将该顾客结点插入到顾客链表中,并修改相应的航班信息。

void find_same_flight(flightnode *l,char *flight_num):在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。

void cancel(passengerList *&PList,flightnode *&h):完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。

int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num):按

6

照要退票的顾客的姓名和证件号查找该顾客结点,进行删除操作。

void flight_check(flightnode *h):选择使用何种方式对航班信息进行查询。 void check_all_flight(flightnode *l):浏览所有航班信息。

int place_check(flightnode *l,char *start_place,char *end_place):按照起飞抵达城市查询航班信息。

int flight_num_check(flightnode *l,char *flight_num):按照航班号查询航班信息。

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):按客户姓名和证件号查询订单信息。

void modify_flight(flightnode *&h,passengerList *&PList):修改航班信息,包括添加航班信息,删除航班信息,修改航班起飞抵达时间。

void delete_flight(flightnode *&h,passengerList *&PList):按照某个航班号删除航班结点。

3. 详细设计

3.1 录入航班信息模块

在主函数中输入“1”,调用void add_flight(flightnode *&h)函数,此函数将航班指针*p指向已存在航班链表*h的头结点,利用for(;p->next!=NULL;p=p->next){}使*p指向航线链表的最后一个结点,然后让用户输入航班信息,然后调用void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int

7

left,float price,float price_discount,int isFull)函数,用malloc函数申请一个航班结点,并用指针*q指向,将航班信息赋到新申请的结点中,p->next=q;p=p->next;该操作将该结点插入航班链表中。流程图如下: 开始 flightnode *p=h; N p->next!=NULL

Y p=p->next

N

mark==1

Y 输入航班信息 调用insert_flight函数 完成航班信息的录入

是否继续录入航班信息

“是”输入“1”mark=1

“否”输入“0”mark=0

结束

3.2 顾客订票模块

在主函数中输入“2”,调用int book(flightnode *&h,passengerList *&PList)函数完成客

户的订票。用航班指针*p指向已存在航班链表*h的头结点的下一个结点,请客户输入起飞抵达城市,分别存于start_place和end_place中。调用int place_check(flightnode *l,char *start_place,char *end_place)函数,如果函数返回“1”则请客户输入要订的航班号,如果输入的航班号不存在,输出提示信息,

如果航班存在则提示客户输入订的票数、客户的姓名和证件号,调用void

insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函数,定义航班指针*p=h->next,使用for循环匹配flight_num和p->flight_num,找到后,执行p->left=p->left-ticket_num,修改相应航班的空座数。用

8

malloc函数申请一个客户结点,并用指针*q指向,将客户信息和航班号赋到新申请的结点中,PList->rear->next=q;PList->rear=q;该操作将该结点插入客户链表中。

如果该航班已满仓或该航班的空座数不够,输出可供选择的航班,让客户选择,之后调用void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函数将客户结点插入客户链表中. 开始 flightnode *p=h->next; 输入起飞抵达城市,分别存于 start_place和end_place place_check(h,start_N place,end_place)==1 Y 输入航班号,存入flight_num flight_num ==NULL N Y 航班号不为空! 输入航班号,存入flight_num p!=NULL N Y strcmp(p->flight_num, N flight_num)==0 Y 输入姓名、证件号、订票数,分别 存入name、ID_num、ticket_num name==NULL N Y 航班号不为空! 输入航班号,存入flight_num

9

接上页:

p=p->next 返回“1” p->left>0&& p->left>=ticket_num Y 调用insert_passengerList函数 完成客户订票 输入证件号,存入ID_num ID_num==NULL Y 证件号不为空! N ticket_num==NULL Y 订票数不为空! 输入订票数,存入ticket_num N N 显示其他可选航班 供客户选择 调用insert_passengerList函数 完成客户订票 返回“0” 结束 3.3 顾客退票模块

在主函数中输入“3”,调用void cancel(passengerList *&PList,flightnode *&h)函数完成客户的退票。提示客户输入客户的姓名和证件号以及要退的航班号,此函数再调用int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num,char

*flight_num)函数,用客户结点指针*pr等于已存在客户链表结点Plist的头指针,相当于将*pr指向客户链表的头结点,用客户结点指针*p指向pr的下一个结点。使用while循环寻

10


数据结构课程设计:飞机订票系统设计与实现(里面附有源代码!)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公开课2.0李时珍夜宿古寺

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219