版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書(shū)</p><p><b> 姓名: </b></p><p><b> 性別: </b></p><p><b> 班級(jí):</b></p><p><b> 學(xué)號(hào):</b></p>&l
2、t;p><b> 日期:</b></p><p> 一、 課程設(shè)計(jì)題目:航班信息查詢(xún)與檢索</p><p> 二、 課程設(shè)計(jì)內(nèi)容: </p><p> 1、設(shè)計(jì)一個(gè)航班信息查詢(xún)與檢索系統(tǒng),每個(gè)航班記錄包括:航班號(hào)、起始站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間、有效期。</p><p><b> 2、要有輸
3、入模塊。</b></p><p> 3、對(duì)航班信息進(jìn)行排序與查找。</p><p><b> 三、 算法設(shè)計(jì):</b></p><p><b> 設(shè)計(jì)思路:</b></p><p> 根據(jù)題目要求,程序必須實(shí)現(xiàn)航班信息的錄入和查詢(xún)。程序首先定義一個(gè)用于儲(chǔ)存航班信息的數(shù)據(jù)類(lèi)型,再由
4、用戶(hù)錄入航班數(shù)據(jù),在錄入的同時(shí)并對(duì)數(shù)據(jù)進(jìn)行基數(shù)排序,最后執(zhí)行數(shù)據(jù)查詢(xún)和檢索。在查詢(xún)?cè)O(shè)計(jì)中,使用折半查找法對(duì)排好序的航班數(shù)據(jù)按航班號(hào)實(shí)現(xiàn)快速查找,按起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間查找的則采用順序查詢(xún)方法。用到了文件的一般概念。</p><p> 主要算法流程圖如下:</p><p> 四、 程序正確性驗(yàn)證(指邊界測(cè)試數(shù)據(jù),即程序?qū)τ诰倪x擇的典型、苛刻而帶有刁難性的幾組輸入數(shù)據(jù)能夠得
5、出滿(mǎn)足要求的結(jié)果)</p><p> 截取的程序運(yùn)行情況如下圖所示</p><p> 五、 課程設(shè)計(jì)過(guò)程中出現(xiàn)的主要問(wèn)題、原因及解決方法:</p><p> 首先是要實(shí)現(xiàn)所要的功能需用什么數(shù)據(jù)結(jié)構(gòu)的問(wèn)題,比如排序問(wèn)題究竟用那一種,在同學(xué)的幫助下和上網(wǎng)搜尋資料,采用基數(shù)排序最符合,程序無(wú)法運(yùn)行 ,最后在大家的努力下一起修改錯(cuò)誤使得程序可以正常運(yùn)行。</p&
6、gt;<p> 六、 課程設(shè)計(jì)的主要收獲:</p><p> 1、 通過(guò)這次課程設(shè)計(jì)使我對(duì)平時(shí)課上所學(xué)的知識(shí)有了更加深刻的理解,增加了熟練應(yīng)用的程度,對(duì)解決問(wèn)題的思路和算法設(shè)計(jì)思想有了更深刻的認(rèn)識(shí),解決問(wèn)題的思路是關(guān)鍵。</p><p> 2、 這次課程設(shè)計(jì)使我看到了自身還存在著很多不足,對(duì)與一些基本的問(wèn)題掌握的不是很扎實(shí),在設(shè)計(jì)過(guò)程中平添了不少麻煩。要繼續(xù)對(duì)知識(shí)進(jìn)行鞏
7、固,加深印象。</p><p> 3、 遇到問(wèn)題要積極與同學(xué)或者是老師進(jìn)行溝通,這樣能夠少走不少?gòu)澛贰?lt;/p><p> 4、 以后不管是做什么應(yīng)定要用心才能做好,不能偷工減料。</p><p> 七、 對(duì)今后課程設(shè)計(jì)的建議:</p><p> 1、 今后的課程設(shè)計(jì)可以更加貼近于生活,貼近于現(xiàn)實(shí),提高我們把書(shū)上學(xué)到的知識(shí)應(yīng)用到現(xiàn)實(shí)生
8、活中的能力,以及在現(xiàn)實(shí)社會(huì)中遇到問(wèn)題的解決能力。</p><p> 2、可以變換一種方式,減少或者是杜絕同學(xué)鉆空子和偷工減料的機(jī)會(huì)。</p><p><b> 附錄(源程序代碼)</b></p><p> #include <iostream.h></p><p> #include <stri
9、ng.h></p><p> #include <iomanip.h></p><p> #include <fstream.h></p><p> #define MAXSIZE 50</p><p> typedef struct{</p><p><b> int
10、 hour;</b></p><p> int minute;</p><p><b> }time;</b></p><p> typedef struct{</p><p><b> int year;</b></p><p> int month;
11、</p><p><b> int day;</b></p><p><b> }date;</b></p><p> typedef struct information</p><p><b> {</b></p><p> char nu
12、mber[7]; //航班號(hào)</p><p> time start; //起點(diǎn)站</p><p> time end; //終點(diǎn)站</p><p> char start_station[16]; //起飛時(shí)間</p><p> char end_station[16]; //到達(dá)時(shí)間</p
13、><p> date date_1; //有效期</p><p> date date_2;</p><p> information *next;</p><p><b> }info;</b></p><p> void screen()</p><p>
14、<b> {</b></p><p> cout<<" 【航班信息的查詢(xún)與檢索】"<<endl;</p><p> cout<<" ★*******************************★"<<endl;</
15、p><p> cout<<" 1.插入航班信息 "<<endl;</p><p> cout<<" 2.按起終點(diǎn)查詢(xún) "<<endl;</p><p> cout<<"
16、 3.按出行日期查詢(xún) "<<endl;</p><p> cout<<" 4.按航班號(hào)進(jìn)行查詢(xún)"<<endl;</p><p> cout<<" ★*******************************★"<<en
17、dl;</p><p><b> }</b></p><p> void Init_info(info *info_1[],int &count)</p><p><b> {</b></p><p> fstream iofile("hangban.txt",i
18、os::in|ios::out|ios::binary);</p><p><b> while(1)</b></p><p><b> {</b></p><p> info_1[count]=new info;</p><p> iofile.read((char*)info_1[cou
19、nt],sizeof(info));</p><p> if(iofile.eof())break;</p><p> if(count) info_1[count-1]->next=info_1[count];</p><p> info_1[count]->next=NULL;</p><p><b> co
20、unt++;</b></p><p><b> }</b></p><p><b> }</b></p><p> void insert_info(info *info_1[],int &count)</p><p><b> {</b></
21、p><p> info_1[count]=new info;</p><p> cout<<"航班號(hào):";</p><p> cin>>info_1[count]->number;</p><p> cout<<"起點(diǎn)站:";</p><
22、p> cin>>info_1[count]->start_station;</p><p> cout<<"終點(diǎn)站:";</p><p> cin>>info_1[count]->end_station;</p><p> cout<<"起飛時(shí)間(時(shí) 分):&qu
23、ot;;</p><p> cin>>info_1[count]->start.hour>>info_1[count]->start.minute;</p><p> cout<<"到達(dá)時(shí)間(時(shí) 分):";</p><p> cin>>info_1[count]->end.h
24、our>>info_1[count]->end.minute;</p><p> cout<<"有效期(年 月 日 年 月 日):";</p><p> cin>>info_1[count]->date_1.year>>info_1[count]->date_1.month>>info_1
25、[count]->date_1.day</p><p> >>info_1[count]->date_2.year>>info_1[count]->date_2.month>>info_1[count]->date_2.day;</p><p> if(count) info_1[count-1]->next=info_
26、1[count];</p><p> info_1[count]->next=NULL;</p><p><b> count++;</b></p><p><b> }</b></p><p> void distribute(info *info_1[],info *info_2[
27、],info *info_3[],int count,int state)</p><p><b> {</b></p><p> for(int i=0;i<26;i++)</p><p><b> {</b></p><p> info_2[i]=NULL;</p>
28、<p> info_3[i]=NULL;</p><p><b> }</b></p><p> for(int j=0;j<count;j++)</p><p><b> {</b></p><p> int value;</p><p> if
29、('a'<=info_1[j]->number[state])</p><p> value=info_1[j]->number[state]-'a';</p><p><b> else</b></p><p> value=info_1[j]->number[state]-
30、9;0';</p><p> if(!info_2[value])</p><p><b> {</b></p><p> info_2[value]=info_1[j];</p><p> info_3[value]=info_1[j];</p><p><b> }
31、</b></p><p><b> else</b></p><p><b> {</b></p><p> info_3[value]->next=info_1[j];</p><p> info_3[value]=info_1[j];</p><p&
32、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void collect(info *info_1[],info *info_2[],info *info_3[])</p><p><b&g
33、t; {</b></p><p> for(int i=0,j=0;i<26;i++)</p><p><b> {</b></p><p> while(info_2[i])</p><p><b> {</b></p><p> info_1
34、[j++]=info_2[i];</p><p> if(info_2[i]==info_3[i]) break;</p><p> info_2[i]=info_2[i]->next;</p><p><b> }</b></p><p><b> }</b></p>
35、<p><b> }</b></p><p> void radix(info *info_1[],info *info_2[],info *info_3[],int count)</p><p><b> {</b></p><p> for(int i=strlen(info_1[0]->num
36、ber)-1;0<=i;i--)</p><p><b> {</b></p><p> distribute(info_1,info_2,info_3,count,i);</p><p> collect(info_1,info_2,info_3);</p><p><b> }</b&g
37、t;</p><p><b> }</b></p><p> int bin_search(info *info_1[],char *str,int low,int high)</p><p><b> {</b></p><p><b> int mid;</b>&l
38、t;/p><p> while(low<=high)</p><p><b> {</b></p><p> mid=(low+high)/2;</p><p> if(!strcmp(info_1[mid]->number,str))</p><p> return mid;&
39、lt;/p><p> if(strcmp(info_1[mid]->number,str)<0)</p><p> low=mid+1;</p><p><b> else</b></p><p> high=mid-1;</p><p><b> }</b>
40、;</p><p> return (-1);</p><p><b> }</b></p><p> void print(info *info_1[],int state)</p><p><b> {</b></p><p> cout<<&quo
41、t;航班號(hào):"<<info_1[state]->number<<endl;</p><p> cout<<"起點(diǎn)站-->終點(diǎn)站:"<<info_1[state]->start_station<<"-->"<<info_1[state]->end_station&
42、lt;<endl;</p><p> cout<<"起飛時(shí)間-->到達(dá)時(shí)間:"<<info_1[state]->start.hour<<":"<<info_1[state]->start.minute</p><p> <<"-->"&l
43、t;<info_1[state]->end.hour<<":"<<info_1[state]->end.minute<<endl;</p><p> cout<<"有效期:"<<info_1[state]->date_1.year<<"."</p>
44、;<p> <<info_1[state]->date_1.month<<"."<<info_1[state]->date_1.day</p><p> <<"-->"<<info_1[state]->date_1.year<<"."<
45、/p><p> <<info_1[state]->date_2.month<<"."<<info_1[state]->date_2.day<<endl;</p><p><b> }</b></p><p> int *serach_adress(info *in
46、fo_1[],char str_1[],char str_2[],int count)</p><p><b> {</b></p><p> int *data;</p><p> data=new int[count+1];</p><p> for(int i=0,j=0;i<count;i++)&l
47、t;/p><p><b> {</b></p><p> if(!strcmp(info_1[i]->start_station,str_1)&&!strcmp(info_1[i]->end_station,str_2))</p><p><b> {</b></p><p
48、> print(info_1,i);</p><p> data[++j]=i;</p><p><b> }</b></p><p><b> }</b></p><p> data[0]=j;</p><p> cout<<"共有&
49、quot;<<data[0]<<"個(gè)記錄?。?!"<<endl;</p><p> return data;</p><p><b> }</b></p><p> void search_date(info *info_1[],int data[],int data_1,int da
50、ta_2,int data_3,int count)</p><p><b> {</b></p><p> int i,j,k,m=0;</p><p> int value_1,value_2,value_3;</p><p> if(data) k=data[0];</p><p>
51、 else k=count;</p><p> for(i=0;i<k;i++)</p><p><b> {</b></p><p> if(data) j=data[i+1];</p><p><b> else j=i;</b></p><p> va
52、lue_1=(info_1[j]->date_1.year-2000)*12*30+info_1[j]->date_1.month*30+info_1[j]->date_1.day;</p><p> value_2=(info_1[j]->date_2.year-2000)*12*30+info_1[j]->date_2.month*30+info_1[j]->date_2
53、.day;</p><p> value_3=(data_1-2000)*12*30+data_2*30+data_3;</p><p> if(value_1<=value_3&&value_3<=value_2)</p><p><b> {</b></p><p> print(
54、info_1,j);</p><p><b> m++;</b></p><p><b> }</b></p><p><b> }</b></p><p> cout<<"共有"<<m<<"個(gè)記錄?。?!
55、"<<endl;</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> int count=0;</p><p><b> int i;</b&g
56、t;</p><p> int data_1,data_2,data_3,data_4=1,data_5,*data;</p><p> char str_1[16],str_2[16];</p><p> info *info_1[MAXSIZE],*info_2[26],*info_3[26];</p><p> Init_inf
57、o(info_1,count);</p><p> radix(info_1,info_2,info_3,count);</p><p><b> screen();</b></p><p><b> while(1)</b></p><p><b> {</b><
58、;/p><p> char flag;</p><p> cout<<"歡迎進(jìn)入本系統(tǒng)請(qǐng)選者所要進(jìn)行的操作:";</p><p> cin>>flag;</p><p> switch(flag)</p><p><b> {</b></p&
59、gt;<p><b> case '1':</b></p><p> insert_info(info_1,count);</p><p> radix(info_1,info_2,info_3,count);</p><p><b> break;</b></p>&l
60、t;p><b> case '2':</b></p><p> cout<<"請(qǐng)輸入起點(diǎn)站,終點(diǎn)站:";</p><p> cin>>str_1>>str_2;</p><p> data=serach_adress(info_1,str_1,str_2,co
61、unt);</p><p> if(!data[0]) break;</p><p> cout<<"是否繼續(xù)按出行日期查詢(xún)(Y/N):";</p><p> cin>>flag;</p><p> if(flag=='N'||flag=='n') break
62、;</p><p> cout<<setfill('*')<<setw(81)<<endl;</p><p><b> data_4=0;</b></p><p><b> case '3':</b></p><p> co
63、ut<<"請(qǐng)輸入出行日期(年 月 日):";</p><p> cin>>data_1>>data_2>>data_3;</p><p> if(data_4) data=NULL;</p><p> search_date(info_1,data,data_1,data_2,data_3,c
64、ount);</p><p><b> break;</b></p><p><b> case '4':</b></p><p> cout<<"請(qǐng)輸入航班號(hào):";</p><p> cin>>str_1;</p>
65、<p> data_5=bin_search(info_1,str_1,0,count-1);</p><p> if(data_5==-1)</p><p><b> {</b></p><p> cout<<"無(wú)記錄!?。?quot;<<endl;</p><p>
66、<b> break;</b></p><p><b> }</b></p><p> print(info_1,data_5);</p><p><b> break;</b></p><p><b> case '0':</b>
67、;</p><p><b> {</b></p><p> fstream iofile("hangban.txt",ios::in|ios::out|ios::binary);</p><p> for(i=0;i<count;i++)</p><p><b> {</
68、b></p><p> iofile.write((char*)info_1[i],sizeof(info));</p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p>&
69、lt;p><b> default:</b></p><p> cout<<"輸入錯(cuò)誤?。?!"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航班信息查詢(xún)與檢索系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告——航班信息查詢(xún)系統(tǒng)(c++)
- 航班信息查詢(xún) 課程設(shè)計(jì)
- 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》航班查詢(xún)系統(tǒng)實(shí)驗(yàn)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航班管理系統(tǒng)
- 航班售票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 航班信息查詢(xún)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于web的航班信息查詢(xún)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(家族關(guān)系查詢(xún)系統(tǒng))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--家族關(guān)系查詢(xún)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論