數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第1頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第2頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第3頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第4頁
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、廣東技術(shù)師范學(xué)院天河學(xué)院數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告題 目:_ _學(xué) 號(hào): _ _班 級(jí): _ _ _ _小組成員:_指導(dǎo)教師:所屬系部:計(jì)算機(jī)科學(xué)與技術(shù)系  目錄題目一:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)2一、問題描述2二、基本要求2三、算法思想2四、數(shù)據(jù)結(jié)構(gòu)3五、模塊劃分4六、源程序4七、測(cè)試數(shù)據(jù)16八、運(yùn)行及測(cè)試情況161、主菜單界面172、輸入信息運(yùn)行測(cè)試(部分?jǐn)?shù)據(jù))173、運(yùn)行測(cè)試18題目二:校園導(dǎo)航22一、問題描述22二、基本要求22三、算法思想23四、模塊劃分23五、源程序25六、運(yùn)行及測(cè)試情況41課程設(shè)計(jì)總結(jié)44題目一:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)一、問題描述參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n.比賽分

2、成m個(gè)男子項(xiàng)目和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1.m,女子m+1.m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)二、基本要求1).可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2).能統(tǒng)計(jì)各學(xué)校總分;3).可以按學(xué)校編號(hào)、學(xué)??偡?、男女團(tuán)體總分排序輸出;4).可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。5) 數(shù)據(jù)存入文件并能隨時(shí)查詢 6) 規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱輸出形式:有中文提示,各學(xué)校

3、分?jǐn)?shù)為整形界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計(jì)的書上,請(qǐng)自學(xué)解決)請(qǐng)?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu)測(cè)試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。測(cè)試數(shù)據(jù)及測(cè)試結(jié)果請(qǐng)?jiān)谏辖坏馁Y料中寫明三、算法思想本課設(shè)要求輸入信息,統(tǒng)計(jì)分?jǐn)?shù),執(zhí)行排序與查找功能,在要求中沒有在建立數(shù)據(jù)之后進(jìn)行插入和刪除操作,而在排序和查找過程中有許多的隨機(jī)讀取數(shù)據(jù)操作,因此使用順序結(jié)構(gòu)

4、而不用鏈表。由于各個(gè)要求屬性具有一定的聯(lián)系,在定義數(shù)據(jù)時(shí)使用結(jié)構(gòu)體和結(jié)構(gòu)體數(shù)組來存儲(chǔ)信息數(shù)據(jù)??紤]到程序的要求在設(shè)計(jì)函數(shù)時(shí)將學(xué)校個(gè)數(shù)和項(xiàng)目個(gè)數(shù)設(shè)計(jì)為可變的數(shù)據(jù),為方便使用設(shè)計(jì)菜單函數(shù)(jiemian),而由于要求將信息存儲(chǔ)在文件中故設(shè)計(jì)文件的存儲(chǔ)(baocun),信息輸入函數(shù)(input)在輸入基本信息后由系統(tǒng)統(tǒng)計(jì)總分的內(nèi)容并全部存入文件file中,在接下來的函數(shù)中開始都需要讀取文件中的信息,信息的輸出(output)輸出輸入函數(shù)中統(tǒng)計(jì)后的各項(xiàng)信息,在排序輸出中使用冒泡排序法進(jìn)行不同關(guān)鍵字的排序,查詢函數(shù)(search)采用順序表的查找來完成。以下是部分程序流程圖:四、數(shù)據(jù)結(jié)構(gòu)(1) 項(xiàng)目數(shù)據(jù)

5、表:運(yùn)動(dòng)會(huì)系統(tǒng)先制定本次運(yùn)動(dòng)會(huì)所需的參賽項(xiàng)目。本數(shù)據(jù)表根據(jù)要求設(shè)計(jì)存儲(chǔ)每個(gè)項(xiàng)目的編號(hào)、要取的名次、各個(gè)名次名稱及各名次對(duì)應(yīng)的分?jǐn)?shù)。用于對(duì)以后項(xiàng)目情況的統(tǒng)計(jì)已及查詢。其中name,snum6由輸入信息輸入struct pro /表示項(xiàng)目的結(jié)構(gòu)體 string name; /項(xiàng)目名稱 int snum6; /前5名學(xué)校的編號(hào) p21;(2) 學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表根據(jù)要求儲(chǔ)存了各個(gè)參賽學(xué)校的總體情況,包括學(xué)校的編號(hào)、學(xué)校總分、男子團(tuán)體總分、女子團(tuán)體總分。其中name數(shù)據(jù)由輸入信息輸入,而其他三項(xiàng)內(nèi)容score, male, female將由系統(tǒng)進(jìn)行自動(dòng)統(tǒng)計(jì)。struct school /表示學(xué)校的結(jié)

6、構(gòu)體 int num; string name; /學(xué)校名稱 int score; /學(xué)校總分 int male; /男子總分 int female; /女子總分 sch21; 五、模塊劃分1、void bianhao() 功能是按學(xué)校編號(hào)查詢成績(jī)2、void zongfen() 功能是按學(xué)??偡峙判?、void baocun() 功能是保存數(shù)據(jù),按學(xué)??偡峙判?、void malezf() 功能是按學(xué)校男總分排序5、void femalezf() 功能是按學(xué)校女總分排序6、void cxsch() 功能是按學(xué)校編號(hào)查詢學(xué)校信息7、void cxxxm() 功能是按學(xué)校名字查詢學(xué)校信息六、源程

7、序#include<iostream>#include<string> #include<iomanip>#include<fstream>using namespace std; int n; /n個(gè)學(xué)校int m; /m個(gè)男子項(xiàng)目 int w; /w個(gè)女子項(xiàng)目struct pro /表示項(xiàng)目的結(jié)構(gòu)體 string name; /項(xiàng)目名稱 int snum6; /前5名學(xué)校的編號(hào) p21; struct school /表示學(xué)校的結(jié)構(gòu)體 int num; string name; /學(xué)校名稱 int score; /學(xué)??偡?int male;

8、 /男子總分 int female; /女子總分 sch21; int integral5=7,5,3,2,1;/前五名得分 void input() int i,j,y,x,a; printf("輸入學(xué)校數(shù)目(學(xué)校數(shù)目不大于20):"); y=0;while(1) scanf("%d",&n); if(n>=1&&n<=20)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:"); for(i=1;i<=n;i+) printf("輸入第%d個(gè)學(xué)

9、校的名稱:",i);cin>>; schi.score=0; schi.female=0; schi.male=0; schi.num=i; for(a=1;a<i;a+)if(=)printf("學(xué)校名稱已存在,請(qǐng)重新輸入.n");i-; printf("輸入男子項(xiàng)目數(shù):"); scanf("%d",&m);printf("輸入女子項(xiàng)目數(shù):");scanf("%d",&w);y=0; while(

10、1) if(m<=20&&m>=1&&w<=20&&w>=1)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:"); for(i=1;i<=m+w;i+) if(i<=m)printf("輸入男子組第%d個(gè)項(xiàng)目的名稱:n",i); elseprintf("輸入女子組第%d個(gè)項(xiàng)目的名稱:n",i-m);cin>>; if(i<=m)printf("輸入第%d個(gè)項(xiàng)目的前5名的學(xué)

11、校編號(hào):n",i); elseprintf("輸入第%d個(gè)項(xiàng)目的前5名的學(xué)校編號(hào):n",i-m); for(j=1;j<=5;j+) y=0;while(1) scanf("%d",&x);if(x>=1&&x<=n) y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:n"); pi.snumj=x; schx.score+=integralj-1; if(i<=m)schx.male+=integralj-1; else schx.fema

12、le+=integralj-1; void print(int i) cout<<schi.num<<setw(10)<<<<setw(8)<<schi.score<<setw(9) <<schi.male<<setw(10)<<schi.female<<endl; void bianhao() /按編號(hào)排序 int i,j; school t; for(i=1;i<n;i+) for(j=i;j<=n;j+) if(schi.num>sc

13、hj.num) t=schi;schi=schj;schj=t; printf("n按編號(hào)排列:n"); printf("=n");printf("編號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); for(i=1;i<=n;i+) print(i); cout<<endl; printf("=n"); void zongfen() /按學(xué)??偡峙判?int i,j; school t; for(i=1;i<n;i+) for(j=i;j<=n;j+) if(schi.score<

14、schj.score) t=schi;schi=schj;schj=t; printf("n按學(xué)??偡峙帕?n"); printf("=n");printf("編號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); for(i=1;i<=n;i+) print(i); cout<<endl; printf("=n"); void baocun() /保存數(shù)據(jù),按學(xué)??偡峙判?int i,j; school t; for(i=1;i<n;i+) for(j=i;j<=n;j+) if(schi

15、.score<schj.score) t=schi;schi=schj;schj=t; printf("n按學(xué)??偡峙帕?n"); printf("=n");ofstream fout;fout.open("運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì).txt");fout<<"編號(hào) 學(xué)校名稱 總分 男子總分 女子總分"<<endl;for(i=1;i<=n;i+) fout<<schi.num<<setw(13)<<<<setw(8)<

16、<schi.score<<setw(9) <<schi.male<<setw(10)<<schi.female<<endl; fout.close();printf("n保存成功!nn");printf("=n"); void malezf() /按學(xué)校男總分排序 int i,j; school t; for(i=1;i<n;i+) for(j=i;j<=n;j+) if(schi.male<schj.male) t=schi;schi=schj;schj=t; prin

17、tf("n按學(xué)校男子總分排列:n"); printf("=n");printf("編號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); for(i=1;i<=n;i+) print(i);cout<<endl; printf("=n"); void femalezf() /按學(xué)校女總分排序 int i,j; school t; for(i=1;i<n;i+) for(j=i;j<=n;j+) if(schi.female<schj.female) t=schi;schi=schj;s

18、chj=t; printf("n按學(xué)校女子總分排列:n"); printf("=n");printf("編號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); for(i=1;i<=n;i+) print(i); cout<<endl; printf("=n"); void cxsch() /查詢學(xué)校信息 int i,y,s; printf("輸入需要查詢的學(xué)校編號(hào):");y=0; while(1) scanf("%d",&s); if(s>=1&a

19、mp;&s<=n)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:"); printf("該學(xué)校相關(guān)信息:n"); printf("=n");printf("編號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); for(i=1;i<=n;i+) if(schi.num=s) print(i);break;cout<<endl;printf("=n"); void cxxxm() /查詢學(xué)校信息 int y,v,s; printf(

20、"輸入需要查詢的學(xué)校名稱:");y=0; cin>>; sch0.score=0; sch0.female=0; sch0.male=0; sch0.num=0; while(1) for(v=1;v<=n;v+)if(=)y=1;s=v;break;if(y)break; elseprintf("不存在該學(xué)校,請(qǐng)重新輸入!n"); cxxxm();printf("該學(xué)校相關(guān)信息:n"); printf("=n");printf("編

21、號(hào) 學(xué)校名稱 總分 男子總分 女子總分n"); print(s);cout<<endl;printf("=n"); void cxxmbh() /按項(xiàng)目編號(hào)查詢 int i,y,s,k;printf("n輸入需要查詢的項(xiàng)目項(xiàng)目類型: 1.男子組項(xiàng)目 2.女子組項(xiàng)目n"); scanf("%d",&k);if(k=1)printf("請(qǐng)輸入男子組項(xiàng)目的編號(hào):");y=0; while(1) scanf("%d",&s); if(s>=1&&

22、;s<=m)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:"); cout<<<<"前5名學(xué)校編號(hào)及名稱為:"<<endl; printf("=n");printf("名次 編號(hào) 學(xué)校名稱n"); for(i=1;i<=5;i+) cout<<" "<<i<<" "<<ps.snumi<<setw(12)<&l

23、t;sch ps.snumi .name<<endl; cout<<endl; printf("=n");if(k=2)printf("請(qǐng)輸入女子組項(xiàng)目的編號(hào):");y=0; while(1) scanf("%d",&s); if(s>=1&&s<=w)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:"); cout<<ps+<<"前5名學(xué)校編號(hào)及名稱為:"<

24、;<endl; printf("=n");printf("名次 編號(hào) 學(xué)校名稱n"); for(i=1;i<=5;i+) cout<<" "<<i<<" "<<ps+m.snumi<<setw(12)<<sch ps+m.snumi .name<<endl; cout<<endl; printf("=n");if(k!=1 && k!=2)printf("輸入數(shù)據(jù)

25、有誤,請(qǐng)重新輸入:n");cxxmbh(); void cxxmmc() /按項(xiàng)目名稱查詢 int i,s,k,b=0;printf("n輸入需要查詢的項(xiàng)目項(xiàng)目類型: 1.男子組項(xiàng)目 2.女子組項(xiàng)目n"); scanf("%d",&k);if(k=1)printf("請(qǐng)輸入男子組項(xiàng)目的名稱:");cin>>;for(s=1;s<=m;s+)if( = )b=s;if(b=0)printf("無此項(xiàng)目,請(qǐng)重新輸入:"); cxxmmc()

26、;else cout<<<<"前5名學(xué)校編號(hào)及名稱為:"<<endl; printf("=n"); printf("名次 編號(hào) 學(xué)校名稱n"); for(i=1;i<=5;i+) cout<<" "<<i<<" "<<pb.snumi<<setw(12)<<sch pb.snumi .name<<endl; cout<<endl; printf(

27、"=n");if(k=2)printf("請(qǐng)輸入女子組項(xiàng)目的名稱:"); cin>>;for(s=1+m;s<=m+w;s+)if( = )b=s;if(b=0)printf("無此項(xiàng)目,請(qǐng)重新輸入:"); cxxmmc();else cout<<<<"前5名學(xué)校編號(hào)及名稱為:"<<endl; printf("=n"); printf("名次 編號(hào) 學(xué)校名稱n");

28、for(i=1;i<=5;i+) cout<<" "<<i<<" "<<pb.snumi<<setw(12)<<sch pb.snumi .name<<endl; cout<<endl; printf("=n"); void jiemian() /菜單函數(shù) int z; while(1) printf("n=n");printf(" 0.按項(xiàng)目名稱查詢某個(gè)項(xiàng)目成績(jī)n");printf("

29、; 選擇您需要的操作(選擇序號(hào)):n"); printf(" 1.按學(xué)校編號(hào)排序輸出n"); printf(" 2.按學(xué)校總分排序輸出n"); printf(" 3.按學(xué)校男總分排序輸出n");printf(" 4.按學(xué)校女總分排序輸出n"); printf(" 5.按學(xué)校編號(hào)查詢某個(gè)學(xué)校成績(jī)n"); printf(" 6.查詢某個(gè)項(xiàng)目成績(jī)n"); printf(" 7.按學(xué)校名稱查詢某個(gè)學(xué)校成績(jī)n");printf(" 8.保存數(shù)據(jù).

30、n");printf(" 9.結(jié)束n");printf("=nn");scanf("%d",&z); if(z=0)cxxmmc();if(z=1)bianhao(); if(z=2)zongfen(); if(z=3)malezf(); if(z=4)femalezf(); if(z=5)cxsch(); if(z=6)cxxmbh(); if(z=7)cxxxm(); if(z=8)baocun();if(z=9)break; int main() /主函數(shù) input(); jiemian(); return

31、0; 七、測(cè)試數(shù)據(jù)項(xiàng)目學(xué)校編號(hào)1(男)編號(hào)2(男)編號(hào)3(女)取前5取前5取前5學(xué)校1名次3,32學(xué)校2名次124學(xué)校3名次251學(xué)校4名次513學(xué)校5名次445測(cè)試取學(xué)校個(gè)數(shù)為5,男子項(xiàng)目個(gè)數(shù)2.女子項(xiàng)目個(gè)數(shù)1八、運(yùn)行及測(cè)試情況1、主菜單界面2、輸入信息運(yùn)行測(cè)試(部分?jǐn)?shù)據(jù))3、運(yùn)行測(cè)試(1).按學(xué)校編號(hào)排序輸出(2).按學(xué)??偡峙判蜉敵?3).按學(xué)校男總分排序輸出(4).按學(xué)校女總分排序輸出(5).按學(xué)校編號(hào)查詢某個(gè)學(xué)校成績(jī)(6).查詢某個(gè)項(xiàng)目成績(jī)(7).按學(xué)校名稱查詢某個(gè)學(xué)校成績(jī)(8).保存數(shù)據(jù)(9).結(jié)束題目二:校園導(dǎo)航一、問題描述設(shè)計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場(chǎng)所,每?jī)蓚€(gè)場(chǎng)

32、所間可以有不同的路,且路長(zhǎng)也可能不同,找出從任意場(chǎng)所到達(dá)另一場(chǎng)所的最佳路徑(最短路徑)。二、基本要求1)、  基本要求:(1)      設(shè)計(jì)校園平面圖,在校園景點(diǎn)選10個(gè)左右景點(diǎn)。以圖中頂點(diǎn)表示校園內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等有關(guān)信息。(2)      為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。(3)      為來訪客人提供任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短路徑。2)、&#

33、160; 實(shí)現(xiàn)提示:一般情況下,校園的道路是雙向通行的,可設(shè)計(jì)校園平面圖是一個(gè)無向網(wǎng)。頂點(diǎn)和邊均含有相關(guān)信息。三、算法思想 本課設(shè)要求輸入信息,按照提示要求輸入所要查詢的地點(diǎn)的信息和亮點(diǎn)之間的最短路徑。系統(tǒng)有兩個(gè)分為使用者模式和管理者模式,使用者模式下時(shí)為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢,為來訪客人提供任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短路徑。管理者模式則是管理員對(duì)地點(diǎn)信息的修改。四、模塊劃分void Readinfo(); /讀取賦值定點(diǎn)節(jié)點(diǎn)信息函數(shù)void Writeinfo(); /寫入定點(diǎn)節(jié)點(diǎn)的信息函數(shù)void Writeweight_adj();/寫入鄰接矩陣權(quán)

34、值函數(shù)void Readweight_adj();/讀取賦值鄰接矩陣權(quán)值函數(shù)void Showmap(); /現(xiàn)實(shí)地圖函數(shù)void Mfweight_adj(); /修改鄰接矩陣的權(quán)值函數(shù)void Mfinfo(); /修改頂點(diǎn)結(jié)點(diǎn)的信息函數(shù)int User(); /普通用戶模式顯示函數(shù)void begin(); /數(shù)據(jù)初始化函數(shù)void Floyd(); /定義弗洛伊德算法求最短路徑函數(shù)void Outputshortest(); /定義輸出兩點(diǎn)最短路徑函數(shù)int Input(char *chh30); /定義文字輸入函數(shù)void Queryinfo(); /定義查詢地點(diǎn)信息函數(shù)int Ad

35、min(); /操作者模式顯示函數(shù)弗洛伊德算法求最短路徑函數(shù)流程圖輸出兩點(diǎn)最短路徑流程圖五、源程序#include<stdio.h>#include<string.h>#include<iostream.h>#define Num 14 #define charsum 10#define Maxedge 9999void Readinfo();void Writeweight_adj();void Readweight_adj();void Showmap();typedef struct /定義頂點(diǎn)結(jié)點(diǎn)char name10 ;int num; char

36、info100;jiedian;jiedian daohangNum; /定義頂點(diǎn)結(jié)點(diǎn)數(shù)組int quanNumNum; /定義鄰接矩陣int short_quanNumNum; /定義最短路徑權(quán)值 int wayNumNum; /用于弗洛伊德算法void begin() /頂點(diǎn),鄰接矩陣初始化int i,j;Readinfo();for(i=1;i<=Num;i+) /初始化鄰接矩陣的權(quán)值for(j=0;j<Num;j+)quanij=Maxedge;for(i=1;i<=Num;i+) /鄰接矩陣無環(huán)quanii=0;/quan12=90; /開始初始化鄰接矩陣中 上三角

37、 的權(quán)值Readweight_adj();void Floyd() /定義弗洛伊德算法求最短路徑函數(shù)int i,j,k;for(i=1;i<=Num;i+)for(j=0;j<Num;j+)short_quanij=quanij; /初始化最短路徑wayij=0; /初始化標(biāo)記中間點(diǎn)道路for(k=1;k<=Num;k+) /k用于標(biāo)記兩點(diǎn)之間的中間過渡頂點(diǎn)for(i=1;i<=Num;i+)for(j=1;j<=Num;j+)if(short_quanij>(short_quanik+short_quankj) /判斷是否存在更短路徑short_quani

38、j=(short_quanik+short_quankj); /賦值最短路徑wayij=wayji=k; /中間過渡頂點(diǎn)被賦值void Outputshortest() /定義輸出兩點(diǎn)最短路徑函數(shù)int q,w,a,b;char start20,end20;strcpy(start,"請(qǐng)輸入出發(fā)點(diǎn):");strcpy(end,"請(qǐng)輸入終點(diǎn):");begin();Floyd();printf("tttt查詢最短路徑系統(tǒng)!n");printf("%s",start);q=Input(&start); /輸入賦值

39、printf("n%s",end);w=Input(&end);printf("n");a=q;b=w;if(short_quanqw<Maxedge) /判斷兩點(diǎn)之間是否有連通性printf("%s",); /輸出起始位置while(wayqw!=0) /循環(huán)重復(fù)準(zhǔn)起始點(diǎn)while(wayqw!=0) /找到最短路徑中起始位置的第一個(gè)鄰接點(diǎn)(準(zhǔn)起始點(diǎn))w=wayqw; /終點(diǎn)賦值未中間過渡頂點(diǎn)printf("->%s",);q=w; /把起始

40、位置向后移(準(zhǔn)起始位置為此時(shí)起始位置)w=b; /恢復(fù)終點(diǎn)位置printf(" -> %s",);printf("n%s到%s的最短路程為:%d米n",,,short_quanab);elseprintf("%s 無法到達(dá) %sn",,);system("pause");Input(char *chh30) /定義文字輸入函數(shù),返回值為輸入字符串的序號(hào)或者返回輸入錯(cuò)誤(return

41、 0)char incharsum;int i,k=0;begin();while(k=0)scanf("%s",&in);for(i=1;i<=Num;i+)if(strcmp(,in)=0) /比較輸入字符串是否為存在k=i;if(k=0) printf("tttt輸入有誤,請(qǐng)重新輸入!n");printf("%s",chh);return(k);void Queryinfo() /定義查詢地點(diǎn)信息函數(shù)int w;char chh20;strcpy(chh,"請(qǐng)輸入查詢地點(diǎn):&qu

42、ot;);/chh=;begin();printf("%s",chh);w=Input(&chh); /輸入賦值printf("序號(hào):%dn名稱:%sn信息:%sn",daohangw.num,,);system("pause");void Readinfo()FILE *f;char a100100;int i,j,c,e,g;int ttt;f=fopen("info.txt","r");for(j=1;j<=(Num*3);

43、j+)fscanf(f,"%s",&(aj);fclose(f);for(i=0;i<Num-1;i+)c=3*i+1;e=c+1;g=e+1;daohangi+1.num=atoi(&ac);strcpy(daohangi+1.name,ae);strcpy(daohangi+1.info,ag);void Writeweight_adj()FILE *write;int i,j;write=fopen("鄰接矩陣.txt","wt");if ( write = NULL ) perror("打開文件

44、失敗");return;for(i=1;i<Num;i+)for(j=1;j<Num;j+)fprintf(write,"%5d ",quanij);fprintf(write,"n");if ( ferror(write) ) perror("寫文件失敗");fclose(write);void Readweight_adj()FILE *read;int i,j;read=fopen("鄰接矩陣.txt","r");for(i=1;i<Num;i+)for(j=1

45、;j<Num;j+)fscanf(read,"%d",&(quanij);fclose(read);void Mfweight_adj()int i,j,w;char iInfo30,jInfo30;system("cls");printf("ttt歡迎進(jìn)入路徑,距離更改系統(tǒng)!n");strcpy(iInfo,"請(qǐng)輸入更換首地址:");strcpy(jInfo,"請(qǐng)輸入更換尾地址:");printf("%s",iInfo);i=Input(&iInfo)

46、;printf("%s",jInfo);j=Input(&jInfo);printf("n請(qǐng)輸入修改的路徑距離:");scanf("%d",&w);Readweight_adj();quanij=quanji=w;Writeweight_adj();printf("n修改成功!n");system("pause");void Writeinfo()FILE *write;int i;write=fopen("info.txt","wt");

47、if ( write = NULL ) perror("打開文件失敗");return;for(i=1;i<Num;i+)fprintf(write,"%dn",daohangi.num);fprintf(write,"%sn",);fprintf(write,"%sn",);fprintf(write,"n");if ( ferror(write) ) perror("寫文件失敗");fclose(write);vo

48、id Mfinfo()int i;char info100;char iInfo30;system("cls");printf("ttt歡迎進(jìn)入地點(diǎn)信息更改系統(tǒng)!n");strcpy(iInfo,"請(qǐng)輸入更換信息地址:");printf("%s",iInfo);i=Input(&iInfo);printf("請(qǐng)輸入更改的信息:");scanf("%s",info);Readinfo();strcpy(,info);Writeinfo();pr

49、intf("n修改成功n");system("pause");int Admin()/char pw8="q123456"char pw_20;char a;int i,j;while(j)j=0;system("cls");printf("ttt歡迎進(jìn)入管理系統(tǒng)n");printf("請(qǐng)輸入密碼(輸入 # 回退):");gets(pw_);if(strcmp(pw_,"#")=0)return(0);else if(strcmp(pw_,"q1

50、23456")=0)while(i)i=1;system("cls");Showmap();printf("tttt管理模式菜單n");printf("a:地址信息修改n");printf("b:路徑,距離修改n");printf("請(qǐng)選擇功能(輸入 # 回退):");scanf("n%c",&a);if(a='a')Mfinfo();else if(a='b')Mfweight_adj();else if(a='#')return(0);elsesystem

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論