![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/d0a3d99e-c678-41fc-88a9-e9c162195c19/d0a3d99e-c678-41fc-88a9-e9c162195c191.gif)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/d0a3d99e-c678-41fc-88a9-e9c162195c19/d0a3d99e-c678-41fc-88a9-e9c162195c192.gif)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/d0a3d99e-c678-41fc-88a9-e9c162195c19/d0a3d99e-c678-41fc-88a9-e9c162195c193.gif)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/d0a3d99e-c678-41fc-88a9-e9c162195c19/d0a3d99e-c678-41fc-88a9-e9c162195c194.gif)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/d0a3d99e-c678-41fc-88a9-e9c162195c19/d0a3d99e-c678-41fc-88a9-e9c162195c195.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療護(hù)理醫(yī)學(xué)培訓(xùn) 針灸學(xué)(第七版)課件
- 構(gòu)建可持續(xù)的醫(yī)養(yǎng)結(jié)合服務(wù)體系
- 現(xiàn)代學(xué)徒制下師徒關(guān)系的培養(yǎng)策略與挑戰(zhàn)
- 游戲化思維在教育與培訓(xùn)中的應(yīng)用探索
- 特殊食材針對(duì)胃腸健康的個(gè)性化食物建議
- 環(huán)保產(chǎn)業(yè)教育與培訓(xùn)培養(yǎng)綠色人才的新模式
- 現(xiàn)代鐵路貨運(yùn)系統(tǒng)的安全性技術(shù)
- 環(huán)境保護(hù)與大數(shù)據(jù)跨界融合的實(shí)踐
- 2024年01月陜西2024年浙江泰隆商業(yè)銀行客戶經(jīng)理社會(huì)招考(0120)筆試歷年參考題庫附帶答案詳解
- 15《真理誕生于一百個(gè)問號(hào)之后》說課稿-2023-2024學(xué)年六年級(jí)語文下冊(cè)統(tǒng)編版
- 帶看協(xié)議書范本(2篇)
- 2025-2030年中國(guó)科教玩具行業(yè)發(fā)展動(dòng)態(tài)及前景趨勢(shì)分析報(bào)告新版
- 馬匹寄養(yǎng)協(xié)議書
- 股權(quán)投資項(xiàng)目建議書
- 2025年北京廣播電視臺(tái)招聘(140人)歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024復(fù)工復(fù)產(chǎn)安全培訓(xùn)
- 中學(xué)生宿舍日常與管理
- 2025中國(guó)南光集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 江蘇省蘇州市2024-2025學(xué)年第一學(xué)期八年級(jí)數(shù)學(xué)期末模擬卷(一)(無答案)
- 【歷史】秦漢時(shí)期:統(tǒng)一多民族國(guó)家的建立和鞏固復(fù)習(xí)課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史上冊(cè)
- 社區(qū)中心及衛(wèi)生院65歲及以上老年人健康體檢分析報(bào)告模板
評(píng)論
0/150
提交評(píng)論