版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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í)踐教學(xué)環(huán)節(jié)任務(wù)書(shū)</p><p> -----校園交通導(dǎo)游系統(tǒng)</p><p><b> 目的:</b></p><p> 通過(guò)布置具有一定難度的實(shí)際程序設(shè)計(jì)項(xiàng)目,使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和操作實(shí)現(xiàn)算法,以及它們?cè)诔绦蛑械氖褂梅椒?;使學(xué)生掌握分析問(wèn)題,求解
2、問(wèn)題的方法并提高學(xué)生設(shè)計(jì)編程實(shí)現(xiàn)的能力。</p><p><b> 2、要求:</b></p><p><b> 基本要求:</b></p><p> 要求利用C\C++語(yǔ)言來(lái)完成系統(tǒng)的設(shè)計(jì); </p><p> 突出C語(yǔ)言的函數(shù)特征(以多個(gè)函數(shù)實(shí)現(xiàn)每一個(gè)子功能)或者C++語(yǔ)言面向?qū)ο蟮木幊?/p>
3、思想;</p><p><b> 畫(huà)出功能模塊圖;</b></p><p> 進(jìn)行簡(jiǎn)單界面設(shè)計(jì),能夠?qū)崿F(xiàn)友好的交互;</p><p> 具有清晰的程序流程圖和數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義;</p><p> 熟練掌握C語(yǔ)言或者C++語(yǔ)言的各種操作。</p><p><b> 創(chuàng)新要求:&
4、lt;/b></p><p> 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如系統(tǒng)用戶功能控制,改進(jìn)算法的實(shí)現(xiàn),實(shí)現(xiàn)友好的人機(jī)交互等等 </p><p><b> 設(shè)計(jì)流程圖</b></p><p><b> 菜單顯示:</b></p><p> 數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義:</p>&l
5、t;p><b> 1、頂點(diǎn)定義:</b></p><p> typedef struct </p><p><b> {</b></p><p> VertexType vex[NUM];</p><p> ArcCell arcs[NUM][NU
6、M];</p><p> int vexnum,arcnum;</p><p> }MGraph; </p><p><b> 2、路徑長(zhǎng)度:</b></p><p> typedef struct ArcCell</p><p><b> {</b></p
7、><p><b> int adj; </b></p><p><b> }ArcCell;</b></p><p> 3、頂點(diǎn)存放的信息:</p><p> typedef struct VertexType </p><p><b> {</b>
8、;</p><p> int number; </p><p> char *sight; </p><p> char *description;</p><p> }VertexType;</p><p><b> 詳細(xì)程序清單:</b></p><p>
9、 #include <string.h></p><p> #include <stdio.h> </p><p> #include <malloc.h></p><p> #include <stdlib.h></p><p> #define Max 20000</p>
10、<p> #define NUM 9</p><p> typedef struct ArcCell</p><p><b> {</b></p><p><b> int adj; </b></p><p><b> }ArcCell;</b><
11、/p><p> typedef struct VertexType </p><p><b> {</b></p><p> int number; </p><p> char *sight; </p><p> char *description;</p><p&g
12、t; }VertexType; </p><p> typedef struct</p><p><b> {</b></p><p> VertexType vex[NUM];</p><p> ArcCell arcs[NUM][NUM];</p><p> int vexnum
13、,arcnum;</p><p> }MGraph; </p><p> MGraph G; </p><p> int P[NUM][NUM]; </p><p> long int D[NUM]; </p><p> int x[9]={0};</p><p> void
14、 CreateUDN(int v,int a);</p><p> void narrate(); </p><p> void ShortestPath(int num);</p><p> void output(int sight1,int sight2);</p><p> char Menu(); </p>
15、<p> void search(); </p><p> char SearchMenu(); </p><p> void HaMiTonian(int); </p><p> void NextValue(int); </p><p> void display();</p>&l
16、t;p> int main()</p><p><b> {</b></p><p> int v0,v1;</p><p><b> char ck;</b></p><p> CreateUDN(NUM,11);</p><p><b> do
17、</b></p><p><b> { </b></p><p> ck=Menu();</p><p> switch(ck)</p><p><b> {</b></p><p><b> case '1':</b&g
18、t;</p><p> system("cls");</p><p> // narrate();</p><p> printf("\n\n\t\t\t請(qǐng)選擇起點(diǎn)景點(diǎn)(0~8):");</p><p> scanf("%d",&v0);</p><
19、;p> printf("\t\t\t請(qǐng)選擇終點(diǎn)景點(diǎn)(0~8):");</p><p> scanf("%d",&v1);</p><p> ShortestPath(v0); </p><p> output(v0,v1); </p><p> printf("\
20、n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p> case '2':search();</p><p><b
21、> break;</b></p><p><b> case '3':</b></p><p> system("cls");</p><p> //narrate();</p><p><b> x[0]=1; </b></p
22、><p> HaMiTonian(1);</p><p> printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p&
23、gt;<p><b> };</b></p><p> }while(ck!='e');</p><p><b> }</b></p><p> char Menu() </p><p><b> {</b></p><
24、;p><b> char c;</b></p><p><b> int flag;</b></p><p><b> do{</b></p><p><b> flag=1;</b></p><p> system("cls&q
25、uot;);</p><p> narrate();</p><p> printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> pri
26、ntf("\t\t\t┃ 1、查詢景點(diǎn)路徑 ┃\n");</p><p> printf("\t\t\t┃ 2、查詢景點(diǎn)信息 ┃\n");</p><p> printf("\t\t\t┃ 3、推薦參觀路線 ┃\n");</p><
27、;p> printf("\t\t\t┃ e、退出 ┃\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");&
28、lt;/p><p> printf("\t\t\t\t請(qǐng)輸入您的選擇:");</p><p> scanf("%c",&c);</p><p> if(c=='1'||c=='2'||c=='3'||c=='e')</p><p>
29、;<b> flag=0;</b></p><p> }while(flag);</p><p><b> return c;</b></p><p><b> }</b></p><p> char SearchMenu() </p><p>
30、;<b> {</b></p><p><b> char c;</b></p><p><b> int flag;</b></p><p><b> do{</b></p><p><b> flag=1;</b><
31、;/p><p> system("cls");</p><p> narrate();</p><p> printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p> printf("\t\t\t┃
32、 ┃\n");</p><p> printf("\t\t\t┃ 1、按照景點(diǎn)編號(hào)查詢 ┃\n");</p><p> printf("\t\t\t┃ 2、按照景點(diǎn)名稱查詢 ┃\n");</p><p> printf("\t\t\t┃ e、返回
33、 ┃\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");</p><p> printf("\t\t\t\t
34、請(qǐng)輸入您的選擇:");</p><p> scanf("%c",&c);</p><p> if(c=='1'||c=='2'||c=='e')</p><p><b> flag=0;</b></p><p> }while(
35、flag);</p><p><b> return c;</b></p><p><b> }</b></p><p> void search() </p><p><b> {</b></p><p><b> int num;
36、</b></p><p><b> int i;</b></p><p><b> char c;</b></p><p> char name[20];</p><p><b> do</b></p><p><b>
37、{</b></p><p> system("cls");</p><p> c=SearchMenu();</p><p> switch (c)</p><p><b> {</b></p><p> case '1': </p&
38、gt;<p> system("cls");</p><p> narrate();</p><p> printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)編號(hào):");</p><p> scanf("%d",&num);</p><p> for(i
39、=0;i<NUM;i++)</p><p><b> {</b></p><p> if(num==G.vex[i].number)</p><p><b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p
40、><p> printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p> printf("\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><
41、;p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(i==NUM)</p><p><b> {</b></p><p> pr
42、intf("\n\n\t\t\t沒(méi)有找到!");</p><p> printf("\n\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> }</b></p>&l
43、t;p><b> break;</b></p><p><b> case '2':</b></p><p> narrate();</p><p> system("cls");</p><p> printf("\n\n\t\t請(qǐng)輸入
44、您要查找的景點(diǎn)名稱:");</p><p> scanf("%s",name);</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> if(!strcmp(name,G.vex[i].sight))</p>
45、<p><b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p><p> printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p> printf("\n
46、\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b&
47、gt;</p><p> if(i==NUM)</p><p><b> {</b></p><p> printf("\n\n\t\t\t沒(méi)有找到!");</p><p> printf("\n\n\t\t\t按任意鍵返回...");</p><p&g
48、t; getchar();</p><p> getchar();</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> }while(c!='e
49、');</p><p><b> }</b></p><p> void CreateUDN(int v,int a)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> G.ve
50、xnum=v; </p><p> G.arcnum=a;</p><p> for(i=0;i<G.vexnum;++i) G.vex[i].number=i;</p><p> G.vex[0].sight="行政樓";</p><p> G.vex[0].description="學(xué)校領(lǐng)導(dǎo),辦
51、公室之地。";</p><p> G.vex[1].sight="小禮堂";</p><p> G.vex[1].description="業(yè)余活動(dòng),舉辦各種晚會(huì)。";</p><p> G.vex[2].sight="11教";</p><p> G.vex[2]
52、.description="教室,自習(xí)室";</p><p> G.vex[3].sight="10教";</p><p> G.vex[3].description="教室,自習(xí)室";</p><p> G.vex[4].sight="圖書(shū)館";</p><p
53、> G.vex[4].description="閱覽,借閱圖書(shū)";</p><p> G.vex[5].sight="北食堂";</p><p> G.vex[5].description="餐飲休閑";</p><p> G.vex[6].sight="荷花池";<
54、/p><p> G.vex[6].description="休閑,放松心情";</p><p> G.vex[7].sight="南食堂";</p><p> G.vex[7].description="餐飲休閑";</p><p> G.vex[8].sight="宿
55、舍";</p><p> G.vex[8].description="休息";</p><p> for(i=0;i<G.vexnum;++i)</p><p> for(j=0;j<G.vexnum;++j)</p><p> G.arcs[i][j].adj=Max;</p>
56、<p> G.arcs[0][1].adj=G.arcs[1][0].adj=12;</p><p> G.arcs[0][2].adj=G.arcs[2][0].adj=6;</p><p> G.arcs[0][3].adj=G.arcs[3][0].adj=5;</p><p> G.arcs[1][4].adj=G.arcs[4][1].
57、adj=11;</p><p> G.arcs[2][4].adj=G.arcs[4][2].adj=2;</p><p> G.arcs[3][5].adj=G.arcs[5][3].adj=4;</p><p> G.arcs[5][7].adj=G.arcs[7][5].adj=9;</p><p> G.arcs[4][6].
58、adj=G.arcs[6][4].adj=2;</p><p> G.arcs[4][7].adj=G.arcs[7][4].adj=14;</p><p> G.arcs[6][8].adj=G.arcs[8][6].adj=7;</p><p> G.arcs[7][8].adj=G.arcs[8][7].adj=3;</p><p&g
59、t;<b> }</b></p><p> void narrate()</p><p><b> {</b></p><p> int i,k=0;</p><p> printf("\n\t\t***************軟工移動(dòng)應(yīng)用開(kāi)發(fā)2班 胡俊凱**********
60、*****\n");</p><p> printf("\n\t\t*****************學(xué)號(hào):1115115645***************\n");</p><p> printf("\n\t\t*****************歡迎使用校園導(dǎo)游程序***************\n");</p>&l
61、t;p> printf("\t__________________________________________________________________\n");</p><p> printf("\t\t景點(diǎn)名稱\t\t|\t景點(diǎn)描述\n");</p><p> printf("\t_________________
62、_______________|_________________________________\n");</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> printf("\t (%2d)%-10s\t\t\t|\t%-25s\n",i,
63、G.vex[i].sight,G.vex[i].description);</p><p><b> k=k+1;</b></p><p><b> }</b></p><p> printf("\t________________________________|_____________________
64、____________\n");</p><p><b> }</b></p><p> void ShortestPath(int num)</p><p><b> {</b></p><p> int v,w,i,t; </p><p> int
65、final[NUM];</p><p><b> int min;</b></p><p> for(v=0;v<NUM;v++)</p><p><b> {</b></p><p> final[v]=0; </p><p> D[v]=G.arcs[nu
66、m][v].adj;</p><p> for(w=0;w<NUM;w++)</p><p> P[v][w]=0;</p><p> if(D[v]<20000) </p><p><b> {</b></p><p> P[v][num]=1;</p>&l
67、t;p> P[v][v]=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> D[num]=0;</b></p><p> final[num]=1; </p><p>
68、for(i=0;i<NUM;++i) </p><p><b> {</b></p><p> min=Max; </p><p> for(w=0;w<NUM;++w)</p><p> if(!final[w]) </p><p> if(D[w]<
69、min) </p><p><b> {</b></p><p><b> v=w;</b></p><p><b> min=D[w];</b></p><p><b> }</b></p><p> final[v]
70、=1; </p><p> for(w=0;w<NUM;++w) </p><p> if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))</p><p><b> {</b></p><p> D[w]=min+G.arcs[v][w].adj;
71、</p><p> for(t=0;t<NUM;t++)</p><p> P[w][t]=P[v][t];</p><p> P[w][w]=1;</p><p><b> }</b></p><p><b> }</b></p><p&
72、gt;<b> }</b></p><p> void output(int sight1,int sight2) </p><p><b> {</b></p><p> int a,b,c,d,q=0;</p><p> a=sight2; </p><p&
73、gt; if(a!=sight1) </p><p><b> {</b></p><p> printf("\n\t從%s到%s的最短路徑是",G.vex[sight1].sight,G.vex[sight2].sight);</p><p> printf("\t(最短距離為 %dm.)\n\n\t
74、",D[a]); </p><p> printf("\t%s",G.vex[sight1].sight); </p><p> d=sight1; </p><p> for(c=0;c<NUM;++c)</p><p><b> {</b></p>
75、<p> gate:; </p><p> P[a][sight1]=0;</p><p> for(b=0;b<NUM;b++)</p><p><b> {</b></p><p> if(G.arcs[d][b].adj<20000&&P[a][b]) &
76、lt;/p><p><b> {</b></p><p> printf("-->%s",G.vex[b].sight); </p><p> q=q+1; </p><p> P[a][b]=0;</p><p><b> d=b; <
77、/b></p><p> if(q%8==0) printf("\n");</p><p> goto gate;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</
78、b></p><p><b> }</b></p><p><b> }</b></p><p> void HaMiTonian(int m) </p><p><b> {</b></p><p> if(m>8) ret
79、urn; </p><p> L: NextValue(m); </p><p> if(x[m]==0) </p><p><b> return; </b></p><p> if(m==7&&G.arcs[0][x[8]-1].adj!=20000) </p><
80、;p> display(); </p><p><b> else </b></p><p> HaMiTonian(m+1); </p><p> goto L; </p><p><b> }</b></p><p> void NextVa
81、lue(int k) </p><p><b> { </b></p><p><b> int j; </b></p><p> l:x[k]=(x[k]+1)%10; </p><p> if(x[k]==0) </p><p><b> r
82、eturn; </b></p><p> if(G.arcs[x[k-1]-1][x[k]-1].adj!=20000) </p><p><b> { </b></p><p> for(j=0;j<k;j++) </p><p> if(x[j]==x[k]) </p>
83、<p><b> goto l; </b></p><p> return; </p><p><b> } </b></p><p><b> else </b></p><p> goto l; </p>&l
84、t;p><b> } </b></p><p> void display() </p><p><b> { </b></p><p><b> int i=0;</b></p><p> printf("\n\n\t");</
85、p><p> for(i=0;i<8;i++) </p><p> printf("%s->",G.vex[x[i]-1].sight); </p><p> printf("出口");</p><p> printf("\n");</p><
86、p><b> } </b></p><p><b> 總結(jié):</b></p><p> 本次課程設(shè)計(jì)使我得到了鍛煉,學(xué)到了許多東西。書(shū)本上學(xué)到的知識(shí)在課程設(shè)計(jì)中得到了實(shí)踐,鞏固了自己學(xué)習(xí)的知識(shí)。對(duì)圖的應(yīng)用與理解也有了很大的提高,同時(shí)體會(huì)到了數(shù)據(jù)結(jié)構(gòu)的作用,鍛煉了自己C語(yǔ)言的編程能力。在課程設(shè)計(jì)中,我也發(fā)現(xiàn)了自身不足,希望自己能夠在總
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)_校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)游系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu) 校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)游系統(tǒng)設(shè)計(jì)
- 校園導(dǎo)游咨詢系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--校園導(dǎo)游系統(tǒng)
- 校園導(dǎo)游咨詢系統(tǒng)---數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——校園導(dǎo)游咨詢系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-- 校園導(dǎo)游系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢課程設(shè)計(jì)報(bào)告
- 校園導(dǎo)游咨詢系統(tǒng)-中南大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游的咨詢程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
評(píng)論
0/150
提交評(píng)論