飞机订票系统源代码


问题及代码:

  1. /****************************************************  
  2. *版权所有(C)2017,张思琦 
  3. *文件名称:飞机订票系统  
  4. *文件标识:无  
  5. *内容摘要:实现录入航班信息、订票、退票、预约、 
  6. *          查询航班、查询订单、查看预约、修改航班功能。 
  7. *其他内容:无  
  8. *当前版本:VC++6.0  
  9. *作    者:zsq 
  10. *完成日期:2017.12.21  
  11. *修改记录:无  
  12. ****************************************************/    

1、plane.h的代码


  1. #include   
  2. #include   
  3. #include   
  4. #include   
  5.   
  6. typedef struct flightnode  
  7. {  
  8.     char flight_num[10];//航班号  
  9.     char start_time[15];//起飞时间  
  10.     char end_time[15];//抵达时间  
  11.     char start_place[20];//起飞城市  
  12.     char end_place[20];//降落城市  
  13.     int left;//空座数  
  14.     float price;//票价  
  15.     int ifull;//航班是否满仓  
  16.     struct flightnode *next;//指向下一节点  
  17. }flightnode;  
  18.   
  19. typedef struct passengernode  
  20. {  
  21.     char name[20];//姓名  
  22.     char ID_num[20];//证件号  
  23.     char flight_num[10];//航班号  
  24.     int order_num;//订单号  
  25.     int ticket_num;//订票数量  
  26.     struct passengernode *next;//指向下一节点  
  27. }passengernode;  
  28.   
  29. typedef struct passengerList  
  30. {  
  31.     passengernode *head;  
  32.     passengernode *rear;  
  33. }passengerList;  
  34.   
  35. typedef struct waitnode  
  36. {  
  37.     char name[20];//姓名  
  38.     char phone[20];//手机号  
  39.     char flight_num[10];//航班号  
  40.     int ticket_num;//订票数量  
  41.     int order_num;//预约排队号  
  42.     struct waitnode *next;//指向下一节点  
  43.   
  44. }waitnode;  
  45.   
  46. typedef struct waitList  
  47. {  
  48.     waitnode *front;  
  49.     waitnode *rear;  
  50. }waitList;  
  51.   
  52. void init_flight(flightnode *&h);//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表  
  53. void init_passengerList(passengerList *&pList);//建立一个带有头尾指针的空链表,存储带有顾客信息的节点  
  54. void init_waitList(waitList *&wList);//建立一个带有头尾指针的空链表,存储带有预约客户信息的节点  
  55.   
  56. void save_flight(flightnode *h);//保存航班信息到指定的数据文件中  
  57. void load_flight(flightnode *&h);//从存储航班信息的文件导入航班信息到航班链表中  
  58.   
  59. void save_passenger(passengerList *PList);//保存客户信息到指定数据文件中  
  60. void load_passenger(passengerList *&PList);//从存储客户信息的文件导入客户信息到客户链表中  
  61.   
  62. void save_wait(waitList *WList);//保存预约客户信息到指定数据文件中  
  63. void load_wait(waitList *&WList);//从存储预约客户信息的文件导入预约客户信息到预约客户链表中  
  64.   
  65. void add_flight(flightnode *&h);//录入航班信息后调用insert_flight函数增加航班  
  66. //录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中  
  67. void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull);  
  68.   
  69. //完成客户订票,将客户结点插入客户链表,并修改相应的航班信息  
  70. int book(flightnode *&h,passengerList *&PList,waitList *WList);  
  71. //客户订票时输入的航班号对应航班已满,提供其他可选航班并输出显示  
  72. int find_same_flight(flightnode *h,char *flight_num);  
  73. //在客户订票后,将该客户结点插入到客户链表,并修改相应航班信息  
  74. void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);  
  75.   
  76. //在客户预约票后,将该预约客户结点插入到预约客户链表  
  77. void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);  
  78.   
  79. //完成退票,将订单从客户链表删除并修改相应航班信息  
  80. void cancel(passengerList *&PList,flightnode *&h);  
  81. //按照要退票的客户姓名和证件号查找该客户结点,进行删除操作  
  82. int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);  
  83.   
  84. void flight_check(flightnode *h);//选择使用何种方式对航班信息进行查询  
  85. void check_all_flight(flightnode *h);//浏览所有航班信息  
  86. int place_check(flightnode *h, char *start_place, char *end_place);//按照起飞抵达城市查询航班信息  
  87. int flight_num_check(flightnode *h, char *flight_num);//按照航班号查询航班信息  
  88.   
  89. void passenger_check(passengerList *PList);//选择使用何种方式查询订单信息  
  90. void check_all_passenger(passengerList *PList);//浏览所有订单信息  
  91. int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客户姓名和证件号查询订单信息  
  92.   
  93. void check_all_wait(waitList *WList);//浏览所有预约客户信息  
  94.   
  95. void modify_flight(flightnode *&h, passengerList *&PList);//修改航班信息  
  96. void delete_flight(flightnode *&h, passengerList *&PList);//按照某个航班号删除航班结点  
  97. void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班时间  
#include 
#include 
#include 
#include typedef struct flightnode
{char flight_num[10];//航班号char start_time[15];//起飞时间char end_time[15];//抵达时间char start_place[20];//起飞城市char end_place[20];//降落城市int left;//空座数float price;//票价int ifull;//航班是否满仓struct flightnode *next;//指向下一节点
}flightnode;typedef struct passengernode
{char name[20];//姓名char ID_num[20];//证件号char flight_num[10];//航班号int order_num;//订单号int ticket_num;//订票数量struct passengernode *next;//指向下一节点
}passengernode;typedef struct passengerList
{passengernode *head;passengernode *rear;
}passengerList;typedef struct waitnode
{char name[20];//姓名char phone[20];//手机号char flight_num[10];//航班号int ticket_num;//订票数量int order_num;//预约排队号struct waitnode *next;//指向下一节点}waitnode;typedef struct waitList
{waitnode *front;waitnode *rear;
}waitList;void init_flight(flightnode *&h);//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
void init_passengerList(passengerList *&pList);//建立一个带有头尾指针的空链表,存储带有顾客信息的节点
void init_waitList(waitList *&wList);//建立一个带有头尾指针的空链表,存储带有预约客户信息的节点void save_flight(flightnode *h);//保存航班信息到指定的数据文件中
void load_flight(flightnode *&h);//从存储航班信息的文件导入航班信息到航班链表中void save_passenger(passengerList *PList);//保存客户信息到指定数据文件中
void load_passenger(passengerList *&PList);//从存储客户信息的文件导入客户信息到客户链表中void save_wait(waitList *WList);//保存预约客户信息到指定数据文件中
void load_wait(waitList *&WList);//从存储预约客户信息的文件导入预约客户信息到预约客户链表中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, int ifull);//完成客户订票,将客户结点插入客户链表,并修改相应的航班信息
int book(flightnode *&h,passengerList *&PList,waitList *WList);
//客户订票时输入的航班号对应航班已满,提供其他可选航班并输出显示
int find_same_flight(flightnode *h,char *flight_num);
//在客户订票后,将该客户结点插入到客户链表,并修改相应航班信息
void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);//在客户预约票后,将该预约客户结点插入到预约客户链表
void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);//完成退票,将订单从客户链表删除并修改相应航班信息
void cancel(passengerList *&PList,flightnode *&h);
//按照要退票的客户姓名和证件号查找该客户结点,进行删除操作
int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);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);//按照航班号查询航班信息void passenger_check(passengerList *PList);//选择使用何种方式查询订单信息
void check_all_passenger(passengerList *PList);//浏览所有订单信息
int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客户姓名和证件号查询订单信息void check_all_wait(waitList *WList);//浏览所有预约客户信息void modify_flight(flightnode *&h, passengerList *&PList);//修改航班信息
void delete_flight(flightnode *&h, passengerList *&PList);//按照某个航班号删除航班结点
void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班时间

2、plane.cpp的代码


  1. #include   
  2. #include   
  3. #include   
  4. #include   
  5. #include "plane.h"  
  6.   
  7. //建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表  
  8. void init_flight(flightnode *&h)  
  9. {  
  10.     h=(flightnode *)malloc(sizeof(flightnode));//申请头结点空间  
  11.     if(h==NULL)  
  12.         exit(0);  
  13.     h->next=NULL;//将头结点h的指针域置为空  
  14. }  
  15. //建立一个带有头尾指针的空链表,存储带有客户信息的节点  
  16. void init_passengerList(passengerList *&pList)  
  17. {  
  18.     pList=(passengerList *)malloc(sizeof(passengerList));  
  19.     pList->head=(passengernode *)malloc(sizeof(passengernode));//创建头结点  
  20.     pList->rear=pList->head;  
  21.     pList->rear->order_num=0;//订单号从0开始计数  
  22.     pList->head->next=NULL;  
  23. }  
  24. //建立一个带有头尾指针的空队,存储带有预约客户信息的节点  
  25. void init_waitList(waitList *&wList)  
  26. {  
  27.     wList=(waitList *)malloc(sizeof(waitList));  
  28.     wList->front=(waitnode *)malloc(sizeof(waitnode));//创建头结点  
  29.     wList->rear=wList->front;  
  30.     wList->rear->order_num=0;//预约排队号从0开始计数  
  31.     wList->front->next=NULL;  
  32. }  
  33.   
  34. //保存航班信息到指定的数据文件中  
  35. void save_flight(flightnode *h)  
  36. {  
  37.     FILE *fp=fopen("flightList.dat","wb");//以只写('wb')的方式打开名为'flightList.dat'的文件  
  38.     if(fp==NULL)  
  39.         return;  
  40.     flightnode *temp=h->next;  
  41.     while(temp!=NULL)  
  42.     {  
  43.         fwrite(temp,sizeof(flightnode),1,fp);//向其中写入temp(temp是指针)地址的l个flightnode类型的数据  
  44.         temp=temp->next;  
  45.     }  
  46.     fclose(fp);//关闭fp指向的文件  
  47. }  
  48. //从存储航班信息的文件导入航班信息到航班链表中  
  49. void load_flight(flightnode *&h)  
  50. {  
  51.     flightnode *pt=h;  
  52.     FILE *fp=fopen("flight.dat","rb");  
  53.     if(fp==NULL)  
  54.         return;  
  55.     flightnode *q;  
  56.     int n;  
  57.     while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)  
  58.     {  
  59.         q=(flightnode *)malloc(sizeof(flightnode));  
  60.         n=fread(q,sizeof(flightnode),1,fp);//将写入的数据读取出来  
  61.         if(n!=1)  
  62.             break;  
  63.         pt->next=q;  
  64.         pt=q;  
  65.     }  
  66.     pt->next=NULL;  
  67.     fclose(fp);  
  68. }  
  69.   
  70. //保存已订票客户信息到指定数据文件中  
  71. void save_passenger(passengerList *PList)  
  72. {  
  73.     FILE *fp=fopen("passenger.dat","wb");  
  74.     if(fp==NULL)  
  75.         return;  
  76.     passengernode *temp=PList->head->next;  
  77.     while(temp!=NULL)  
  78.     {  
  79.         fwrite(temp,sizeof(passengernode),1,fp);//向其中写入temp(temp是指针)地址的l个passengernode类型的数据  
  80.         temp=temp->next;  
  81.     }  
  82.     fclose(fp);//关闭fp指向的文件  
  83. }  
  84. //从存储客户信息的文件导入客户信息到客户链表中  
  85. void load_passenger(passengerList *&PList)  
  86. {  
  87.     FILE *fp=fopen("passenger.dat",


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部