航班信息查詢與檢索系統(tǒng)_第1頁
航班信息查詢與檢索系統(tǒng)_第2頁
航班信息查詢與檢索系統(tǒng)_第3頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目:設(shè)計(jì)并實(shí)現(xiàn)一個航班信息查詢與檢索系統(tǒng)院系:計(jì)算機(jī)學(xué)院專業(yè):班級:學(xué)號: 指導(dǎo)教師:指導(dǎo)教師評語;審査結(jié)論簽名:年 月 日學(xué)術(shù)誠信聲明本人聲明 :所呈交的報(bào)告(含電子版及數(shù)據(jù)文件)是我個人在導(dǎo)師指 導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)工作及取得的研究結(jié)果。 盡我所知, 除了文中特別 加以標(biāo)注或致中所羅列的容以外, 報(bào)告中不包含其他人己經(jīng)發(fā)表或撰 寫過的研究結(jié)果, 也不包含其它教育機(jī)構(gòu)使用過的材料。 與我一同工 作的同學(xué)對本研究所做的任何貢獻(xiàn)均己在報(bào)告中做了明確的說明并 表示了意。 報(bào)告資料及實(shí)驗(yàn)數(shù)據(jù)若有不實(shí)之處, 本人愿意接受本教學(xué) 環(huán)節(jié)“不及格”和“重修或重做”的評

2、分結(jié)論并承擔(dān)相關(guān)一切后果。本人簽名 :日期:年月課程設(shè)計(jì)名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)專業(yè)學(xué)生班級學(xué)號題目名稱設(shè)計(jì)并實(shí)現(xiàn)一個航班信息查詢與檢索系統(tǒng)起止日期2016 年 12 月 18 日起至2017 年1月 4日止課設(shè)容和要求:對飛機(jī)航班信息進(jìn)行排序和查找,可按照航班號、起點(diǎn)站、到達(dá)站、起飛時間 和到達(dá)時間等信息進(jìn)行查詢。要求:1. 設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)2. 選擇合適的排序和查找算法3. 設(shè)計(jì)軟件的功能結(jié)構(gòu)4. 采用模塊化編程5給出現(xiàn)實(shí)方法和算法6.按課程設(shè)計(jì)規(guī)撰寫課程設(shè)計(jì)報(bào)告參考資料:1 嚴(yán)蔚敏、文博,數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程M.:清華大學(xué),2011.52 小莉、王苗、羅文劼,數(shù)據(jù)結(jié)構(gòu)與算法M.:機(jī)械工業(yè),20

3、14.4教研室審核意見:教研室主任簽字:指導(dǎo)教師(簽名)年月日學(xué)生(簽名)年月日課程設(shè)計(jì)總結(jié):本設(shè)計(jì)的重點(diǎn)和難點(diǎn)是在于對航班數(shù)據(jù)的排序和查找,以鏈?zhǔn)交鶖?shù)排序?yàn)橹骶€,用到了二分查找和順序查找等知識,還有建立靜態(tài)鏈表等。通過這次課程設(shè) 計(jì),使我對C語言編程有了新的認(rèn)識。以前編程只是注重如何編寫函數(shù)能夠完成 所需要的功能,只是憑單純的意識和簡單的語句來堆砌出一段程序。但現(xiàn)在編程 感覺完全不同了。在編寫一個程序之前,自己能夠綜合考慮各種因素,選取自己 需要的數(shù)據(jù)結(jié)構(gòu),在編寫每一個函數(shù)之前,可以仔細(xì)斟酌比對,挑選出最適合當(dāng) 前狀況的算法。這樣,即使在完整的程序還沒有寫出來之前,自己心中已經(jīng)有了 明確的原

4、圖了。這樣無形中就提高了自己編寫的程序的質(zhì)量。另外,我還體會到 深刻理解數(shù)據(jù)結(jié)構(gòu)的重要性。只有真正理解這樣定義數(shù)據(jù)類型的好處,才能用好 這樣一種數(shù)據(jù)結(jié)構(gòu)。了解典型數(shù)據(jù)結(jié)構(gòu)的性質(zhì)是非常有用的,它往往是編寫程序 的關(guān)鍵。目錄1 題目介紹 52 課程設(shè)計(jì)要求 52.1 課程設(shè)計(jì)容 52.2 課程設(shè)計(jì)目標(biāo) 53 概要設(shè)計(jì) 53.1 設(shè)計(jì)思路 53.2 流程圖 54 算法概述 64.1定義數(shù)據(jù)類型 64.2 函數(shù)描述 75 測試數(shù)據(jù) 10附 錄(關(guān)鍵部分程序清單) 121、題目介紹設(shè)計(jì)一個航班信息查詢與檢索系統(tǒng)。可按航班的航班號、起點(diǎn)站、終點(diǎn)站、起飛時間 以及到達(dá)時間等信息進(jìn)行查詢。2、課程設(shè)計(jì)要求1、

5、每個航班記錄包括八項(xiàng):航班號、起始站、終點(diǎn)站、班期、起飛時間、至U達(dá)時間、 飛機(jī)型號、票價。如下表所示:航班號起點(diǎn)站終點(diǎn)站班期起飛時間到達(dá)時間機(jī)型票價CA154410551240733960MU5341每日14201615M901280CZ38690855103573310102、對航班信息進(jìn)行排序與查找3、概要設(shè)計(jì)3.1、設(shè)計(jì)思路根據(jù)題目所要求,程序必須實(shí)現(xiàn)航班信息的錄入和查詢。 程序首先定義了一 個儲存航班信息的數(shù)據(jù)類型,再由用戶錄入航班數(shù)據(jù),在錄入的同時并對數(shù)據(jù)進(jìn) 行排序,最后執(zhí)行數(shù)據(jù)查詢和檢索。在查詢設(shè)計(jì)中,使用折半查找法對排好序的 航班號數(shù)據(jù)實(shí)現(xiàn)快速查找,按起點(diǎn)站、終點(diǎn)站、起飛時間、

6、到達(dá)時間查找的則采 用順序查詢方法。3.2、流程圖按航班號 查詢按起飛時間查詢1T錄入信息提示1信息錄入1r查詢菜單顯示1r輸入查詢序號判斷符號是否合法按到達(dá)時間查 詢按起點(diǎn)站查 詢按終點(diǎn)站查詢4、算法實(shí)現(xiàn)4.1 . 定義數(shù)據(jù)類型根據(jù)設(shè)計(jì)要求,設(shè)計(jì)中所用到的數(shù)據(jù)記錄只有航班信息,因此要定義相關(guān)的 數(shù)據(jù)類型:typedef struct char start6;char end6;char sche10;char time15;char time25;char model4;int price;info;typedef structchar keyskeylen;info others;int

7、next;slnode;typedef structslnode slmaxspace;int keynum;int length;sllist;/起點(diǎn)站/終點(diǎn)站/班期/起飛時間/到達(dá)時間/機(jī)型/票價/航班記錄類型/關(guān)鍵字/表結(jié)點(diǎn)/關(guān)鍵字長/當(dāng)前表長/靜態(tài)鏈表類型為了進(jìn)行基數(shù)排序,需要定義在分配和收集操作時用到的指針數(shù)組:typedef int arrtype_n10; typedef int arrtype_c26;/十進(jìn)制數(shù)字指針數(shù)組/26 個字母指針數(shù)組4.2 . 函數(shù)描述void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)i

8、nt j,p;for(j=0;j<10;j+)fj=ej=0;for(p=sl0.next;p;p=slp.next)j=slp.keysi%48; / 將數(shù)字字符轉(zhuǎn)化為對應(yīng)的數(shù)值型數(shù)字 if(!fj)fj=p;elseslej.next=p;ej=p;/ 將 p 指向的結(jié)點(diǎn)插入到第 j 個結(jié)點(diǎn)void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)int j,t;for(j=0;!fj;j+);/找第一個非空子表sl0.next=fj;t=ej;while(j<10-1)for(j=j+1;j<10-1&&

9、!fj;j+); /找下一個非空子表if(fj)slt.next=fj;t=ej;slt.next=0;鏈?zhǔn)交鶖?shù)排序算法void radixsort(sllist &l)int i;arrtype_n fn,en; arrtype_c fc,ec;for(i=0;i<l.length;i+) l.sli.next=i+1;l.sll.length.next=0;for(i=l.keynum-1;i>=2;i-)distribute(l.sl,i,fn,en); collect(l.sl,i,fn,en);for(i=1;i>=0;i-)distribute_c(l.s

10、l,i,fc,ec); collect_c(l.sl,i,fc,ec);/兩個非空子表/將普通的線性表改為靜態(tài)鏈表/按最低位優(yōu)先依次對各關(guān)鍵字進(jìn)行分配和收集void arrange(sllist &l)/按指針鏈表整理靜態(tài)鏈表int p,q,i;slnode temp;p=l.sl0.next;for(i=1;i<l.length;i+)while(p<i)p=l.slp.next;q=l.slp.next;if(p!=i)temp=l.slp;l.slp=l.sli;/交換記錄l.sli=temp;l.sli.next=p;p=q;折半查找函數(shù)定義int binsearc

11、h(sllist l,char key)int low,high,mid;low=1;high=l.length;while(low<=high)mid=(low+high)/2;if(strcmp(key,l.slmid.keys)=0)return mid;else if(strcmp(key,l.slmid.keys)<0)high=mid-1;elselow=mid+1;return 0;5、測試數(shù)據(jù)編譯后運(yùn)行,顯示:錄入信息A/航班號 起點(diǎn)站 終點(diǎn)站 班期 起飛時間 到達(dá)時間 機(jī)型 票價錄入: CA15441.2.4.5 10551240733 960顯示:是否繼續(xù)?y/

12、n:錄入: y顯示:航班號 起點(diǎn)站終點(diǎn)站班期起飛時間到達(dá)時間 機(jī)型票價錄入: MU5341每日4201615M90 1280顯示:是否繼續(xù)?y/n:錄入: y顯示: 航班號 起點(diǎn)站終點(diǎn)站班期起飛時間到達(dá)時間 機(jī)型票價錄入: CZ386908551035733 1010顯示:是否繼續(xù)? y/n:錄入: n錄入航班信息后,屏幕顯示:航班信息查詢系統(tǒng)1航班號2起點(diǎn)站3終點(diǎn)站4起飛時間5.到達(dá)時間0.退出(0-5)號服務(wù)項(xiàng)目:錄入:1顯示:輸入要查詢的航班號(字母要大寫):錄入:CA1544顯示:航班號起點(diǎn)站終點(diǎn)站班期起飛時間到達(dá)時間機(jī)型票價CA154410551240733960錄入:2顯示:輸入要

13、查詢的航班起點(diǎn)站:錄入:顯示:航班號起點(diǎn)站終點(diǎn)站班期起飛時間到達(dá)時間機(jī)型票價顯示:CA15441.24510551240733 960<0酣號服笳項(xiàng)目皿航班尋 超當(dāng)站裟點(diǎn)站期瀬 起飛時聞至陸曲間機(jī)型事橋Cfll5 44 合月世j 匕眾1.2.4.510SG £240 ?039G0一一號站韜鳴 一班點(diǎn)點(diǎn)Bg出 一 fH- - -12 3 4 5 0錄入:2顯示:輸入要查詢的航班起點(diǎn)站錄入:顯示:* H:健傲Deb ug誦S幅轉(zhuǎn)鞫醍確甩曲exe*<0卵號服務(wù)項(xiàng)目氓輸入要查詢的航班號£字母要大寫、:址1£44亦麗石??蓴萯只薈蕾1? 亠 -1 2 3 4 5

14、 05-5號眾務(wù)項(xiàng)目胡竄入要查詢的航班起點(diǎn)站二廣N 'I魏嚮?鹽籠S款蘸鬥間到達(dá)滯臓轍附錄源程序:#include <stdio.h>#include <string.h>#define max 100#define keylen 7typedef structchar start6; char end6;char sche10; char time15; char time25;char model4; int price;info;typedef structchar keyskeylen; info others;int next;slnode;typed

15、ef structslnode slmax;int keynum;int length;sllist;typedef int arrtype_n10;typedef int arrtype_c26;void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,p;for(j=0;j<10;j+)fj=ej=0; for(p=sl0.next;p;p=slp.next)j=slp.keysi%48;if(!fj)fj=p;elseslej.next=p;ej=p;void collect(slnode *sl,int i,a

16、rrtype_n f,arrtype_n e) int j,t; for(j=0;!fj;j+);sl0.next=fj;t=ej;while(j<10-1)for(j=j+1;j<10-1&&!fj;j+);if(fj)slt.next=fj; t=ej; slt.next=0;void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) int j,p;for(j=0;j<26;j+)fj=ej=0; for(p=sl0.next;p;p=slp.next)j=slp.keysi%65;if(!fj

17、)fj=p;elseslej.next=p;ej=p;void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)int j,t;for(j=0;!fj;j+);sl0.next=fj;t=ej;while(j<26-1)for(j=j+1;j<26-1&&!fj;j+);if(fj)slt.next=fj;t=ej;slt.next=0;void radixsort(sllist &l)int i;arrtype_n fn,en; arrtype_c fc,ec;for(i=0;i<l.length

18、;i+)l.sli.next=i+1;l.sll.length.next=0;for(i=l.keynum-1;i>=2;i-)distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);for(i=1;i>=0;i-)distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);void arrange(sllist &l)int p,q,i;slnode temp;p=l.sl0.next;for(i=1;i<l.length;i+)while(p<i)p=l.slp.next; q=

19、l.slp.next;if(p!=i)temp=l.slp;l.slp=l.sli;l.sli=temp;l.sli.next=p;p=q;int binsearch(sllist l,char key)int low,high,mid;low=1;high=l.length;while(low<=high)mid=(low+high)/2; if(strcmp(key,l.slmid.keys)=0)return mid;else if(strcmp(key,l.slmid.keys)<0)high=mid-1;elselow=mid+1;return 0;void seqsea

20、rch(sllist l,char key,int i)int j,k,m=0;printf("n");printf(" 航班號 起點(diǎn)站 終點(diǎn)站 班期 起飛時間 到達(dá)時間 機(jī)型 票價 n"); for(j=1;j<=l.length;j+)switch(i)case 2:k=strcmp(key,l.slj.others.start);break;case 3:k=strcmp(key,l.slj.others.end);break;case 4:k=strcmp(key,l.slj.others.time1);break;case 5:k=str

21、cmp(key,l.slj.others.time2);break;if(k=0)m=1;printf(" %-8s%-7s%-7s%-11s%-6s%-6s%5s%4dn",l.slj.keys,l.slj.others.start,l.slj.others.end,l.slj.others.sche,l.slj.others.time1,l.slj.others. time2,l.slj.others.model,l.slj.others.price);if(m=0)printf(" 無此航班信息,可能是輸入錯誤! n");printf("

22、n");void searchcon(sllist l)char keykeylen;int i=1,k;while(i>=1&&i<=5) printf("n");printf(" * 航班信息查詢系統(tǒng) *n");printf("n");printf(" *1.航 班 號*n");printf(" *2.起 點(diǎn) 站*n");printf(" *3.終 點(diǎn) 站*n");printf(" *4.起飛時間*n");prin

23、tf(" *5.到達(dá)時間*n");printf(" *0.退出*n");printf(" n");printf(" (0-5) 號服務(wù)項(xiàng)目 :"); scanf("%d",&i);printf("n");switch(i)case 1:printf(" 輸入要查詢的航班號 (字母要大寫 ):");scanf("%s",key);k=binsearch(l,key);printf("n");if(k=0)pri

24、ntf(" 無此航班信息,可能是輸入錯誤! n");elseprintf(" 航班號 起點(diǎn)站 終點(diǎn)站 班期 起飛時間 到達(dá)時間 機(jī)型 票價 n");printf(" %-8s%-7s%-7s%-11s%-6s%-6s%-5s%4d n",l.slk.keys,l.slk.others.start,l.slk.others.end,l.slk.others.sche,l.slk.others.time1,l.slk.oth ers.time2,l.slk.others.model,l.slk.others.price);printf("n");break;case 2:printf(" 輸入要查詢的航班起點(diǎn)站 :"); scanf("%s",key);seqsearch(l,key,i);break;case 3:printf(" 輸入要查詢的航班終點(diǎn)站 :

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論