1. 程式人生 > >飛機訂票系統原始碼

飛機訂票系統原始碼

問題及程式碼:

  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 <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. typedefstruct flightnode  
  6. {  
  7.     char flight_num[10];//航班號
  8.     char start_time[15];//起飛時間
  9.     char end_time[15];//抵達時間
  10.     char start_place[20];//起飛城市
  11.     char end_place[20];//降落城市
  12.     int left;//空座數
  13.     float price;//票價
  14.     int ifull;//航班是否滿倉
  15.     struct
     flightnode *next;//指向下一節點
  16. }flightnode;  
  17. typedefstruct passengernode  
  18. {  
  19.     char name[20];//姓名
  20.     char ID_num[20];//證件號
  21.     char flight_num[10];//航班號
  22.     int order_num;//訂單號
  23.     int ticket_num;//訂票數量
  24.     struct passengernode *next;//指向下一節點
  25. }passengernode;  
  26. typedefstruct passengerList  
  27. {  
  28.     passengernode *head;  
  29.     passengernode *rear;  
  30. }passengerList;  
  31. typedefstruct waitnode  
  32. {  
  33.     char name[20];//姓名
  34.     char phone[20];//手機號
  35.     char flight_num[10];//航班號
  36.     int ticket_num;//訂票數量
  37.     int order_num;//預約排隊號
  38.     struct waitnode *next;//指向下一節點
  39. }waitnode;  
  40. typedefstruct waitList  
  41. {  
  42.     waitnode *front;  
  43.     waitnode *rear;  
  44. }waitList;  
  45. void init_flight(flightnode *&h);//建立以h為頭結點的空連結串列,錄入航班資訊和增加航班後將航班結點插入該連結串列
  46. void init_passengerList(passengerList *&pList);//建立一個帶有頭尾指標的空連結串列,儲存帶有顧客資訊的節點
  47. void init_waitList(waitList *&wList);//建立一個帶有頭尾指標的空連結串列,儲存帶有預約客戶資訊的節點
  48. void save_flight(flightnode *h);//儲存航班資訊到指定的資料檔案中
  49. void load_flight(flightnode *&h);//從儲存航班資訊的檔案匯入航班資訊到航班連結串列中
  50. void save_passenger(passengerList *PList);//儲存客戶資訊到指定資料檔案中
  51. void load_passenger(passengerList *&PList);//從儲存客戶資訊的檔案匯入客戶資訊到客戶連結串列中
  52. void save_wait(waitList *WList);//儲存預約客戶資訊到指定資料檔案中
  53. void load_wait(waitList *&WList);//從儲存預約客戶資訊的檔案匯入預約客戶資訊到預約客戶連結串列中
  54. void add_flight(flightnode *&h);//錄入航班資訊後呼叫insert_flight函式增加航班
  55. //錄入航班情況或增加新的航班後,將新的航班結點插入到航線連結串列中
  56. 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);  
  57. //完成客戶訂票,將客戶結點插入客戶連結串列,並修改相應的航班資訊
  58. int book(flightnode *&h,passengerList *&PList,waitList *WList);  
  59. //客戶訂票時輸入的航班號對應航班已滿,提供其他可選航班並輸出顯示
  60. int find_same_flight(flightnode *h,char *flight_num);  
  61. //在客戶訂票後,將該客戶結點插入到客戶連結串列,並修改相應航班資訊
  62. void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);  
  63. //在客戶預約票後,將該預約客戶結點插入到預約客戶連結串列
  64. void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);  
  65. //完成退票,將訂單從客戶連結串列刪除並修改相應航班資訊
  66. void cancel(passengerList *&PList,flightnode *&h);  
  67. //按照要退票的客戶姓名和證件號查詢該客戶結點,進行刪除操作
  68. int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);  
  69. void flight_check(flightnode *h);//選擇使用何種方式對航班資訊進行查詢
  70. void check_all_flight(flightnode *h);//瀏覽所有航班資訊
  71. int place_check(flightnode *h, char *start_place, char *end_place);//按照起飛抵達城市查詢航班資訊
  72. int flight_num_check(flightnode *h, char *flight_num);//按照航班號查詢航班資訊
  73. void passenger_check(passengerList *PList);//選擇使用何種方式查詢訂單資訊
  74. void check_all_passenger(passengerList *PList);//瀏覽所有訂單資訊
  75. int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客戶姓名和證件號查詢訂單資訊
  76. void check_all_wait(waitList *WList);//瀏覽所有預約客戶資訊
  77. void modify_flight(flightnode *&h, passengerList *&PList);//修改航班資訊
  78. void delete_flight(flightnode *&h, passengerList *&PList);//按照某個航班號刪除航班結點
  79. void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班時間
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

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 <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include "plane.h"
  6. //建立以h為頭結點的空連結串列,錄入航班資訊和增加航班後將航班結點插入該連結串列
  7. void init_flight(flightnode *&h)  
  8. {  
  9.     h=(flightnode *)malloc(sizeof(flightnode));//申請頭結點空間
  10.     if(h==NULL)  
  11.         exit(0);  
  12.     h->next=NULL;//將頭結點h的指標域置為空
  13. }  
  14. //建立一個帶有頭尾指標的空連結串列,儲存帶有客戶資訊的節點
  15. void init_passengerList(passengerList *&pList)  
  16. {  
  17.     pList=(passengerList *)malloc(sizeof(passengerList));  
  18.     pList->head=(passengernode *)malloc(sizeof(passengernode));//建立頭結點
  19.     pList->rear=pList->head;  
  20.     pList->rear->order_num=0;//訂單號從0開始計數
  21.     pList->head->next=NULL;  
  22. }  
  23. //建立一個帶有頭尾指標的空隊,儲存帶有預約客戶資訊的節點
  24. void init_waitList(waitList *&wList)  
  25. {  
  26.     wList=(waitList *)malloc(sizeof(waitList));  
  27.     wList->front=(waitnode *)malloc(sizeof(waitnode));//建立頭結點
  28.     wList->rear=wList->front;  
  29.     wList->rear->order_num=0;//預約排隊號從0開始計數
  30.     wList->front->next=NULL;  
  31. }  
  32. //儲存航班資訊到指定的資料檔案中
  33. void save_flight(flightnode *h)  
  34. {  
  35.     FILE *fp=fopen("flightList.dat","wb");//以只寫('wb')的方式開啟名為'flightList.dat'的檔案
  36.     if(fp==NULL)  
  37.         return;  
  38.     flightnode *temp=h->next;  
  39.     while(temp!=NULL)  
  40.     {  
  41.         fwrite(temp,sizeof(flightnode),1,fp);//向其中寫入temp(temp是指標)地址的l個flightnode型別的資料
  42.         temp=temp->next;  
  43.     }  
  44.     fclose(fp);//關閉fp指向的檔案
  45. }  
  46. //從儲存航班資訊的檔案匯入航班資訊到航班連結串列中
  47. void load_flight(flightnode *&h)  
  48. {  
  49.     flightnode *pt=h;  
  50.     FILE *fp=fopen("flight.dat","rb");  
  51.     if(fp==NULL)  
  52.         return;  
  53.     flightnode *q;  
  54.     int n;  
  55.     while(!feof(fp))//檔案指標沒有到達檔案末尾(最後一個字元的下一個位置,即讀失敗時的位置)
  56.     {  
  57.         q=(flightnode *)malloc(sizeof(flightnode));  
  58.         n=fread(q,sizeof(flightnode),1,fp);//將寫入的資料讀取出來
  59.         if(n!=1)  
  60.             break;  
  61.         pt->next=q;  
  62.         pt=q;  
  63.     }  
  64.     pt->next=NULL;  
  65.     fclose(fp);  
  66. }  
  67. //儲存已訂票客戶資訊到指定資料檔案中
  68. void save_passenger(passengerList *PList)  
  69. {  
  70.     FILE *fp=fopen("passenger.dat","wb");  
  71.     if(fp==NULL)  
  72.         return;  
  73.     passengernode *temp=PList->head->next;  
  74.     while(temp!=NULL)  
  75.     {  
  76.         fwrite(temp,sizeof(passengernode),1,fp);//向其中寫入temp(temp是指標)地址的l個passengernode型別的資料
  77.         temp=temp->next;  
  78.     }  
  79.     fclose(fp);//關閉fp指向的檔案
  80. }  
  81. //從儲存客戶資訊的檔案匯入客戶資訊到客戶連結串列中
  82. void load_passenger(passengerList *&PList)  
  83. {  
  84.     FILE *fp=fopen("passenger.dat","rb");  
  85.     if(fp==NULL)  
  86.         return;  
  87.     passengernode *q;  
  88.     int n;  
  89.     while(!feof(fp))//檔案指標沒有到達檔案末尾(最後一個字元的下一個位置,即讀失敗時的位置)
  90.     {  
  91.         q=(passengernode *)malloc(sizeof(passengernode));  
  92.         n=fread(q,sizeof(passengernode),1,fp);//將寫入的資料讀取出來
  93.         if(n!=1)  
  94.             break;  
  95.         PList->rear->next=q;  
  96.         PList->rear=q;  
  97.     }  
  98.     PList->rear->next=NULL;  
  99.     fclose(fp);  
  100. }  
  101. //儲存預約客戶資訊到指定資料檔案中
  102. void save_wait(waitList *WList)  
  103. {  
  104.     FILE *fp=fopen("waitpassenger.dat","wb");  
  105.     if(fp==NULL)  
  106.         return;  
  107.     waitnode *temp=WList->front->next;  
  108.     while(temp!=NULL)  
  109.     {  
  110.         fwrite(temp,sizeof(waitnode),1,fp);//向其中寫入temp(temp是指標)地址的l個waitnode型別的資料
  111.         temp=temp->next;  
  112.     }  
  113.     fclose(fp);//關閉fp指向的檔案
  114. }  
  115. //從儲存預約客戶資訊的檔案匯入預約客戶資訊到預約客戶連結串列中
  116. void load_wait(waitList *&WList)  
  117. {  
  118.     FILE *fp=fopen("waitpassenger.dat","rb");  
  119.     if(fp==NULL)  
  120.         return;  
  121.     waitnode *w;  
  122.     int n;  
  123.     while(!feof(fp))//檔案指標沒有到達檔案末尾(最後一個字元的下一個位置,即讀失敗時的位置)
  124.     {  
  125.         w=(waitnode *)malloc(sizeof(waitnode));  
  126.         n=fread(w,sizeof(waitnode),1,fp);//將寫入的資料讀取出來
  127.         if(n!=1)  
  128.             break;  
  129.         WList->rear->next=w;  
  130.         WList->rear=w;  
  131.     }  
  132.     WList->rear->next=NULL;  
  133.     fclose(fp);  
  134. }  
  135. /********************************************************* 
  136. * 功能描述: 新航班結點插入航線連結串列 
  137. * 輸入引數: 航班各項資訊 
  138. * 輸出引數: 無 
  139. * 返回值  : 無 
  140. * 其它說明: 無 
  141. *********************************************************/
  142. 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)  
  143. {  
  144.     flightnode *q;//定義q為新增加的航班節點的指標的形參
  145.     flightnode *p=h;  
  146.     q=(flightnode *)malloc(sizeof(flightnode));//為節點q申請空間
  147.     strcpy(q->flight_num,flight_num);  
  148.     strcpy(q->start_place,start_place);  
  149.     strcpy(q->end_place,end_place);  
  150.     strcpy(q->start_time,start_time);  
  151.     strcpy(q->end_time,end_time);  
  152.     q->left=left;  
  153.     q->price=price;  
  154.     q->ifull=ifull;  
  155.     //用strcpy函式將新增加航班的各種資訊複製到q節點中
  156.     q->next=p->next;//將q節點的指標域置為空
  157.     p->next=q;  
  158.     p=p->next;//將指標後移
  159. }  
  160. /********************************************************* 
  161. * 功能描述: 錄入航班資訊 
  162. * 輸入引數: 航班各項資訊 
  163. * 輸出引數: 匹配的航班各項資訊 
  164. * 返回值  : 無 
  165. * 其它說明: 無 
  166. *********************************************************/
  167. void add_flight(flightnode *&h)  
  168. {  
  169.     flightnode *p=h;  
  170.     char flight_num[10],start_time[10],end_time[10],start_place[10],end_place[10];  
  171.     int left,ifull,mark=1;  
  172.     float price;  
  173.     for(;p->next!=NULL;p=p->next)  
  174.     {}//移動指標,找到最後一個節點
  175.     while(mark==1)  
  176.     {  
  177.         printf("\t\t請輸入你要增加的航班號:");  
  178.         scanf("%s",flight_num);  
  179.         printf("\t\t請輸入出發地:");  
  180.         scanf("%s",start_place);  
  181.         printf("\t\t請輸入目的地:");  
  182.         scanf("%s",end_place);  
  183.         printf("\t\t請輸入起飛時間:");  
  184.         scanf("%s",start_time);  
  185.         printf("\t\t請輸入抵達時間:");  
  186.         scanf("%s",end_time);  
  187.         printf("\t\t請輸入票價:");  
  188.         scanf("%f",&price);  
  189.         printf("\t\t請輸入剩餘座位數:");  
  190.         scanf("%d",&left);  
  191.         printf("\t\t請輸入是否滿倉(0表示沒有滿倉,1表示已滿倉):");  
  192.         scanf("%d",&ifull);  
  193.         insert_flight(h, flight_num, start_place, end_place, start_time, end_time, left, price, ifull);  
  194.         printf("\t\t增加航班號%s成功!\n",flight_num);  
  195.         printf("\t\t是否繼續錄入航班資訊(1表示繼續錄入,0表示停止錄入)\n");  
  196.         printf("\t\t請輸入:");  
  197.         scanf("%d",&mark);  
  198.     }  
  199. }  
  200. /********************************************************* 
  201. * 功能描述: 訂票 
  202. * 輸入引數: start_place,end_place,客戶各項資訊 
  203. * 輸出引數: 匹配的航班資訊 
  204. * 返回值  : 無 
  205. * 其它說明: 1—訂票或預約  0—失敗 
  206. *********************************************************/
  207. //完成客戶訂票,將客戶結點插入客戶連結串列,並修改相應的航班資訊
  208. int book(flightnode *&h,passengerList *&PList,waitList *WList)  
  209. {  
  210.     char name[20];  
  211.     char ID_num[20];  
  212.     char flight_num[10];  
  213.     char start_place[20];  
  214.     char end_place[20];  
  215.     char phone[20];  
  216.     int ticket_num;  
  217.     int order_num=0;  
  218.     int k;  
  219.     flightnode *p=h->next;  
  220.     printf("\t\t請輸入資訊:\n");  
  221.     printf("\t\t請輸入起飛城市:");  
  222.     scanf("%s",start_place);  
  223.     printf("\t\t請輸入抵達城市:");  
  224.     scanf("%s",end_place);  
  225.     if(place_check(h,start_place,end_place)==1)  
  226.     {  
  227.         printf("\t\t航班號:");  
  228.         scanf("%s",flight_num);  
  229.         while(flight_num==NULL)  
  230.         {  
  231.             printf("航班號不能為空!\n");  
  232.             printf("\t\t航班號:");  
  233.             scanf("%s",flight_num);  
  234.         }  
  235.         while(p!=NULL)  
  236.         {  
  237.             if(strcmp(p->flight_num,flight_num)==0)  
  238.             {  
  239.                 printf("\t\t姓名:");  
  240.                 scanf("%s",name);  
  241.                 printf("\t\t證件號碼:");  
  242.                 scanf("%s",ID_num);  
  243.                 printf("\t\t訂票數量:");  
  244.                 scanf("%d",&ticket_num);  
  245.                 while(name==NULL)  
  246.                 {  
  247.                     printf("客戶姓名不能為空!\n");  
  248.                     printf("\t\t姓名:");  
  249.                     scanf("%s",name);  
  250.                 }  
  251.                 while(ID_num==NULL)  
  252.                 {  
  253.                     printf("客戶證件號碼不能為空!\n");  
  254.                     printf("\t\t證件號碼:");  
  255.                     scanf("%s",ID_num);  
  256.                 }  
  257.                 while(ticket_num==0)  
  258.                 {  
  259.                     printf("客戶訂票數量不能為空!\n");  
  260.                     printf("\t\t訂票數量:");  
  261.                     scanf("%d",&ticket_num);  
  262.                 }  
  263.                 if(p->left>0 && p->left>=ticket_num)  
  264.                 {  
  265.                     insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);  
  266.                     printf("\t\t你應付金額¥%8.2f。\n",p->price*ticket_num);  
  267.                     getch();  
  268.                     printf("\t\t恭喜您,訂票成功!\n");  
  269.                     return 1;  
  270.                 }  
  271.                 else
  272.                 {  
  273.                     printf("\t\t***很遺憾,該航班已滿!***\n");  
  274.                     printf("\t\t***如選擇其他航班請輸入——1\n\t\t***預約請輸入——2\n\t\t***不選則輸入——0***\n");  
  275.                     printf("\t\t輸入數字進行選擇:");  
  276.                     scanf("%d",&k);  
  277.                     if(k==1)  
  278.                     {  
  279.                         printf("\t\t請輸入您選的航班:");  
  280.                         scanf("%s",flight_num);  
  281.                         insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);  
  282.                         printf("\t\t恭喜您,訂票成功!\n");  
  283.                         return 1;  
  284.                     }  
  285.                     elseif(k==2)  
  286.                     {  
  287.                         printf("\t\t請輸入您的手機號:");  
  288.                         scanf("%s",phone);  
  289.                         printf("\t\t請輸入您需要預約的航班號:");  
  290.                         scanf("%s",flight_num);  
  291.                         insert_waitList(WList, name,phone,flight_num, ticket_num,order_num);  
  292.                         printf("\t\t如有退票,會盡快聯絡您!\n");  
  293.                         return 1;  
  294.                     }  
  295.                 }  
  296.             }  
  297.             else
  298.                 p=p->next;  
  299.         }  
  300.         if(p==NULL)  
  301.             printf("\t\t對不起,您輸入的航班不存在!\n");  
  302.     }  
  303.     return 0;  
  304. }  
  305. /********************************************************* 
  306. * 功能描述: 客戶結點插入客戶連結串列,修改航班資訊 
  307. * 輸入引數: 無 
  308. * 輸出引數: 無 
  309. * 返回值  : 無 
  310. * 其它說明: 無 
  311. *********************************************************/
  312. void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num)  
  313. {  
  314.     flightnode *p=h->next;  
  315.     for(;p!=NULL;p=p->next)  
  316.         if(strcmp(p->flight_num,flight_num)==0)  
  317.         {  
  318.             p->left=p->left-ticket_num;  
  319.             if(p->left==0)  
  320.                 p->ifull=1;  
  321.         }  
  322.     passengernode *q=(passengernode *)malloc(sizeof(passengernode));//新建結點,存放新的客戶訂單資訊
  323.     strcpy(q->name,name);  
  324.     strcpy(q->ID_num,ID_num);  
  325.     strcpy(q->flight_num,flight_num);  
  326.     q->ticket_num=ticket_num;  
  327.     q->next=NULL;  
  328.     //將新訂單連線到連結串列中
  329.     PList->rear->next=q;  
  330.     q->order_num=PList->rear->order_num+1;//生成訂單號
  331.     PList->rear=q;  
  332. }  
  333. /********************************************************* 
  334. * 功能描述: 預約客戶結點插入預約客戶佇列 
  335. * 輸入引數: 無 
  336. * 輸出引數: 無 
  337. * 返回值  : 無 
  338. * 其它說明: 無 
  339. *********************************************************/
  340. void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num)  
  341. {  
  342.     waitnode *p=(waitnode *)malloc(sizeof(waitnode));  
  343.     strcpy(p->name,name);  
  344.     strcpy(p->phone,phone);  
  345.     strcpy(p->flight_num,flight_num);  
  346.     p->ticket_num=ticket_num;  
  347.     p->next=NULL;  
  348.     if(WList->rear==NULL)  
  349.     {  
  350.         WList->front=WList->rear=p;  
  351.     }  
  352.     else
  353.     {  
  354.         WList->rear->next=p;  
  355.         p->order_num=WList->rear->order_num+1;//生成預約排隊號
  356.         WList->rear=p;  
  357.     }  
  358. }  
  359. /********************************************************* 
  360. * 功能描述: 提供其他可選航班 
  361. * 輸入引數: 無 
  362. * 輸出引數: 對應航班資訊 
  363. * 返回值  : 1—成功  0—失敗 
  364. * 其它說明: 無 
  365. *********************************************************/
  366. int find_same_flight(flightnode *h,char *flight_num)  
  367. {  
  368.     flightnode *t=h->next,*p=h->next;  
  369.     int mark=0;  
  370.     printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n","航班號","起飛城市","抵達城市","起飛時間","抵達時間","價格","是否滿倉","空座數");  
  371.     while(p!=NULL)  
  372.     {  
  373.         if((strcmp(t->start_place,p->start_place)==0) && (strcmp(t->end_place,p->end_place)==0) && (strcmp(t->flight_num,p->flight_num)!=0))  
  374.         {  
  375.             printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);  
  376.             mark=1;  
  377.         }  
  378.         p=p->next;  
  379.     }  
  380.     if(mark=0)  
  381.     {  
  382.         printf("\t\t抱歉,無可選航班!\n");  
  383.         return 0;  
  384.     }  
  385.     return 1;  
  386. }  
  387. /********************************************************* 
  388. * 功能描述: 退票 
  389. * 輸入引數: name,ID_num 
  390. * 輸出引數: 無 
  391. * 返回值  : 無 
  392. * 其它說明: 無 
  393. *********************************************************/
  394. void cancel(passengerList *&PList, flightnode *&h)  
  395. {  
  396.     char name[20],ID_num[20];  
  397.     printf("\t\t請輸入你的姓名:");  
  398.     scanf("%s",name);  
  399.     printf("\t\t請輸入你的證件號:");  
  400.     scanf("%s",ID_num);  
  401.     delete_passenger(PList,h,name,ID_num);  
  402. }  
  403. /********************************************************* 
  404. * 功能描述: 查詢客戶結點,進行刪除 
  405. * 輸入引數: 無 
  406. * 輸出引數: name,ID_num 
  407. * 返回值  : 1—成功  0—失敗 
  408. * 其它說明: 無 
  409. *********************************************************/
  410. int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num)  
  411. {  
  412.     passengernode *p,*pr=PList->head;//pr指向客戶連結串列的頭結點
  413.     p=pr->next;  
  414.     while(p!=NULL)  
  415.     {  
  416.         if(strcmp(name,p->name)==0 && strcmp(ID_num,p->ID_num)==0)  
  417.         {  
  418.             for(flightnode *f=h->next;f!=NULL;f=f->next)  
  419.             {  
  420.                 if(strcmp(p->flight_num,f->flight_num)==0)  
  421.                 {  
  422.                     f->left=f->left+p->ticket_num;  
  423.                     f->ifull=0;  
  424.                     break;  
  425.                 }  
  426.             }  
  427.             pr->next=p->next;  
  428.             free(p);  
  429.             printf("\t\t客戶%s,%s退票成功!\n",name,ID_num);  
  430.             return 1;  
  431.         }  
  432.         pr=pr->next;  
  433.         p=pr->next;  
  434.     }  
  435.     printf("\t\t無此客戶,無法退票!\n");  
  436.     return 0;  
  437. }  
  438. /********************************************************* 
  439. * 功能描述: 選擇使用何種方式對航班資訊進行查詢 
  440. * 輸入引數: flight_num,start_place,end_place 
  441. * 輸出引數: 無 
  442. * 返回值  : 無 
  443. * 其它說明: 無 
  444. *********************************************************/
  445. void flight_check(flightnode *h)  
  446. {  
  447.     flightnode *p=h->next;  
  448.     char flight_num[10],start_place[20],end_place[20];  
  449.     char a;  
  450.     printf("\t\t請選擇航班查詢方式:\n");  
  451.     printf("\t\t1、按航班號進行查詢:\n");  
  452.     printf("\t\t2、按起飛抵達城市進行查詢:\n");  
  453.     printf("\t\t3、瀏覽全部航班資訊.\n\t\t請輸入:\n");  
  454.     a=getch();  
  455.     printf("%c\n",a);  
  456.     if(a=='1')  
  457.     {  
  458.         printf("\t\t請輸入航班號:");  
  459.         scanf(

    相關推薦

    飛機系統原始碼

    問題及程式碼: /****************************************************  *版權所有(C)2017,張思琦 *檔名稱:飛機訂票系統  *檔案標識:無  *內容摘要:實現錄入航班資訊、訂票、退票、預約、 

    qtp腳本測試飛機系統(代碼)

    num iter update 訂單號 stat ksh ins 計算 check 嗯,以前沒怎麽研究過這個,最近做課設用到了,順便發一下。 有要用的話,自己改一下路徑什麽的。版本qtp10.0 Mainaction Dim AgentName Dim Passwo

    qtp指令碼測試飛機系統(程式碼)

    嗯,以前沒怎麼研究過這個,最近做課設用到了,順便發一下。 有要用的話,自己改一下路徑什麼的。版本qtp10.0 Mainaction Dim AgentName Dim Password Dim DateOfFlight Dim FaxNumber Dim SelectTest Dim Dat

    loadrunner編寫飛機系統(web tours)指令碼

    Exit_Flight(){int Flight_count1,Flight_count2;//Flight_count1,Flight_count2 分別用來儲存2次隨機值int count=0;// count儲存飛機票數量char buffer[1024]={0};char buffer1[1024]=

    [原始碼和文件分享]基於C++的民航系統的設計與實現

    一、需求分析 設計一個民航管理系統,使更廣大的使用者群體可以藉助這個平臺訂飛機票。 C++作為一個面向物件的語言,利用多型性和封裝性可以更好地表達出這些功能,相比 JAVA 等語言,C++具STL,可以表達更強的封裝性。 二、程式的主要功能 登入和註冊使用者,管理員的登入

    計算機畢業設計源碼分享-784雙魚林JSP_SSH2_EasyUI電影院電影票系統

    密碼 訂票 myeclips .sh spring struts 提交 開發 修改 系統開發環境: MyEclipse8.5以上版本 + mysql開發語言:JSP,Java後臺采用技術: struts 2 + Spring + Hibernate (SSH2) 前臺技術:

    火車系統源碼筆記c++

    scanf sea reac read 函數表 tdi 函數 單變量 指向 /* 系統名稱:火車訂票系統 1、插入一個火車信息 2、搜索火車信息 3、預定火車信息 4、修改火車信息 5、顯示火車信息 6、保存火車信息 結構組成 1、火車信息結構體 2、訂票人信息結構體 3

    網上系統

    booking.html: <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <meta name="viewport"

    12306網站網上系統問題淺析與改進建議

    總結網上訂票系統常見的問題如下: 1、 高峰時段無法登陸,提示線上使用者過多 2、 訂單提交成功之後,支付環節出了問題,瀏覽器意外退出,後再登陸,發現登陸不上,無法在規定時間內完成支付,購票失敗 3、 訂單提交反饋時間過長,熱門線路需要等待20分鐘甚至更長時間,才能得到反饋 4、 驗證

    火車系統學習筆記

    /* 系統名稱:火車訂票系統 1、插入一個火車資訊 2、搜尋火車資訊 3、預定火車資訊 4、修改火車資訊 5、顯示火車資訊 6、儲存火車資訊 結構組成 1、火車資訊結構體 2、訂票人資訊結構體 3、火車資訊連結串列節點結構體 4、訂票人的連結串列節點結構體 操作流程: 進入主介面 -》 選擇選單

    C語言課程設計——電影院系統

    nag 表示 重要性 思維 所在 看電影 門面 賬號 播放 1. 課題簡介 大家都愛看電影,現請參考一個熟悉電影票預訂系統,實現C語言版的訂票系統。了解訂票如何實現的。系統主要有2類用戶:管理員用戶和顧客用戶。 管理員用戶登錄系統後,實現電影放映廳信息管理和電影場次信息管理

    測試回顧版-第十一講:Loadrunner8.1自帶系統指令碼實戰1

    1:訂票 vuser_init,錄製登陸 action,一個完整的訂票流程 vuser_end,退出 具體 vuser_init 自動關聯sessionID,設定兩個事務,開啟網頁,登陸 /* ---------------------------------------

    12306火車系統談網站架構優化

    12306.cn網站掛了,被全國人民罵了。我這兩天也在思考這個事,我想以這個事來粗略地和大家討論一下網站效能的問題。因為倉促,而且完全基於本人有限的經驗和了解,所以,如果有什麼問題還請大家一起討論和指正。(這又是一篇長文,只討論效能問題,不討論那些UI,使用者體驗,或

    從奧運系統癱瘓說起——談FastCGI 與IT 架構

     2008年,對於首都人民來說,沒有什麼比奧運會更大的事情了。如何買到一張稱心如意的比賽門票,也成了很多人的一個夢想。然而,在奧運官網搶票購買的時候,這個夢想卻輕易地被網上購票系統的癱瘓擊成碎片,很多充滿熱情的老百姓們也因此鬱悶無比。由於搜狐承擔了奧運的官網,我又在那裡工作過相當長一段時間,很多兄弟搶票失敗

    LR在錄製自帶的系統時,點選flight按鈕時,出現java異常的錯誤的解決辦法

    在控制面板上找到java,打卡java控制面板-高階-java外掛,然後把“啟用下一代java外掛(需要重新啟動瀏覽器)”前面的勾去掉不要選。 因為控制面板開啟java報錯 只能找到C:\Program Files (x86)\Java\jre6\b

    大話鐵道部12306系統雲架構

    模式 align 分享 應用服務器 也不會 春節 應用層 間接 很大的 原文地址:http://blog.csdn.net/xsc2001/article/details/8521069一、引言 隨著春節的臨近,大家都忙著從網上刷票,

    Zoho CRM系統軟體公司業務增長

    公司概況 英國的BookingLive公司創立於2007年,是一家線上訂票(比如訂餐館、訂酒店)軟體提供商,為各種規模的企業提供多種語言版本的訂票系統。典型客戶有BBC、BMW等。 面臨問題 剛開始公司和業務規模比較小的時候,公司就意識到需要一套CRM客戶關係管理軟體。因為潛在客戶

    多線程的兩種方法(賣系統展示)

    窗口 public str start pub new end getname .get public class MyThread1 implements Runnable{ int i=20; String name; public My

    12306火車票失敗!您的身份信息未經核驗,一般人是不能的,我了,可是沒成功。。。

    ext con efault jsb fill ast edit 技術 post 12306火車票訂票失敗!您的身份信息未經核驗。一般人是不能訂票的,我訂了,可是沒成功。。。 上圖哈,未經核驗能能夠訂票,只是出票失敗了。看來12306不是吃幹飯的

    電子工系統|RFID服裝實時生產管理系統|工廠制衣服裝生產管理軟件工廠車間生產管理軟件

    電子工票系統|RFID服裝實時生產管理電子工票系統|RFID服裝實時生產管理系統|工廠制衣服裝生產管理軟件工廠車間生產管理軟件電子工票系統電子工票系統就是用電子的RFID卡來取代條碼紙工票的系統。準確的稱謂應該是RFID EPRS(Electronic Productive Recording System)