数据结构课程教学设计-飞机订票系统设计与实现(里面附有源代码) 下载本文

,.

(int)

单链表如下:

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

C语言描述如下:

typedef struct flightnode{ char air_num[10];//航班号 char start_time[15];//起飞时间 char end_time[15];//抵达时间 char start_place[20];//起飞城市 char end_place[20]; //降落城市 int left; //空座数 float price; //票价 float price_discount;//票价折扣 int isFull; //航班是否满仓

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

h D1 D2 (int) (float) (float) D3 ^ 数据域 指针域 }flightnode;//航班结点

,.

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

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

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)客户链表:每个数据元素包括头指针和尾指针两个数据项: 每个结点包括两个指针域:

证件号 字符串 航班号 字符串 订票数量 整数(int) 订单号 整数(int) 数据域 指针域 头指针域 尾指针域 C语言描述如下:

,.

typedef struct passengerList{ passengernode *head; passengernode *rear; }passengerList;

2.2 程序模块

2.2.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.2.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)函数,将新客户结点插入客户链表中。

2.2.3 客户退票模块

void cancel(passengerList *&PList,flightnode *&h)函数调用int

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

,.

2.2.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)按航班号对航班进行查询。

2.2.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)按客户姓名和证件号对订单进行查询。

2.2.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)函数修改指定航班的起飞抵达时间。