日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

开发简易飞机订票系统(C/C++)

發布時間:2023/12/10 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发简易飞机订票系统(C/C++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

概述:

該系統包括如下功能模塊:

進一步,該系統還可以提供如下高級應用:

[測試數據]

結果展示:

乘客功能??

管理員功能:

?總結:

代碼部分

飛機訂票系統.cpp

Flight.h


概述:

設計一個飛機訂票系統,完成對航空客運訂票的業務管理。

該系統包括如下功能模塊:

航班信息瀏覽、查詢航線、客票預訂和辦理退票等。?

(1)?? ?錄入:可以錄入航班情況(數據可以存儲在一個數據文件中,數據結構、具體數據自定);
(2)?? ?航班信息瀏覽:預覽已經建立的全部航線的相關信息;
(3)?? ?查詢:可以查詢某個航線的情況(如輸入航班號,可以查詢起、降時間,起飛、抵達城市,航班票價,票價折扣,所屬航空公司、確定航班是否滿倉等);
(4)?? ?訂票:(訂票情況可以存在一個數據文件中,結構自己設定)可以訂票,如果該航班已經無票,可以提供相關可選擇航班;
(5)?? ?退票: 可退票,退票后修改相關數據文件;


進一步,該系統還可以提供如下高級應用:

(1)?? ?排序:可以根據票價、時間等信息對相關航線(如相同起飛、抵達城市航線)進行排序;
(2)?? ?合理設計線路:輸入兩個城市名稱,可以根據條件(如出發、到達時間)設計這兩座城市之間可能的線路,進而推薦合理線路;
(3)?? ?輸出:以城市作為頂點,航線作為邊(若兩個城市之間具有多條線路,則選取當前最低票價航線),選擇合適形式輸出航線網絡;
(4)?? ?推薦最優化線路:以機票價錢低作為最優量度標準,設計兩座城市之間最優線路并輸出之;

[測試數據]

可以參考實際航空公司信息或者自行編制虛擬數據作為測試數據,要求城市數目不小于 30,航線數目不小于 600。

(數據信息預覽)

結果展示:

登錄界面

乘客功能??

航線查詢(時間排序,價格排序,綜合排序)

?

綜合排序按? 時間與價格3:2的比例來進行

訂票

?從當前城市出發到各個城市的推薦最短路線(以價錢最低排序)

?

管理員功能:

?1.航班信息

3.錄入信息?

航線信息

?

?總結:

飛機訂票系統關鍵在于能否正確的,合理的為購票人提供合理可行的方案,并按票價,時間等進行排序后合理輸出。其次在于對數據的使用及存儲。
除此之外所有的功能從購票人和管理者兩個方面展開設計,遵循以實際情況為準的原則,在數據方面,功能方面,界面方面設計合理得當,且方便。構造航線信息,購票人信息等主要鏈表,航線信息為更適合圖的鄰接表,便于查找兩座城市之間的所有可行路線以及,經過排序等處理為用戶提供最優方案,所有數據經過讀寫文件操作來實現,保證數據的穩定,提高程序的復用性,訂票退票時以鏈表操作為主,并及時將訂票的信息寫入文件,在合作寫程序時,統一結構體的信息后,函數部分全部放入頭文件中,.cpp文件只調用函數,提高合作的效率

數據結構選擇、算法設計:
數據結構選擇了結構體和鏈表,方便存儲信息以及增加或者刪除航線采用鄰接表來存儲圖,找出兩點最短路徑。
排序時采用冒泡排序。(穩定)
讀寫文件操作。
鏈表的增加刪除遍歷操作。

代碼部分

飛機訂票系統.cpp

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<time.h> #include<windows.h> #include<iostream> #include "Flight.h" using namespace std; int main() {readFile();readpassage();do{int flag=1;switch(login()){case 1:/*乘客界面*/system("pause");system("cls");do{switch(UI()){case 1:/*(3)根據出發地和目的地查詢航班*/system("cls");query();system("pause");system("cls");break;case 2:/*(4)訂票*/system("cls");booking();system("pause");system("cls");break;case 3:/*(5)退票*/system("cls");refund();system("pause");system("cls");break;case 4:/*(5)推薦路線*/system("cls");recommend(); system("pause");system("cls");break;case 0:/*退出登錄,返回上一層*/flag=0;system("cls");}}while(flag);break;case 2:/*管理員界面*/system("pause");system("cls");do{switch(administrator()){case 1:/*(2)查看所有航班信息*/system("cls");browse();system("pause");system("cls");break;case 2:/*查看乘客信息*/system("cls");//client_list();system("pause");system("cls");break;case 3:/*(1)錄入*/system("cls");add();system("pause");system("cls");break;case 4:/*(3)根據航班號查詢某個航線信息*/system("cls");query_administrator();system("pause");system("cls");break;case 0:/*退出登錄,返回上一層*/flag=0;system("cls");}}while(flag);}}while(1);return 0; }

Flight.h

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<time.h> #include<windows.h> #include<iostream> #ifndef FLIGHT_H_INCLUDED #define FLIGHT_H_INCLUDED #include<iostream> using namespace std;int num; char Air_Company[20]="中國航空"; int Date[3]; int login(); //用戶登錄 char Name[20]=""; /*用于用戶登錄的姓名*/ int kk;struct Airline {int Flight;// 航班號char starting[20]; //出發城市char Destination[20];// 到達城市int Boarding_Time_hour;// 出發時間int Boarding_Time_minute;int Landing_Time_hour;// 落地時間int Landing_Time_minute;//int Capacity_VIP; // 頭等艙載客量int Capacity_VIP_now;int Capacity_VIP_day[3];// 頭等艙現有載客量int Capacity_Economy; // 經濟艙載客量int Capacity_Economy_now;int Capacity_Economy_day[3];// 經濟艙現有載客量int Air_price;//頭等艙票價是經濟艙的1.5倍float Air_discount;int fly_time;struct Airline *next; }; typedef struct Airline *link;struct headnode // 表頭結點 {char name[20];// 出發城市link first;// 初始化大問題 } headnode[30];typedef struct Booking {char Name[20];char Flight[2][5];// 航班號int month;int day;struct Booking *next;float price;//支付價格 int flag;//0為直達,1為中轉 }Book; Book aaa;Book*head=&aaa;Book*tail=&aaa;//購票人鏈表 struct information {bool flag;//如果flag==true,有中轉點char ch1[20];//起點char ch2[20];//中轉點,char ch3[20];//終點int price;int time;int flight[2];int price1;int price2;int Boarding_hour;//起飛時間int Boardint_min;int Landing_hour;//到達時間int Landing_min;int count=1;//排序用}info[30],infotime[30],infoprice[30],infoevenout[30];//--------------------------------------------------------------------------------------------- //函數部分 void get_time() //獲取當前時間 ,并得到三天的日期 {time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);Date[0]=p->tm_mday+(1+p->tm_mon)*100;Date[1]=Date[0]+1;Date[2]=Date[1]+1;printf("\n當前時間:%d 月 %d 日\n",1+p->tm_mon,p->tm_mday); } void Initial_headnode() {for(int i=0; i<30; i++)headnode[i].first=NULL; }int Count_time(link p) //計算飛行時間 {int a=p->Boarding_Time_hour;int b=p->Boarding_Time_minute;int c=p->Landing_Time_hour;int d=p->Landing_Time_minute;p->fly_time=(c-a)*60+d-b;if(p->fly_time<=60)p->fly_time+=24*60;if(p->fly_time<60)p->fly_time+=24*60;return p->fly_time; }void Date_passager(link p) //隨機生成當前載客量 {p->Capacity_Economy_now=rand()%13+238;p->Capacity_VIP_now=rand()%7+44; }void readpassage() {FILE *f=fopen("name.txt","r");if(NULL == f){return ;}char ch=fgetc(f);if(ch==EOF||ch=='0')return;Book *p=new Book;int k,m;fscanf(f,"%d",&k); kk=k;for(int i=0;i<k;i++){fscanf(f,"%d",&p->flag);fscanf(f,"%s",p->Name);fscanf(f,"%s",p->Flight[0]);if(p->flag==1)fscanf(f,"%s",p->Flight[1]);fscanf(f,"%f",&p->price);p->next=NULL;tail->next=p;tail=p;}fclose(f); }void writepassage() {FILE *w=fopen("name.txt","w");fprintf(w,"%d\n",kk);Book* p=head->next;while(p){fprintf(w,"%d ",p->flag);fprintf(w,"%s ",p->Name);fprintf(w,"%.5s ",p->Flight[0]);if(p->flag==1)fprintf(w,"%s ",p->Flight[1]);fprintf(w,"%.2f ",p->price);fprintf(w,"\n");p=p->next;}fclose(w);}void readFile() {FILE *f=fopen("city.txt","r");int a=0;Initial_headnode();while(a<30){fscanf(f,"%s",headnode[a].name);a++;}fclose(f);FILE *ff=fopen("data.txt","r");a=0;FILE *f1=fopen("Date1.txt","r");FILE *f2=fopen("Date2.txt","r");FILE *f3=fopen("Date3.txt","r");while(a<600){link p=(link)malloc(sizeof(struct Airline));fscanf(ff,"%d",&p->Flight);fscanf(ff,"%s",p->starting);fscanf(ff,"%s",p->Destination);fscanf(ff,"%d",&p->Boarding_Time_hour);fscanf(ff,"%d",&p->Boarding_Time_minute);fscanf(ff,"%d",&p->Landing_Time_hour);fscanf(ff,"%d",&p->Landing_Time_minute);fscanf(ff,"%d",&p->Capacity_VIP_now);fscanf(ff,"%d",&p->Capacity_VIP);fscanf(ff,"%d",&p->Capacity_Economy_now);fscanf(ff,"%d",&p->Capacity_Economy);fscanf(ff,"%d",&p->Air_price);fscanf(ff,"%f",&p->Air_discount);p->fly_time=Count_time(p);fscanf(f1,"%d",&p->Capacity_VIP_day[0]);fscanf(f1,"%d",&p->Capacity_Economy_day[0]);fscanf(f2,"%d",&p->Capacity_VIP_day[1]);fscanf(f2,"%d",&p->Capacity_Economy_day[1]);fscanf(f3,"%d",&p->Capacity_VIP_day[2]);fscanf(f3,"%d",&p->Capacity_Economy_day[2]);//printf(" %d %.2d : %0.2d\n",p->fly_time,p->fly_time/60,p->fly_time%60);//Date_passager(p);//printf("%d %d \n",p->Capacity_VIP_now,p->Capacity_Economy_now);p->next=NULL;int i=(p->Flight)/1000;link q=headnode[i].first;if(q==NULL){headnode[i].first=p;}else{while(q->next!=NULL){q=q->next;}q->next=p;}a++;}fclose(ff);fclose(f1);fclose(f2);fclose(f3); } void FindPath(char ch1[],char ch2[])//找到兩個城市之間的所有路徑 {num=0;int Path;int a;for(int i=0;i<30;i++){if(strcmp(headnode[i].name,ch1)==0){a=i;break;}}link p=headnode[a].first;while(p){if(strcmp(p->Destination,ch2)==0){info[num].flag=false;strcpy(info[num].ch1,ch1);strcpy(info[num].ch3,ch2);info[num].price=p->Air_price*p->Air_discount;info[num].time=p->fly_time;info[num].flight[0]=p->Flight;info[num].Boarding_hour=p->Boarding_Time_hour;info[num].Boardint_min=p->Boarding_Time_minute;info[num].Landing_hour=p->Landing_Time_hour;info[num].Landing_min=p->Landing_Time_minute;num++;}else{int b;for(int i=0; i<30; i++){if(strcmp(p->Destination,headnode[i].name)==0){b=i;break;}}link q=headnode[b].first;while(q){if(strcmp(q->Destination,ch2)==0){info[num].flag=true;strcpy(info[num].ch1,ch1);strcpy(info[num].ch2,headnode[b].name);strcpy(info[num].ch3,ch2);info[num].price=p->Air_price*p->Air_discount+q->Air_price*q->Air_discount;info[num].price1=p->Air_price*p->Air_discount;info[num].Boarding_hour=p->Boarding_Time_hour;info[num].Boardint_min=p->Boarding_Time_minute;info[num].flight[0]=p->Flight;info[num].price2=q->Air_price*q->Air_discount;info[num].Landing_hour=q->Landing_Time_hour;info[num].Landing_min=q->Landing_Time_minute;info[num].flight[1]=q->Flight;info[num].time=p->fly_time+q->fly_time;int A=p->Landing_Time_hour*24+p->Landing_Time_minute;int B=q->Boarding_Time_hour*24+q->Boarding_Time_minute;if(B-A<0){info[num].time+=B-A+24*60;}if(B-A>=0){info[num].time+=B-A;}num++;break;}q=q->next;}}p=p->next;} }void printfpath()//輸出路徑 {for(int i=0;i<num;i++){printf("%d ",info[i].flag);if(info[i].flag==0){printf("%s %s %d %d\n",info[i].ch1,info[i].ch3,info[i].price,info[i].time);}if(info[i].flag==1){printf("%s %s %s %d %d\n",info[i].ch1,info[i].ch2,info[i].ch3,info[i].price,info[i].time);}} }void sortprice(){int t=0;for(int i=0; i<num; i++){info[i].count=1;}for(int z=0; z<num; z++){int min=10000;for(int i=0; i<num; i++) //找最小值{if(min>info[i].price&&info[i].count!=0){min=info[i].price;}}for(int i=0; i<num; i++){if(min==info[i].price&&info[i].count!=0){info[i].count=0;infoprice[t]=info[i];t++;break;}}}for(int i=0; i<num; i++){info[i].count=1;}}void printfpathprice()//輸出路徑 {printf("以下是按照價格排序的最短航線:\n");printf("--------------------------------------------\n");printf("|始發地 | 中轉站 | 目的地 |票價|時間|\n");printf("--------------------------------------------\n");for(int i=0;i<num;i++){printf("|%-10s|%-10s|%-10s|%d|%4d|\n",infoprice[i].ch1,infoprice[i].ch2,infoprice[i].ch3,infoprice[i].price,infoprice[i].time);printf("--------------------------------------------\n");} }void sorttime(){int t=0;for(int i=0; i<num; i++){info[i].count=1;}for(int z=0; z<num; z++){int min=10000;for(int i=0; i<num; i++) //找最小值{if(min>info[i].time&&info[i].count!=0){min=info[i].time;}}for(int i=0; i<num; i++){if(min==info[i].time&&info[i].count!=0){info[i].count=0;infotime[t]=info[i];t++;break;}}}for(int i=0; i<num; i++){info[i].count=1;} }void printfpathtime()//輸出路徑 {printf("以下是按照時間排序的最短航線:\n");printf("--------------------------------------------\n");printf("|始發地 | 中轉站 | 目的地 |票價|時間|\n");printf("--------------------------------------------\n");for(int i=0;i<num;i++){printf("|%-10s|%-10s|%-10s|%d|%4d|\n",infotime[i].ch1,infotime[i].ch2,infotime[i].ch3,infotime[i].price,infotime[i].time);printf("--------------------------------------------\n");} }void sortevenout(){int t=0;for(int i=0; i<num; i++){info[i].count=1;}for(int z=0; z<num; z++){int min=100000;for(int i=0; i<num; i++) //找最小值{if(min>info[i].time*3+info[i].price*2&&info[i].count!=0){min=info[i].time*3+info[i].price*2;}}for(int i=0; i<num; i++){if(min==info[i].time*3+info[i].price*2&&info[i].count!=0){info[i].count=0;infoevenout[t]=info[i];t++;break;}}}for(int i=0; i<num; i++){info[i].count=1;} }void printfpathevenout()//輸出路徑 {printf("以下是按照綜合排序的最短航線:\n");printf("--------------------------------------------\n");printf("|始發地 | 中轉站 | 目的地 |票價|時間|\n");printf("--------------------------------------------\n");for(int i=0;i<num;i++){printf("|%-10s|%-10s|%-10s|%d|%4d|\n",infoevenout[i].ch1,infoevenout[i].ch2,infoevenout[i].ch3,infoevenout[i].price,infoevenout[i].time);printf("--------------------------------------------\n");} }link find_Airline(char ch[]) {int a=(ch[0]-48)*10+ch[1]-48;int b=(ch[3]-48)*10+ch[4]-48;link p=headnode[a].first;while(p){if(strcmp(p->Destination,headnode[b].name)==0){break;}p=p->next;}return p; } void getinfo_Flight(char ch[])//用航班號查詢 {//printf("%s",ch);//printf("%d\n",(int)ch);//int n;int a=(ch[0]-48)*10+ch[1]-48;int b=(ch[3]-48)*10+ch[4]-48;link p=headnode[a].first;while(p){if(strcmp(p->Destination,headnode[b].name)==0){break;}p=p->next;}printf("%.2d:%.2d %.2d:%.2d %s %s %d %.2f %s ",p->Boarding_Time_hour,p->Boarding_Time_minute,p->Landing_Time_hour,p->Landing_Time_minute,headnode[a].name,p->Destination,p->Air_price,p->Air_discount,Air_Company);/*if(p->Capacity_Economy_now<p->Capacity_Economy){printf("經濟艙未滿艙 ");}if(p->Capacity_Economy_now==p->Capacity_Economy){printf("經濟艙已滿艙 ");}if(p->Capacity_VIP_now<p->Capacity_VIP){printf("頭等艙未滿艙 ");}if(p->Capacity_VIP_now==p->Capacity_VIP){printf("頭等艙已滿艙 ");} */printf("\n");return ; }void printf_Network(char ch[])//輸出航線網絡 {printf("%s",ch);for(int i=0; i<30; i++){if(strcmp(ch,headnode[i].name)==0){continue;}printf("\t-->");FindPath(ch,headnode[i].name);sortprice();if(infoprice[0].flag==false){printf("\t%d\t-->\t%s\t\n",infoprice[0].price,infoprice[0].ch3);}else{printf("\t%d\t-->\t%s\t-->\t%d\t-->\t%s\t\n",infoprice[0].price1,infoprice[0].ch2,infoprice[0].price2,infoprice[0].ch3);}}}void showcity()//顯示城市的名字 {FILE*f=fopen("city.txt","r");for(int i=0;i<10;i++){char n[20];fscanf(f,"%s",n);printf("%-12s",n);}printf("\n");for(int i=10;i<20;i++){char n[20];fscanf(f,"%s",n);printf("%-12s",n);}printf("\n");for(int i=20;i<30;i++){char n[20];fscanf(f,"%s",n);printf("%-12s",n);}printf("\n");fclose(f); } void booking() //訂票函數 {char Airnumber[2][5];//航班號 int k;printf("\t\t請根據查詢結果輸入航班號:\n");printf("購買直達請輸入1,(如需購買中轉請輸入2)\n");scanf("%d",&k);scanf("%s",Airnumber[0]);link p=find_Airline(Airnumber[0]);while(p==NULL){printf("請輸入正確的航班信息:\n");scanf("%s",Airnumber[0]);p=find_Airline(Airnumber[0]);} get_time() ;//獲取當前日期 printf("\t\t請輸入購票日期(限購日期為即日起三天):");int month,day;scanf("%d %d",&month,&day); int mm=month*100+day-Date[0];float price;if(k==2){scanf("%s",Airnumber[1]);link q=find_Airline(Airnumber[1]);while(q==NULL){printf("請輸入正確的航班信息:\n");scanf("%s",Airnumber[1]);q=find_Airline(Airnumber[1]);} }printf("\t\t請確認航班信息:\n");price =(float)p->Air_price*p->Air_discount;printf("航班號:%.5d ",p->Flight);cout<<"出發地:"<<p->starting<<" 目的地:"<<p->Destination;printf(" 出發時間:%d:%.2d",p->Boarding_Time_hour,p->Boarding_Time_minute);printf(" 到達時間:%d:%.2d",p->Landing_Time_hour,p->Landing_Time_minute);printf(" 頭等艙:%d/%d",p->Capacity_VIP_day[mm],p->Capacity_VIP);printf(" 經濟艙:%d/%d",p->Capacity_Economy_day[mm],p->Capacity_Economy);if(p->Capacity_VIP_day[mm]==p->Capacity_VIP)printf(" vip已滿倉"); else printf(" vip未滿倉");if(p->Capacity_Economy_day[mm]==p->Capacity_Economy) printf(" 經濟艙已滿倉"); else printf(" 經濟艙未滿倉"); if(p->Capacity_VIP_day[mm]==p->Capacity_VIP&&p->Capacity_Economy_day[mm]==p->Capacity_Economy){printf("無法購票!");return;} cout<<" 票價:"<<p->Air_price<<"元 折扣:"<<p->Air_discount*100<<"折"<<" 航空公司:"<<Air_Company;cout<<endl<<endl; if(k==2){link q=find_Airline(Airnumber[1]);price+=(float)q->Air_price*q->Air_discount; printf("航班號:%.5d ",q->Flight);cout<<"出發地:"<<q->starting<<" 目的地:"<<q->Destination;printf(" 出發時間:%d:%.2d",q->Boarding_Time_hour,q->Boarding_Time_minute);printf(" 到達時間:%d:%.2d",q->Landing_Time_hour,q->Landing_Time_minute);printf(" 頭等艙:%d/%d",q->Capacity_VIP_day[mm],q->Capacity_VIP);printf(" 經濟艙:%d/%d",q->Capacity_Economy_day[mm],q->Capacity_Economy);if(q->Capacity_VIP_day[mm]==q->Capacity_VIP)printf(" vip已滿倉\n"); else printf(" vip未滿倉\n");if(q->Capacity_Economy_day[mm]==q->Capacity_Economy) printf(" 經濟艙已滿倉\n"); else printf(" 經濟艙未滿倉\n");if(q->Capacity_VIP_day[mm]==q->Capacity_VIP&&q->Capacity_Economy_day[mm]==q->Capacity_Economy){printf("無法購票!");return;} cout<<" 票價:"<<q->Air_price<<"元 折扣:"<<q->Air_discount*100<<"折"<<" 航空公司:"<<Air_Company;cout<<endl<<endl; }printf("\t\t請輸入1購買VIP票,輸入2購買經濟艙票"); int ccc;Book*pp=new Book;scanf("%d",&ccc);if(ccc==1){pp->price=price;p->Capacity_VIP_day[0]++;if(k==2)p->Capacity_VIP_day[0]++;}else if(ccc=2){pp->price=price*1.5;p->Capacity_Economy_day[0]++;if(k==2)p->Capacity_Economy_day[0]++;}pp->month=month;pp->day=day;strcpy(pp->Name,Name);strcpy(pp->Flight[0],Airnumber[0]);strcpy(pp->Flight[1],Airnumber[1]);pp->flag=k-1;pp->next=NULL;tail->next=pp;tail=pp;printf("請支付%.2f元\n",pp->price);printf("購票完成!\n");kk++;writepassage();return ; } void refund() //退票函數 {char name[20];printf("請輸入退票人的姓名:");scanf("%s",name);Book *p=head->next;Book *p1=head;bool flag=false;while(p){if(strcmp(p->Name,name)==0){p1->next=p->next;free(p);flag=true;kk--;writepassage();}else{p1=p;p=p->next;}}if(flag==true)printf("退票成功!\n");elseprintf("未找到訂票人信息\n") ; return ; } //---------------------------------------------------------------------------------------------// void HideCursor(); void color(short x); void toxy(int x,int y); void over(); /**界面部分**/int UI()//用戶界面 {int s;cout<<"***********************************用戶界面********************************\n\n"; //用戶操作 cout<<" 1.查詢航班\t 2.訂票\t 3.退票\t 4.推薦路線 0.退出登錄\n\n\t\t選擇操作:";fflush(stdin);while(s=int(getchar())-48){if(s>=0&&s<=4) {cout<<"\n**********************************************************\n\n";return s;}else cout<<"\t輸入錯誤!! \n\t請重新選擇操作:";}}int administrator()//管理員界面 {int s;cout<<"**************************************管理員界面*******************************\n\n";cout<<" 1.航班信息\t 2.乘客名單\t 3.錄入信息\t 4.查詢航線信息 0.退出登錄\n\n\t\t選擇操作:"; //管理員共這四個功能 fflush(stdin);while(s=int(getchar())-48){if(s>=0&&s<=4) {cout<<"\n**********************************************************\n\n";return s;}else cout<<"\t輸入錯誤!! \n\t請重新選擇操作:";} }void query();//用戶查詢航班 void browse();//管理員瀏覽全部航班信息 void query_administrator();//管理員根據航班號查詢信息 void add();//管理員錄入信息 void booking();//用戶訂票 void refund();//用戶退票 void recommend();//用戶推薦路線 void HideCursor() //隱藏光標 {CONSOLE_CURSOR_INFO cursor_info = {1, 0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void color(short m) {if(m>=0&&m<=15){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),m);}else{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),m);} }int login() {system("cls");int f;char password[20],*p="123456"; //管理員密碼cout<<"*************************登錄*****************************\n\n";cout<<" 1.乘客登錄 2.管理員登錄\n 請選擇用戶身份:";fflush(stdin); //刷新輸入流緩沖區while(f=int(getchar())-48){if(f==1) { cout<<" 姓名:";cin>>Name;cout<<"\n\t\t登錄成功!!\n\n**********************************************************\n\n";return 1;}else if(f==2) {cout<<"\n 輸入管理員密碼(提示:123456):";fflush(stdin);while(cin>>password){if(!strcmp(password,p)) {cout<<"\n\t\t登錄成功!!\n\n**********************************************************\n\n";return 2;}else cout<<"\n密碼錯誤!! 請重新輸入\n\n 輸入管理員密碼:";}}else if(f==3){fflush(stdin);writepassage();}else cout<<"輸入錯誤!! 請重新輸入\n 請選擇用戶身份: ";} }void query() {char from[20];//起點城市 char destination[20];//終點城市 int i,s=0;showcity();cout<<"****************************************************查詢***********************************************\n\n\t\t 出發地:";cin>>from;cout<<"\n\n\t\t 目的地:";cin>>destination;FindPath(from,destination);cout<<"\n\n";cout<<"********************1.時間升序\t 2.價格升序 3. 綜合排序*****************************\n\n\t\t";fflush(stdin);int k;k=int(getchar())-48;if(k==1){system("cls");sorttime();printfpathtime();return;}else if(k==2){system("cls");sortprice();printfpathprice();return;} else if(k==3){system("cls");sortevenout();printfpathevenout();return;}/*for(i=0;i<30;i++){link p=headnode[i].first;while(p){if(strcmp(from,p->starting)==0&&strcmp(destination,p->Destination)==0){s++;printf("航班號:%.5d ",p->Flight);cout<<"出發地:"<<p->starting<<" 目的地:"<<p->Destination;printf(" 出發時間:%d:%d",p->Boarding_Time_hour,p->Boarding_Time_minute);printf(" 到達時間:%d:%d",p->Landing_Time_hour,p->Landing_Time_minute);printf(" 頭等艙:%d/%d",p->Capacity_VIP_now,p->Capacity_VIP);printf(" 經濟艙:%d/%d",p->Capacity_Economy_now,p->Capacity_Economy);if(p->Capacity_VIP_now==p->Capacity_VIP&&p->Capacity_Economy_now==p->Capacity_Economy) printf(" 已滿倉"); else printf(" 未滿倉"); cout<<" 票價:"<<p->Air_price<<" 折扣:"<<p->Air_discount*100<<"折"<<" 航空公司:"<<Air_Company;cout<<endl<<endl; }p=p->next;}} if(s==0) cout<<"\n無此航線信息!(請檢查輸入的城市是否正確)\n\n";cout<<"**********************************************************\n\n";*/ } void browse() {int i=0;for(i=0;i<30;i++){link p=headnode[i].first;while(p){printf("航班號:%.5d ",p->Flight);cout<<"出發地:"<<p->starting<<" 目的地:"<<p->Destination;printf(" 出發時間:%d:%.2d",p->Boarding_Time_hour,p->Boarding_Time_minute);printf(" 到達時間:%d:%.2d",p->Landing_Time_hour,p->Landing_Time_minute);printf(" 頭等艙:%d/%d",p->Capacity_VIP_now,p->Capacity_VIP);printf(" 經濟艙:%d/%d",p->Capacity_Economy_now,p->Capacity_Economy);if(p->Capacity_VIP_now==p->Capacity_VIP&&p->Capacity_Economy_now==p->Capacity_Economy) printf(" 已滿倉"); else printf(" 未滿倉"); cout<<" 票價:"<<p->Air_price<<"元 折扣:"<<p->Air_discount*100<<"折"<<" 航空公司:"<<Air_Company;cout<<endl<<endl; p=p->next; }} } void query_administrator() {int i,s=0;int number; cout<<"*************************查詢*****************************\n\n\t\t 航班號:";cin>>number;for(i=0;i<30;i++){link p=headnode[i].first;while(p){if(number==p->Flight){s++;printf("航班號:%.5d ",p->Flight);cout<<"出發地:"<<p->starting<<" 目的地:"<<p->Destination;printf(" 出發時間:%d:%.2d",p->Boarding_Time_hour,p->Boarding_Time_minute);printf(" 到達時間:%d:%.2d",p->Landing_Time_hour,p->Landing_Time_minute);/*printf(" 頭等艙:%d/%d",p->Capacity_VIP_now,p->Capacity_VIP);printf(" 經濟艙:%d/%d",p->Capacity_Economy_now,p->Capacity_Economy);if(p->Capacity_VIP_now==p->Capacity_VIP&&p->Capacity_Economy_now==p->Capacity_Economy) printf(" 已滿倉"); else printf(" 未滿倉"); */cout<<" 票價:"<<p->Air_price<<"元 折扣:"<<p->Air_discount*100<<"折"<<" 航空公司:"<<Air_Company;cout<<endl<<endl; }p=p->next;}} if(s==0) cout<<"\n無此航線信息!(請檢查輸入的航班號是否正確)\n\n";cout<<"**********************************************************\n\n";} void add(){int f=1;while(f==1){system("cls");link p=(link)malloc(sizeof(struct Airline));cout<<"*************************錄入*****************************\n\n\t\t 航班號:"; cin>>p->Flight; cout<<"\n\n\t\t 出發地:"; cin>>p->starting;cout<<"\n\n\t\t 目的地:"; cin>>p->Destination;cout<<"\n\n\t\t 出發時間(幾時):"; cin>>p->Boarding_Time_hour;cout<<"\n\n\t\t 出發時間(幾分):"; cin>>p->Boarding_Time_minute;cout<<"\n\n\t\t 到達時間(幾時):"; cin>>p->Landing_Time_hour;cout<<"\n\n\t\t 到達時間(幾分):"; cin>>p->Landing_Time_minute;p->Capacity_VIP_now=0; p->Capacity_VIP=50;p->Capacity_Economy_now=0; p->Capacity_Economy=250; cout<<"\n\n\t\t 票價:"; cin>>p->Air_price;cout<<"\n\n\t\t 折扣:"; cin>>p->Air_discount;p->fly_time=Count_time(p);p->next=NULL;int i=(p->Flight)/1000;link q=headnode[i].first;if(q==NULL){headnode[i].first=p;}else{while(q->next!=NULL){q=q->next;}q->next=p;}cout<<"*************************錄入成功!*****************************\n\n";cout<<"*************************是否繼續?*****************************\n\n";cout<<"***********************1.Yes\t 2.No****************************\n\n";fflush(stdin);int s;s=int(getchar())-48;if(s==1) f=1;else if(s==2) f=0;}}void recommend() {char from[20];//起點城市 char destination[20];//終點城市 int i;cout<<"*************************推薦路線*****************************\n\n\t\t 出發地:";cin>>from;cout<<"\n\n\t\t 目的地:";cin>>destination;FindPath(from,destination);sortprice();i=0;if(infoprice[i].flag==1){printf("航班號1:%.5d ",infoprice[i].flight[0]); printf("航班號2:%.5d ",infoprice[i].flight[1]);cout<<"出發地:"<<infoprice[i].ch1<<" 中轉城市:"<<infoprice[i].ch2<<" 目的地:"<<infoprice[i].ch3;printf(" 出發時間:%d:%.2d",infoprice[i].Boarding_hour,infoprice[i].Boardint_min);printf(" 到達時間:%d:%.2d",infoprice[i].Landing_hour,infoprice[i].Landing_min);if(infoprice[i].time%60==0) printf(" 飛行時間:%d小時",infoprice[i].time/60);else printf(" 飛行時間:%d小時%d分鐘",infoprice[i].time/60,infoprice[i].time%60);printf(" 票價:%d元",infoprice[i].price);cout<<endl<<endl;}if(info[i].flag==0){printf("航班號:%.5d ",infoprice[i].flight[0]);cout<<"出發地:"<<infoprice[i].ch1<<" 直達"<<" 目的地:"<<infoprice[i].ch3;printf(" 出發時間:%d:%.2d",infoprice[i].Boarding_hour,infoprice[i].Boardint_min);printf(" 到達時間:%d:%.2d",infoprice[i].Landing_hour,infoprice[i].Landing_min);if(infoprice[i].time%60==0) printf(" 飛行時間:%d小時",infoprice[i].time/60);else printf(" 飛行時間:%d小時%d分鐘",infoprice[i].time/60,infoprice[i].time%60);printf(" 票價:%d元",infoprice[i].price);cout<<endl<<endl;}cout<<endl<<endl; cout<<"*************************是否生成航線網絡?*****************************\n\n";cout<<"***************************1.Yes\t 2.No********************************\n\n";fflush(stdin);int s;s=int(getchar())-48;if(s==1){system("cls");printf_Network(from);} }#endif // FLIGHT_H_INCLUDED

總結

以上是生活随笔為你收集整理的开发简易飞机订票系统(C/C++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。