版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目:設(shè)計(jì)并實(shí)現(xiàn)一個(gè)航班信息查詢與檢索系統(tǒng)院系:計(jì)算機(jī)學(xué)院專業(yè):班級(jí):學(xué)號(hào):姓名:指導(dǎo)教師:指導(dǎo)教師評(píng)語(yǔ);年 月 日學(xué)術(shù)誠(chéng)信聲明本人聲明 :所呈交的報(bào)告(含電子版及數(shù)據(jù)文件)是我個(gè)人在導(dǎo)師指 導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)工作及取得的研究結(jié)果。 盡我所知, 除了文中特別 加以標(biāo)注或致謝中所羅列的內(nèi)容以外, 報(bào)告中不包含其他人己經(jīng)發(fā)表 或撰寫過(guò)的研究結(jié)果, 也不包含其它教育機(jī)構(gòu)使用過(guò)的材料。 與我一 同工作的同學(xué)對(duì)本研究所做的任何貢獻(xiàn)均己在報(bào)告中做了明確的說(shuō) 明并表示了謝意。 報(bào)告資料及實(shí)驗(yàn)數(shù)據(jù)若有不實(shí)之處, 本人愿意接受 本教學(xué)環(huán)節(jié)“不及格”和“重修或重做”的評(píng)分結(jié)
2、論并承擔(dān)相關(guān)一切 后果。本人簽名 :日期: 年 月 日課程設(shè)計(jì)名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)專業(yè)學(xué)生姓名班級(jí)學(xué)號(hào)題目名稱設(shè)計(jì)并實(shí)現(xiàn)一個(gè)航班信息查詢與檢索系統(tǒng)起止日期2016 年 12 月 18 日起至2017 年1月 4日止課設(shè)內(nèi)容和要求:對(duì)飛機(jī)航班信息進(jìn)行排序和查找,可按照航班號(hào)、起點(diǎn)站、到達(dá)站、起飛時(shí)間 和到達(dá)時(shí)間等信息進(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é)
3、構(gòu)與算法M.北京:機(jī)械工業(yè)出版社,2014.4教研室審核意見(jiàn):教研室主任簽字:指導(dǎo)教師(簽名)年月日學(xué)生(簽名)年月日課程設(shè)計(jì)總結(jié):本設(shè)計(jì)的重點(diǎn)和難點(diǎn)是在于對(duì)航班數(shù)據(jù)的排序和查找,以鏈?zhǔn)交鶖?shù)排序?yàn)橹骶€,用到了二分查找和順序查找等知識(shí),還有建立靜態(tài)鏈表等。通過(guò)這次課程設(shè) 計(jì),使我對(duì)C語(yǔ)言編程有了新的認(rèn)識(shí)。以前編程只是注重如何編寫函數(shù)能夠完成 所需要的功能,只是憑單純的意識(shí)和簡(jiǎn)單的語(yǔ)句來(lái)堆砌出一段程序。但現(xiàn)在編程 感覺(jué)完全不同了。在編寫一個(gè)程序之前,自己能夠綜合考慮各種因素,選取自己 需要的數(shù)據(jù)結(jié)構(gòu),在編寫每一個(gè)函數(shù)之前,可以仔細(xì)斟酌比對(duì),挑選出最適合當(dāng) 前狀況的算法。這樣,即使在完整的程序還沒(méi)有
4、寫出來(lái)之前,自己心中已經(jīng)有了 明確的原圖了。這樣無(wú)形中就提高了自己編寫的程序的質(zhì)量。另外,我還體會(huì)到 深刻理解數(shù)據(jù)結(jié)構(gòu)的重要性。只有真正理解這樣定義數(shù)據(jù)類型的好處,才能用好 這樣一種數(shù)據(jù)結(jié)構(gòu)。了解典型數(shù)據(jù)結(jié)構(gòu)的性質(zhì)是非常有用的,它往往是編寫程序 的關(guān)鍵。3目錄1 題目介紹 52 課程設(shè)計(jì)要求 52.1 課程設(shè)計(jì)內(nèi)容 52.2 課程設(shè)計(jì)目標(biāo) 53 概要設(shè)計(jì) 53.1 設(shè)計(jì)思路 53.2 流程圖 54 算法概述 64.1定義數(shù)據(jù)類型 64.2 函數(shù)描述 75 測(cè)試數(shù)據(jù) 10附 錄(關(guān)鍵部分程序清單) 1251、題目介紹設(shè)計(jì)一個(gè)航班信息查詢與檢索系統(tǒng)??砂春桨嗟暮桨嗵?hào)、起點(diǎn)站、終點(diǎn)站、起飛時(shí)間 以及
5、到達(dá)時(shí)間等信息進(jìn)行查詢。2、課程設(shè)計(jì)要求1、每個(gè)航班記錄包括八項(xiàng):航班號(hào)、起始站、終點(diǎn)站、班期、起飛時(shí)間、至U達(dá)時(shí)間、 飛機(jī)型號(hào)、票價(jià)。如下表所示:航班號(hào)起點(diǎn)站終點(diǎn)站班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)CA1544合肥北京1.2.4.510551240733960MU5341上海廣州每日14201615M901280CZ3869重慶深圳2.4.60855103573310102、對(duì)航班信息進(jìn)行排序與查找。3、概要設(shè)計(jì)3.1、設(shè)計(jì)思路根據(jù)題目所要求,程序必須實(shí)現(xiàn)航班信息的錄入和查詢。 程序首先定義了一 個(gè)儲(chǔ)存航班信息的數(shù)據(jù)類型,再由用戶錄入航班數(shù)據(jù),在錄入的同時(shí)并對(duì)數(shù)據(jù)進(jìn) 行排序,最后執(zhí)行數(shù)據(jù)查詢和檢索
6、。在查詢?cè)O(shè)計(jì)中,使用折半查找法對(duì)排好序的 航班號(hào)數(shù)據(jù)實(shí)現(xiàn)快速查找,按起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間查找的則采 用順序查詢方法。3.2、流程圖開(kāi)始1錄入信息提示1r查詢菜單顯示1!信息錄入/輸入查詢序號(hào)7#按航班號(hào) 查詢按起飛時(shí)間 查詢#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 keys
7、keylen;info others;int next;slnode;typedef structslnode slmaxspace;int keynum;int length;sllist;/起點(diǎn)站/終點(diǎn)站/班期/起飛時(shí)間/到達(dá)時(shí)間/機(jī)型/票價(jià)/航班記錄類型/關(guān)鍵字/表結(jié)點(diǎn)/關(guān)鍵字長(zhǎng)/當(dāng)前表長(zhǎng)/靜態(tài)鏈表類型#為了進(jìn)行基數(shù)排序,需要定義在分配和收集操作時(shí)用到的指針數(shù)組:typedef int arrtype_n10; typedef int arrtype_c26;/十進(jìn)制數(shù)字指針數(shù)組/26 個(gè)字母指針數(shù)組#4.2 . 函數(shù)描述void distribute(slnode *sl,int i,
8、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; / 將數(shù)字字符轉(zhuǎn)化為對(duì)應(yīng)的數(shù)值型數(shù)字 if(!fj)fj=p;elseslej.next=p;ej=p;/ 將 p 指向的結(jié)點(diǎn)插入到第 j 個(gè)結(jié)點(diǎn)void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)int j,t;for(j=0;!fj;j+);/找第一個(gè)非空子表sl0.next=fj;t=ej;while(j<10-1)for(
9、j=j+1;j<10-1&&!fj;j+); /找下一個(gè)非空子表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
10、>=0;i-)distribute_c(l.sl,i,fc,ec); collect_c(l.sl,i,fc,ec);/鏈接兩個(gè)非空子表/將普通的線性表改為靜態(tài)鏈表/按最低位優(yōu)先依次對(duì)各關(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.nex
11、t=p;p=q;折半查找函數(shù)定義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;5、測(cè)試數(shù)據(jù) 編譯后運(yùn)行,顯示: 錄入信息A/航班號(hào) 起點(diǎn)站 終點(diǎn)站 班期 起飛時(shí)間 到達(dá)時(shí)間 機(jī)型 票價(jià)錄入: CA1544 合肥
12、北京 1.2.4.510551240 733 960顯示:是否繼續(xù)? y/n:錄入: y顯示:航班號(hào) 起點(diǎn)站終點(diǎn)站班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)錄入: MU5341 上海廣州每日14201615M901280顯示:是否繼續(xù)? y/n:錄入: y顯示: 航班號(hào) 起點(diǎn)站終點(diǎn)站班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)錄入: CZ3869 重慶深圳2.4.6085510357331010顯示:是否繼續(xù)? y/n:錄入: n錄入航班信息后,屏幕顯示:航班信息查詢系統(tǒng)*1航班號(hào)*2起點(diǎn)站*3終點(diǎn)站*4起飛時(shí)間*5.到達(dá)時(shí)間*0.退出*(0-5)號(hào)服務(wù)項(xiàng)目:錄入:1顯示:輸入要查詢的航班號(hào)(字母要大寫):錄入:CA154
13、4顯示:航班號(hào)起點(diǎn)站終點(diǎn)站班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)CA1544 合肥 北京 1.2.4.51055124073396013館-號(hào)服務(wù)項(xiàng)目次*航班信息查詢系統(tǒng)*牛去爲(wèi)氐bug協(xié)走楚構(gòu)庚沒(méi)誦弋國(guó)足xb口!rS站! 班點(diǎn)希岀 mV 暫 12 3 4 5 0 *輸入要查詢的航班號(hào)I字母要大寫:CA1544航班號(hào)稅點(diǎn)站峰髦班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)CA1544 合月巴 j 匕樂(lè) 1.2.4,510551240733?60*航班信息查詢耳范*:強(qiáng)屛補(bǔ)-一 口基站間一班= 一 一蟹終起臺(tái)'«»-12 3 4錄入:2顯示:輸入要查詢的航班起點(diǎn)站:錄入:合肥顯示:航班號(hào)起點(diǎn)站終
14、點(diǎn)站班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)顯示:CA1544 合肥 北京 1.24510551240733 9607:;豪殳Dmbug闔垂曲諜設(shè)源代礙e占回伯峙號(hào)服窮項(xiàng)目詐畫入要查詢的航坯亙點(diǎn)站:合肥航班號(hào)退點(diǎn)站菸宜苗班期起飛時(shí)間至I卜司機(jī)型票價(jià)CA1544 合肥北杲 1.2.4.51055 1240 7331!K!B*翩信息查詢系統(tǒng)* 養(yǎng)站馬 ?駅 12 3 4 5 0 聲* * # *奸站號(hào)服務(wù)項(xiàng)目汕前入要查詢的骯班終點(diǎn)姑:北京航班號(hào)CA1S44終嚳班期起飛時(shí)間到達(dá)時(shí)間機(jī)型稟價(jià)j 匕示1,2.4.51055 1240 733 M015=| 回-J一:-一荃站厲一班支點(diǎn)訊岀 -起剰 « -1
15、2 3 4 5 0H:'湧決Wbug曲克曲侯設(shè)源代碼心«-s號(hào)服務(wù)瑣目堪輸A.要查誼的航班號(hào)字母要大寫:acl514無(wú)此航班信息,可能是輸入錯(cuò)誤! 航班信息查詢系統(tǒng)-航班號(hào)赳點(diǎn)站終苞站班期起飛時(shí)間到記廠間機(jī)型票價(jià)CR1544 合肥 北帛 1.2,.510551240?33?60*航題信息查詢系統(tǒng)*#17ST號(hào)服務(wù)項(xiàng)目拓渝入要查詢的航班到達(dá)時(shí)|HJ:1240航班號(hào)卻站怨姑班期起飛時(shí)間到達(dá)時(shí)間機(jī)型票價(jià)CR1544 合肥 北杲 1,2,4.510551240733?60#* 呂站站鬧 班點(diǎn)點(diǎn)辭 Hi12 350錄入:2顯示:輸入要查詢的航班起點(diǎn)站錄入:廣州顯示: H :譚設(shè)Debu
16、 g躅彌結(jié)物送設(shè)源代碼exe'I = |回EMI#侗-恥號(hào)眾務(wù)頂目汐輸入要查詢的航班起點(diǎn)站:廣州蔥申曙爭(zhēng)嚴(yán)間到達(dá)時(shí)間機(jī)型票價(jià)#附錄源程序:#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 other
17、s;int next;slnode;typedef 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 col
18、lect(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,t; for(j=0;!fj;j+);sl0.next=fj;19t=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.n
19、ext)j=slp.keysi%65;if(!fj)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
20、,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);21collect(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+)wh
21、ile(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;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=
22、mid+1;return 0;void seqsearch(sllist l,char key,int i)int j,k,m=0;printf("n");printf(" 航班號(hào) 起點(diǎn)站 終點(diǎn)站 班期 起飛時(shí)間 到達(dá)時(shí)間 機(jī)型 票價(jià) 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;23case 4:k=strcmp(key,l.slj.othe
23、rs.time1);break;case 5:k=strcmp(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(" 無(wú)此航班信息,可能是
24、輸入錯(cuò)誤! n");printf("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.航 班 號(hào)*n");printf(" *2.起 點(diǎn) 站*n");printf(" *3.終 點(diǎn) 站*n");printf(
25、" *4.起飛時(shí)間*n");printf(" *5.到達(dá)時(shí)間*n");printf(" *0.退出*n");printf(" n");printf(" (0-5) 號(hào)服務(wù)項(xiàng)目 :"); scanf("%d",&i);printf("n");switch(i)case 1:printf(" 輸入要查詢的航班號(hào) (字母要大寫 ):");scanf("%s",key);k=binsearch(l,key);prin
26、tf("n");if(k=0)printf(" 無(wú)此航班信息,可能是輸入錯(cuò)誤! n");elseprintf(" 航班號(hào) 起點(diǎn)站 終點(diǎn)站 班期 起飛時(shí)間 到達(dá)時(shí)間 機(jī)型 票價(jià) 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",ke
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版洗衣機(jī)租賃與銷售相結(jié)合的服務(wù)合同3篇
- 結(jié)婚儀式上新郎講話致辭8篇
- 二零二五版宣傳費(fèi)用預(yù)算合同范本3篇
- 2025-2030全球工具和儲(chǔ)存箱行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)高功率氮化鎵藍(lán)光激光器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球CNC編程和仿真軟件行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)殺螟腈行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 23年-24年員工三級(jí)安全培訓(xùn)考試題及參考答案(能力提升)
- 2024年公司項(xiàng)目部負(fù)責(zé)人安全教育培訓(xùn)試題附答案(完整版)
- 2024年企業(yè)主要負(fù)責(zé)人安全培訓(xùn)考試題附答案(模擬題)
- 物流服務(wù)項(xiàng)目的投標(biāo)書(shū)
- 地鐵車站低壓配電及照明系統(tǒng)
- C語(yǔ)言程序設(shè)計(jì)(慕課版 第2版)PPT完整全套教學(xué)課件
- 行業(yè)會(huì)計(jì)比較(第三版)PPT完整全套教學(xué)課件
- 值機(jī)業(yè)務(wù)與行李運(yùn)輸實(shí)務(wù)(第3版)高職PPT完整全套教學(xué)課件
- 高考英語(yǔ)語(yǔ)法填空專項(xiàng)訓(xùn)練(含解析)
- 42式太極劍劍譜及動(dòng)作說(shuō)明(吳阿敏)
- 危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
- 巨鹿二中骨干教師個(gè)人工作業(yè)績(jī)材料
- 《美的歷程》導(dǎo)讀課件
- 心電圖 (史上最完美)課件
評(píng)論
0/150
提交評(píng)論