,.
接上页:
结束 p=p->next 返回“1” 返回“0” ID_num==NULL Y 证件号不为空! 输入证件号,存入ID_num N ticket_num==NULL Y 订票数不为空! 输入订票数,存入ticket_num N p->left>0&& p->left>=ticket_num Y 调用insert_passengerList函数 完成客户订票 N 显示其他可选航班 供客户选择 调用insert_passengerList函数 完成客户订票 ,.
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循环寻找匹配姓名、证件号、航班号的客户结点,找到后定义航班指针*f=h->next,使用for循环找到匹配航班号的航班结点,执行
f->left=f->left+p->ticket_num,修改退票后相应航班结点的空座数,之后执行pr->next=p->next;free(p);删除要退票的客户订单信息。如果没有找到匹配的客户结点,输出提示信息。
开始 输入姓名、证件号、航班号,分别存于name、ID_num、flight_num 调用delete_passenger函数 ,.
开始 passengernode *pr=PList->head N delete_passenger函数的流程图: passengernode *p=pr->next
pr->next=p->next free(p) Y p!=NULL strcmp(name,p->name)==0&& strcmp(ID_num,p->ID_num)== 0&&strcmp(flight_num,p-> flight_num)==0 Y flightnode *f=h->next N f!=NULL Y strcmp(flight_num, f->flight_num)==0 Y N N f->left=f->left+p->ticket_num; f=f->next pr=pr->next; p=pr->next; 返回“0” 结束 返回“1” ,.
3.4 查询航班模块
在主函数中输入“4”,调用void flight_check(flightnode *h)函数选择使用哪一种查询方式进行查询。提示客户输入查询方式,如客户输入“1”,则调用int
flight_num_check(flightnode *l,char *flight_num)函数按航班号对航班进行查询,提示客户输入航班号,存于flight_num中;如客户输入“2”,则调用int
place_check(flightnode *l,char *start_place,char *end_place)函数按起飞抵达城市对航班进行查询,提示客户输入起飞抵达城市,分别存于start_place和end_place中;如客户输入“3”,则调用void check_all_flight(flightnode *l)函数浏览全部航班信息。
在int flight_num_check(flightnode *l,char *flight_num)函数中,定义航班指针