1. 程式人生 > >資料結構程式設計回顧(七)航班資訊的查詢與檢索

資料結構程式設計回顧(七)航班資訊的查詢與檢索

題目七:航班資訊的查詢與檢索
設計要求:對飛機航班資訊進行排序和查詢。可按航班號、
起點站、終點站、起飛時間及到達時間等資訊進行查詢。
每個航班記錄包括八項:航班號、起點站、終點站、航班期、
起飛時間、到達時間、機型以及票價。

航班資訊查詢系統內容:
1. 航班號
2. 起點站
3. 終點站
4. 起飛時間
5. 到達時間
6. 退出系統

 

 

和之前的頗為類似,直接貼程式碼了,然後回顧就到一段落了,我們有緣再見。

完整程式碼:

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
struct fly{
char flight_num[10];
char start[10];
char endp[10];
char dats[10];
int takeoff;
int landtime;
char type[10];
int price;
}a[10];
typedef fly Fly;
void display(){
int i;
for(i=0;i<6;i++){
  //cout<<a[i].takeoff<<endl;
   printf("%s  %s  %s  %s  %.2d:%.2d  %.2d:%.2d  %s  %d\n",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,a[i].takeoff/100,a[i].takeoff%100,a[i].landtime/100,a[i].landtime%100,a[i].type,a[i].price);
}
}
void flytime(){

int i,j;
for(i=0;i<5;i++){
    for(j=0;j<5-i;j++){
        if(a[j].takeoff>a[j+1].takeoff){
            Fly temp;
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}
display();
}
void pricedown(){
    int i,j;
for(i=0;i<5;i++){
    for(j=0;j<5-i;j++){
        if(a[j].price>a[j+1].price){
            Fly temp;
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}
display();
}
void offtime(){
    int i,j;
for(i=0;i<5;i++){
    for(j=0;j<5-i;j++){
        if(a[j].landtime>a[j+1].landtime){
            Fly temp;
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}
display();}
void find_num(){
    cout<<"請輸入要查詢的航班號(輸入0則排序,輸入航空公司程式碼則羅列該公司所有航班)"<<endl;
    char input[10];
    cin>>input;
    int v=0;
    int len=strlen(input);
    if(len==0){

    }
    else if(len==2){
    for(int i=0;i<6;i++){
    if(input[0]==a[i].flight_num[0]&&input[1]==a[i].flight_num[1]){
    printf("%s %s %s %s %.2d:%.2d %.2d:%.2d %s %d\n",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,a[i].takeoff/100,a[i].takeoff%100,a[i].landtime/100,a[i].landtime%100,a[i].type,a[i].price);
v=1;
    }
}
if(v==0){
    cout<<"未查詢到該航空公司"<<endl;
}
    }
    else{
        for(int i=0;i<6;i++){
    if(strcmp(a[i].flight_num,input)==0){
    printf("%s %s %s %s %.2d:%.2d %.2d:%.2d %s %d\n",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,a[i].takeoff/100,a[i].takeoff%100,a[i].landtime/100,a[i].landtime%100,a[i].type,a[i].price);
    return ;
    }
}
    cout<<"未查詢到該航班"<<endl;
    }


}
void init(){
  //航班一號
    strcpy(a[0].flight_num,"SC7425");
    strcpy(a[0].start,"青島");
    strcpy(a[0].endp,"海口");
    strcpy(a[0].dats,"1 3 6");
    a[0].takeoff=1920;
    a[0].landtime=2120;
    strcpy(a[0].type,"DH4");
    a[0].price=1630;
// 航班二號
strcpy(a[1].flight_num,"MU5341");
    strcpy(a[1].start,"上海");
    strcpy(a[1].endp,"廣州");
    strcpy(a[1].dats,"每天");
    a[1].takeoff=1420;
    a[1].landtime=1615;
    strcpy(a[1].type,"M90");
    a[1].price=1280;
//航班三號
strcpy(a[2].flight_num,"CA984");
    strcpy(a[2].start,"北京");
    strcpy(a[2].endp,"深圳");
    strcpy(a[2].dats,"2 4 6");
    a[2].takeoff=755;
    a[2].landtime=1125;
    strcpy(a[2].type,"777");
    a[2].price=2080;
    //航班四號
strcpy(a[3].flight_num,"CZ6434");
    strcpy(a[3].start,"成都");
    strcpy(a[3].endp,"西安");
    strcpy(a[3].dats,"每天");
    a[3].takeoff=1325;
    a[3].landtime=1455;
    strcpy(a[3].type,"A321");
    a[3].price=810;
    //航班五號
    strcpy(a[4].flight_num,"JD5346");
    strcpy(a[4].start,"大連");
    strcpy(a[4].endp,"杭州");
    strcpy(a[4].dats,"5 6 7");
    a[4].takeoff=2055;
    a[4].landtime=2310;
    strcpy(a[4].type,"A320");
    a[4].price=960;
    //航班六號
    strcpy(a[5].flight_num,"SC8112");
    strcpy(a[5].start,"南京");
    strcpy(a[5].endp,"廈門");
    strcpy(a[5].dats,"2 5 7");
    a[5].takeoff=2110;
    a[5].landtime=2255;
    strcpy(a[5].type,"737");
    a[5].price=540;
}
void find_sta(){
cout<<"請輸入要查詢的城市:(可以使用縮寫或拼音)"<<endl;
char input[100];
cin>>input;
int v=0;
if(input[0]>=65&&input[0]<=122){
    cout<<"暫未開放,敬請期待!"<<endl;
    return ;
}
else{
        int i;
    for(i=0;i<6;i++){
        if(!strcmp(input,a[i].start)){
              printf("%s  %s  %s  %s  %.2d:%.2d  %.2d:%.2d  %s  %d\n",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,a[i].takeoff/100,a[i].takeoff%100,a[i].landtime/100,a[i].landtime%100,a[i].type,a[i].price);
v=1;
        }
    }
    if(v==0)
        cout<<"暫未查到該城市有效資訊."<<endl;
}
}
void find_endp(){
    cout<<"請輸入要查詢的城市:(可以使用縮寫或拼音)"<<endl;
char input[100];
cin>>input;
int v=0;
if(input[0]>=65&&input[0]<=122){
    cout<<"暫未開放,敬請期待!"<<endl;
    return ;
}
else{
        int i;
    for(i=0;i<6;i++){
        if(!strcmp(input,a[i].endp)){
              printf("%s  %s  %s  %s  %.2d:%.2d  %.2d:%.2d  %s  %d\n",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,a[i].takeoff/100,a[i].takeoff%100,a[i].landtime/100,a[i].landtime%100,a[i].type,a[i].price);
v=1;
        }
    }
    if(v==0)
        cout<<"暫未查到該城市有效資訊."<<endl;
}
}
int main()
{   init();
    int n;
    while(1){
        cout<<"1.航班號  2.起點站 2.終點站 4.起飛時間 5.到達時間 6.價格 0.退出系統 "<<endl;
        cin>>n;
        switch(n){
    case 1:
        find_num();
        break;
    case 2:
        find_sta();
        break;
    case 3:
        find_endp();
        break;
    case 4:
        flytime();
        break;
    case 5:
        offtime();
        break;
    case 6:
        pricedown();
        break;
    case 0:
        return 0;
        }

    }
    return 0;
}