您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用C++實現航空訂票系統課程,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
具體內容如下
1.錄入功能
可以錄入航班信息(如航班號,起飛降落時間,城市,座位數,票價)
2.查詢功能
可以查詢航班的各項信息(如根據航班號,起飛降落城市查找航班并顯示航班信息)
3.修改刪除功能
可以修改刪除航班的信息
4.追加航線
在原本的航線之后可以繼續添加航線方便操作
5.訂票功能
可以訂票并且記錄下乘客的相關信息(如姓名,身份證號碼)
6.退票功能
可以退票并且記錄乘客的相關信息以及退票信息
#include<iostream> #include<fstream> #include<stdlib.h> #include<string.h> using namespace std; typedef struct Node { int hangbanhao;//航班號 char qifeichengshi[10];//起飛城市 char jiangluochengshi[10];//降落城市 char qifeishijian[10];//起飛時間 char jiangluoshijian[10];//降落時間 int zuoweishu;//座位數 int piaojia;//票價 struct Node *next;//結點的指針域 }LNode,*LinkList;//定義航班信息 LinkList為指向結構體LNode的指針類型 typedef struct CK { char name[10];//乘客姓名 char id[18];//乘客身份證號 struct CK *next;//結點的指針域 }ck,*cke;//乘客信息 void import(int n,LinkList &L)//錄入航班函數: n為所要錄入航班的數量: {//建立一個帶頭結點的單鏈表L L=(LinkList)malloc(sizeof(LNode));//申請表空間 L->next=NULL;//頭結點的指針域置空 LNode * tail=L;//將尾賦給尾指針,等價LinkList tail=L; for(int i=0; i<n; i++)//逐個賦值 { LNode *p=(LinkList)malloc(sizeof(LNode));//創建一個p結點 cout<<"請輸入第"<<i+1<<"個航班的航班號 "; cin>>p->hangbanhao; cout<<"請輸入第"<<i+1<<"個航班的起飛城市 "; cin>>p->qifeichengshi; cout<<"請輸入第"<<i+1<<"個航班的降落城市 "; cin>>p->jiangluochengshi; cout<<"請輸入第"<<i+1<<"個航班的起飛時間 "; cin>>p->qifeishijian; cout<<"請輸入第"<<i+1<<"個航班的降落時間 "; cin>>p->jiangluoshijian; cout<<"請輸入第"<<i+1<<"個航班的座位數 "; cin>>p->zuoweishu; cout<<"請輸入第"<<i+1<<"個航班的票價"; cin>>p->piaojia; p->next=NULL;//頭結點的指針域置空 tail->next=p;//將新結點插入尾部 tail=p;//插入的結點變為尾結點,尾插法 } } //寫入本地文件,并讀取輸出顯示 void show_L(LinkList &L)//輸出瀏覽機票信息 { ofstream out("out.txt");//實例化一個對象 if (out.is_open()) { LinkList p=L->next; while(p) { out<<"航班號:"; out<<p->hangbanhao; out<<" 起飛城市:"; out <<p->qifeichengshi; out<<" 降落城市:"; out <<p->jiangluochengshi; out<<" 起飛時間:"; out <<p->qifeishijian; out<<" 降落時間:"; out <<p->jiangluoshijian; out<<" 座位數:"; out<<p->zuoweishu; out<<" 票價:"; out<<p->piaojia; out<< "\n";//用于換行,是下面in.getline的關鍵 p=p->next; } } out.close(); //寫完 char buffer[256]; ifstream in("out.txt"); if (! in.is_open()) { cout << "Error opening file"; exit (1); } while (!in.eof() ) { in.getline (buffer,100); cout << buffer << endl; } } //按航班號查找 LinkList GetElem_L(LinkList &L,int e) { LinkList p=L->next; while(p) { if(p->hangbanhao!=e) p=p->next; else return p; } return 0; } //按航班起降城市查找 LinkList GetElem_Lc(LinkList &L,char qi[10],char ji[10]) { LinkList p=L->next; while(p) { if(strcmp(p->qifeichengshi,qi)!=0||strcmp(p->jiangluochengshi,ji)!=0) p=p->next; else return p; } return 0; } //刪除 int ListDelete_L(LinkList &L,int e){ LinkList p=L; while(p->next&&p->next->hangbanhao!=e){ p=p->next;//直到查找到要刪除的結點 } if(!p->next) return 0; LinkList q=p->next; p->next=q->next;//p->next=p->next->next; free(q);//本題q是需要刪除的結點 return 1; } //插入 int ListInsert_L(LinkList &L,int i){ LinkList p=L;//i為插入的位置 int j=0; while(p&&j<i-1){ p=p->next; ++j; } if(!p||j>i-1) return 0; LNode *s=(LinkList)malloc(sizeof(LNode)); cout<<"輸入航班號:"; cin>>s->hangbanhao; cout<<"輸入起飛城市:"; cin>>s->qifeichengshi; cout<<"輸入降落城市:"; cin>>s->jiangluochengshi; cout<<"輸入起飛時間:"; cin>>s->qifeishijian; cout<<"輸入降落時間:"; cin>>s->jiangluoshijian; cout<<"輸入座位數:"; cin>>s->zuoweishu; cout<<"輸入票價:"; cin>>s->piaojia; s->next=p->next; p->next=s;//s->next=p->next;p->next=s; return 1; } //修改 LinkList xiugai(LinkList &L,int yxg) { LinkList q=L->next; while(q) { if(q->hangbanhao!=yxg) q=q->next; else return q; } return 0; } //乘客信息錄入 void importren(int n,cke &C)//錄入航班函數: n為所要錄入航班的數量: { C=(cke)malloc(sizeof(ck)); C->next=NULL; ck*ta=C; for(int i=0; i<n; i++) { ck *p=(cke)malloc(sizeof(ck));//就是創建一個p結點,關鍵就是寫法,LNdoe *p; cout<<"請輸入第"<<i+1<<"個乘客的姓名 "; cin>>p->name; cout<<"請輸入第"<<i+1<<"個航班的身份證ID "; cin>>p->id; p->next=NULL; ta->next=p; ta=p;//尾插法,根據循環畫圖可知,tail指針始終在最后 } } //訂票乘客信息和航班信息寫入本地和讀取 void show_dp(cke &C,LinkList &R) { ofstream out("dinpiao.txt");//實例化一個對象 if (out.is_open()) { cke p=C->next; while(p){ out<<"姓名 "; out<<p->name; out<<" 身份證ID "; out<<p->id; out<< "\n";//用于換行,是下面in.getline的關鍵 p=p->next; } if(R->zuoweishu-1>=0) { out<<"航班號:"<<R->hangbanhao; out<<" 起飛城市:"<<R->qifeichengshi; out<<" 降落城市:"<<R->jiangluochengshi; out<<" 起飛時間:"<<R->qifeishijian; out<<" 降落時間:"<<R->jiangluoshijian; out<<" 座位數:"<<R->zuoweishu-1;//訂票之后座位數減一 out<<" 票價:"<<R->piaojia; out<< "\n";//用于換行,是下面in.getline的關鍵 out<<"訂票成功"; out<< "\n";//用于換行,是下面in.getline的關鍵 } else { out<<"航班號:"<<R->hangbanhao; out<<" 起飛城市:"<<R->qifeichengshi; out<<" 降落城市:"<<R->jiangluochengshi; out<<" 起飛時間:"<<R->qifeishijian; out<<" 降落時間:"<<R->jiangluoshijian; out<<" 座位數:"<<R->zuoweishu; out<<" 票價:"<<R->piaojia; out<< "\n";//用于換行,是下面in.getline的關鍵 out<<"該航班暫無票,請選擇其他航班"; out<< "\n";//用于換行,是下面in.getline的關鍵 } } out.close(); //寫完 char buffer[256]; ifstream in("dinpiao.txt"); if (! in.is_open()) { cout << "Error opening file"; exit (1); } while (!in.eof() ) { in.getline (buffer,100); cout << buffer << endl; } } //退票乘客信息和航班信息寫入本地和讀取 void show_tp(cke &C,LinkList &R) { ofstream out("dinpiao.txt");//實例化一個對象 if (out.is_open()) { cke p=C->next; while(p){ out<<"姓名 "; out<<p->name; out<<"身份證ID "; out<<p->id; out<< "\n";//用于換行,是下面in.getline的關鍵 p=p->next; } out<<"航班號 "<<R->hangbanhao; out<<" 起飛城市:"<<R->qifeichengshi; out<<" 降落城市:"<<R->jiangluochengshi; out<<" 起飛時間:"<<R->qifeishijian; out<<" 降落時間:"<<R->jiangluoshijian; out<<" 座位數:"<<R->zuoweishu;//退票之后不需要加1,用最初的座位數; out<<" 票價:"<<R->piaojia; out<< "\n";//用于換行,是下面in.getline的關鍵 out<<"退票成功"; out<< "\n";//用于換行,是下面in.getline的關鍵 } out.close(); //寫完 char buffer[256]; ifstream in("dinpiao.txt"); if (! in.is_open()) { cout << "Error opening file"; exit (1); } while (!in.eof() ) { in.getline (buffer,100); cout << buffer << endl; } } void menu()//顯示菜單界面 { cout<<"=================================歡迎使用航空訂票系統==============================="<<endl; cout<<"* 1請先錄入航班信息 *"<<endl; cout<<"* 2根據航班號查找航班 *"<<endl; cout<<"* 3根據起降城市查找航班 *"<<endl; cout<<"* 4刪除航班 *"<<endl; cout<<"* 5插入航班 *"<<endl; cout<<"* 6修改航班 *"<<endl; cout<<"* 7訂票錄入乘客信息 *"<<endl; cout<<"* 8退票 *"<<endl; cout<<"===================================================================================="<<endl; } int main() { LinkList L;//L是指針 航班 cke C;//乘客 while(1) { menu(); int caozuo; cout<<"請選擇操作"; cin>>caozuo; switch(caozuo) { case 1: //創建 int num; cout<<"請輸入要錄入的航班數:"; cin>>num; cout<<endl; import(num,L);//錄入航班函數: n為所要錄入航班的數量: cout<<endl; cout<<"航班信息錄入成功"; cout<<endl<<endl; //寫入本地文件,并讀取輸出顯示 show_L(L); break; case 2: //根據航班號查找 int dchbh;//根據航班號查找 printf("請輸入待查航班號:"); cin>>dchbh; LinkList p; p=GetElem_L(L,dchbh);//查找 cout<<"待查航班為:"; cout<<"航班號:"<<p->hangbanhao; cout<<" 起飛城市:"<<p->qifeichengshi; cout<<" 降落城市:"<<p->jiangluochengshi; cout<<" 起飛時間:"<<p->qifeishijian; cout<<" 降落時間:"<<p->jiangluoshijian; cout<<" 座位數:"<<p->zuoweishu; cout<<" 票價:"<<p->piaojia; cout<<endl<<endl; break; case 3: //根據起降城市查找 char qi[10]; char ji[10]; printf("請輸入待查航班起降城市:"); cout<<"輸入起飛城市:"; cin>>qi; cout<<"輸入降落城市:"; cin>>ji; LinkList J; J=GetElem_Lc(L,qi,ji);//查找 cout<<"待查航班為:"; cout<<"航班號:"<<J->hangbanhao; cout<<" 起飛城市:"<<J->qifeichengshi; cout<<" 降落城市:"<<J->jiangluochengshi; cout<<" 起飛時間:"<<J->qifeishijian; cout<<" 降落時間:"<<J->jiangluoshijian; cout<<" 座位數:"<<J->zuoweishu; cout<<" 票價:"<<J->piaojia; cout<<endl<<endl; break; case 4: //刪除 int shanchu; printf("請輸入要刪除的航班號:"); scanf("%d",&shanchu); ListDelete_L(L,shanchu);//刪除 show_L(L); cout<<endl<<endl; break; case 5: //插入 //這里位置始終在第一行 ListInsert_L(L,1);//插入 show_L(L); cout<<endl<<endl; break; case 6: //修改 printf("請輸入要修改的航班號:"); int yxg; cin>>yxg; LinkList q; q=xiugai(L,yxg);//修改 cout<<"航班號修改為:"; cin>>q->hangbanhao; cout<<"航班起飛城市修改為:"; cin>>q->qifeichengshi; cout<<"航班降落城市修改為:"; cin>>q->jiangluochengshi; cout<<"航班起飛時間修改為:"; cin>>q->qifeishijian; cout<<"航班降落時間修改為:"; cin>>q->jiangluoshijian; cout<<"航班座位數修改為:"; cin>>q->zuoweishu; cout<<"航班票價修改為:"; cin>>q->piaojia; show_L(L); cout<<endl<<endl; break; case 7: //訂票 int renshu; cout<<"請選擇您要訂票的人數:"; cin>>renshu; cout<<endl; importren(renshu,C);//錄入乘客信息 cout<<endl; cout<<"乘客信息錄入成功"; cout<<endl; int m; cout<<"請輸入您要訂的航班號:"; cin>>m; cout<<endl<<endl; LinkList R; R=GetElem_L(L,m);//查找乘客訂的航班 show_dp(C,R);//寫入本地文件,并讀取輸出顯示 cout<<endl<<endl; break; case 8: //退票 cout<<"請輸入您要退票的航班號:"; int yt; cin>>yt; cout<<endl<<endl; LinkList K; K=GetElem_L(L,yt);//查找乘客訂的航班 show_tp(C,K);//寫入本地文件,并讀取輸出顯示 cout<<endl<<endl; break; }//swith的大括號 }//while的大括號 return 0; }//主函數的大括號
1、錄入航班信息
2、查找航班(根據航班號、起降城市查找航班)
3、刪除航班
4、插入航班
5、修改航班
6、訂票、退票
以上是“如何使用C++實現航空訂票系統課程”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。