航班資訊查詢和檢索系統 資料結構課程設計

2021-07-14 16:28:28 字數 3945 閱讀 2641

問題及**:

設計並實現乙個航班資訊查詢和檢索系統。要求:對飛機航班資訊進行排序和查詢,可按照航班號、起點站、到達站、起飛時間和到達時間等資訊進行查詢。航班資訊表的樣式如下:

航班號起點站

終點站 班期

起飛時間

到達時間 機型

票價ca1544 合肥

北京1.2.4.5

10:55

12:40

733960

mu5341 上海

廣州 每日

14:20

16:15

m901280

cz3869 重慶

深圳2.4.6

08:55

10:35

7331010

其中航班號一項的格式為:前兩個大寫字母表示航空公司的名稱,後

4位為航班編號,例如:

ca1544,ca

表示航空公司的名稱,

1544

為航班編號。

/*

**檔名稱:flight.cpp

*檔案標識:無

*內容摘要:該**用於獲取滿足字尾要求的第乙個檔案

*其他說明:無

*當前版本:v1.0

*作 者:單昕昕

*完成日期:2023年6月22日

**修改記錄:

*修改日期:無。

*版本號:

*修改人:單昕昕

*修改內容:

*/#include #include #include #include //操作檔案必寫

#include using namespace std;

const int maxn=10000;

const int p=23;

const string nullkey="nullkey";//定義空關鍵字值

const string delkey="delkey";//定義被刪關鍵字值

string x[maxn];//輸入時的航班號

int hashlen=0;//雜湊表長度

ifstream infile("read.txt",ios::in);

typedef struct

info;//說明資訊型別

typedef struct

hash;//雜湊表型別

hash ha[maxn];//定義乙個雜湊表

int work();//功能選擇表單

int getnum(string k);//取出航班號中的數值部分

int search(string key);//在雜湊表中查詢航班號

int delete(string str);//刪除指定的航班資訊

void insert1(string key);//自動插入航班資訊

void insert2(string key);//手動插入航班資訊

void create1();//檔案自動讀取

void create2();//鍵盤手動輸入

void number(string key);//查詢航班號

void departure(string key);//查詢起點站

void terminal(string key);//查詢到達站

void start(string key);//查詢起飛時間

void arrival(string key);//查詢到達時間

void fileoutput(int adr);//航班資訊存入檔案

void output(int adr);//航班資訊在螢幕上顯示

void input(int adr);//手動輸入航班資訊

/**函式名稱:work

*功能描述:航班資訊查詢和檢索系統的選擇功能選單

*輸入引數:無

*輸出引數:無

*返回值:無

*其他說明:無

*/int work()

case 4://④起點站

case 5://⑤到達站

case 6://⑥起飛時間

case 7://⑦到達時間

case 8://⑧退出系統

else//發生衝突時採用線性探查法解決衝突

ha[adr].number=key;

ha[adr].cnt=i;

infile>>ha[adr].data.departure>>ha[adr].data.terminal>>ha[adr].data.schedule;

infile>>ha[adr].data.start>>ha[adr].data.arrival>>ha[adr].data.type>>ha[adr].data.price;

}++hashlen;//雜湊表的元素個數加一}/*

*函式名稱:insert2

*功能描述:在雜湊表中由檔案手動插入航班資訊

*輸入引數:key-航班號

*輸出引數:hashlen-雜湊表元素個數,ha[adr].number-關鍵字,ha[adr].cnt-探查次數

*返回值:無

*其他說明:無

*/void insert2(string key)

else

ha[adr].number=key;

ha[adr].cnt=i;

input(adr);//手動輸入剩下資訊

}++hashlen;}/*

*函式名稱:create1

*功能描述:在雜湊表中自動插入航班關鍵字資訊

*輸入引數:key-航班號

*輸出引數:ha[adr].number-關鍵字全部初始化為nullkey,ha[adr].cnt-探查次數全部初始化為0

*返回值:無

*其他說明:無

*/void create1()

infile.close();//讀入完畢一定要關閉檔案}/*

*函式名稱:create2

*功能描述:在雜湊表中手動插入航班關鍵字資訊

*輸入引數:key-航班號

*輸出引數:ha[adr].number-關鍵字全部初始化為nullkey,ha[adr].cnt-探查次數全部初始化為0

*返回值:無

*其他說明:無

*/void create2()}/*

*函式名稱:number

*功能描述:在雜湊表中查詢航班號

*輸入引數:key-航班號

*輸出引數:ha[adr].number-航班號,ha[adr].data.departure-起點站,ha[adr].data.terminal-到達站,ha[adr].data.schedule-班期,

ha[adr].data.start-起飛時間,ha[adr].data.arrival-到達時間,ha[adr].data.type-機型,ha[adr].data.price-票價

*返回值:無

*其他說明:無

*/void number(string key)

if(ha[adr].number==key&&ha[adr].number!=delkey)

else

cout>ha[adr].data.terminal>>ha[adr].data.schedule;

cin>>ha[adr].data.start>>ha[adr].data.arrival>>ha[adr].data.type>>ha[adr].data.price;

}int main()

執行結果:

**設計簡述:

(詳見**注釋)

根據航班號使用雜湊表儲存,關鍵字是被轉成數值的航班號;

航班號使用線性探查法解決衝突;其他查詢使用順序查詢。

資料結構中的「查詢」(檢索)

內查詢和外查詢 都在記憶體中查詢即內查詢,外查詢還涉及外存,比如硬碟等。分類包括 1 線性表的查詢 又分順序查詢 二分查詢和分塊查詢。1 二分查詢又叫折半查詢 2 分塊查詢 線性表分成塊,每塊內部不要求有序,但塊塊之間應有序 2 樹表查詢 1 二叉排序樹 2 平衡的二叉排序樹 3 b樹 前面方法都只...

資料結構 排序和查詢

氣泡排序 void bubblesort elemtype r,int n,int comp num,int move num if flag 0 break 快速排序 void quicksort elemtype r,int left,int right,int comp num,int mov...

資料結構之排序和查詢

快速排序是一種不穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。以乙個陣列作為示例...