java校院導(dǎo)游程序課程設(shè)計(jì)_第1頁(yè)
java校院導(dǎo)游程序課程設(shè)計(jì)_第2頁(yè)
java校院導(dǎo)游程序課程設(shè)計(jì)_第3頁(yè)
java校院導(dǎo)游程序課程設(shè)計(jì)_第4頁(yè)
java校院導(dǎo)游程序課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)》

課程設(shè)計(jì)任務(wù)書(shū)

題目校園導(dǎo)游程序

學(xué)生姓名黃濤學(xué)號(hào)專業(yè)班級(jí)數(shù)學(xué)1001

【問(wèn)題描述】

如今的大學(xué)校園占地面積廣,建造物繁多,對(duì)目生人在校園很容易迷失方向或者不

易找到自己的目的地。為了解決這一問(wèn)題,我為我校本部校區(qū)建立校園導(dǎo)游圖,以此

給新生和來(lái)訪客人提供方便快捷的咨詢引導(dǎo)服務(wù)。

【課程設(shè)計(jì)目的】

本程序涉及的類(lèi)容涉及:數(shù)據(jù)結(jié)構(gòu)(圖),java程序設(shè)計(jì),UML設(shè)計(jì)等。通過(guò)該

程序能很好的復(fù)習(xí)以前學(xué)過(guò)的知識(shí),也能促進(jìn)對(duì)剛學(xué)過(guò)的圖知識(shí)進(jìn)一步加深理解,還

能根據(jù)需要學(xué)習(xí)新知識(shí)。提高用知識(shí)解決實(shí)際問(wèn)題的綜合能力,達(dá)到學(xué)以致用的目的。

【軟件功能】

1.可以瀏覽我校本部整體的校園平面圖。圖中顯示所有景點(diǎn)及其道路連通情況。采用人

設(shè)機(jī)交互方式實(shí)現(xiàn)圖形化界面景點(diǎn)介紹。

計(jì)2.為來(lái)訪客人提供任意景點(diǎn)相關(guān)信息的查詢。

內(nèi)3.為來(lái)訪客人提供任意景點(diǎn)的問(wèn)路查詢。

與【算法思想】

要本程序中用到的數(shù)據(jù)結(jié)構(gòu):圖。主要算法:迪杰斯特拉算法。

ADTGraph{

數(shù)據(jù)對(duì)象V:景點(diǎn)頂點(diǎn)集

數(shù)據(jù)關(guān)系R:R={VR}VR={<v,w>|v,w£V且P(v,w),<v,表示從v

到w的弧,謂詞P(v,w)定義了弧<v,w>的意義或者信息}

基本操作P:

CreateGraph(&G,V,VR);初始條件:V是圖的頂點(diǎn)集,VR是圖中弧的集合。

操作結(jié)果:按V和VR的定義構(gòu)造圖Go

DestroyGraph(&(;);初始條件:圖G存在。操作結(jié)果:銷(xiāo)毀圖G,

ShortestPath(&G,vl,v2);初始條件:圖G存在,給定起點(diǎn)vl和終點(diǎn)v2°

操作結(jié)果:返回起點(diǎn)vl和終點(diǎn)v2的最短距離和路徑。

)

【提交成果】

1.”《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)》課程設(shè)計(jì)任務(wù)書(shū)”一份,打印裝袋:

2.”《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)》課程設(shè)計(jì)報(bào)告”一份,打印裝袋;

3.上面兩項(xiàng)內(nèi)容的word文檔,通過(guò)電子郵件交到指導(dǎo)教師。

起止時(shí)間2022年6月3日至2022年6月14日

指導(dǎo)教師簽名2022年6月3日

系(教研室)主任簽名2022年6月3日

學(xué)生簽名年月日

數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程設(shè)計(jì)

專業(yè):數(shù)學(xué)與應(yīng)用數(shù)學(xué)班級(jí):數(shù)學(xué)1001學(xué)號(hào):

姓名:黃濤完成日期:指導(dǎo)教師:

1、程序設(shè)計(jì)說(shuō)明書(shū)

【設(shè)計(jì)題目】校園導(dǎo)游程序

【問(wèn)題描述】

如今的大學(xué)校園占地面積廣.建造物繁多,對(duì)目生人在校園很容易迷失方向或者不易找到自己的

目的地。為了解決這一問(wèn)題,我為我校本部校區(qū)建立校園導(dǎo)游圖,以此給新生和來(lái)訪客人提供方

便快捷的咨詢引導(dǎo)服務(wù)。

【軟件功能】

1.能夠?qū)π@整體平面示意圖進(jìn)行瀏覽。

2.能夠?qū)θ5闹饕包c(diǎn)的托撲圖進(jìn)行一個(gè)整體情況的預(yù)覽查詢。

3.能夠?qū)崿F(xiàn)對(duì)每一個(gè)景點(diǎn)詳細(xì)信息的查詢。

4.能夠?qū)崿F(xiàn)景點(diǎn)與景點(diǎn)間最短路線的查詢,采用Dijkstra最短路徑算法。

【算法思想】

1.為各個(gè)功能模塊用類(lèi)封裝。

2.采用數(shù)據(jù)結(jié)構(gòu)有權(quán)圖的知識(shí)來(lái)存儲(chǔ)各個(gè)景點(diǎn)。

3.兩個(gè)景點(diǎn)之間的最短路徑采用Dijkstra算法求最短路徑。即由迪杰斯特拉(Dijkstra)提出的一個(gè)

按路徑長(zhǎng)度遞增的次序產(chǎn)生最短路徑的算法。該算法的基本思想是:設(shè)置兩個(gè)頂點(diǎn)的集合S和T=V

-S,集合S中存放已找到最短路徑的頂點(diǎn),集合T存放當(dāng)前還未找到最短路徑的頂點(diǎn)。初始狀態(tài)

時(shí),集合S中只包含源點(diǎn)v0,然后不斷從集合T中選取到頂點(diǎn)v0路徑長(zhǎng)度最短的頂點(diǎn)u加入到集

合S中,集合S每加入一個(gè)新的頂點(diǎn)u,都要修改頂點(diǎn)v0到集合T中剩余頂點(diǎn)的最短路徑長(zhǎng)度值,

集合T中各頂點(diǎn)新的最短路徑長(zhǎng)度值為原來(lái)的最短路徑長(zhǎng)度值與頂點(diǎn)u的最短路徑長(zhǎng)度值加之u到

該頂點(diǎn)的路徑長(zhǎng)度值中的較小值。此過(guò)程不斷重復(fù),直到集合T的頂點(diǎn)全部加入到S中為止。

4.本實(shí)驗(yàn)中用到的數(shù)據(jù)結(jié)構(gòu):圖

ADTGraph{

數(shù)據(jù)對(duì)象V:景點(diǎn)頂點(diǎn)集

數(shù)據(jù)關(guān)系R:

R={VR}

VR={<v,w>|v,w£V且P(v,w),<v,w>表示從v到w的弧,

謂詞P(v,w)定義了弧<v,w>的意義或者信息}

基本操作P:

CreateGraph(&G,V,VR);

初始條件:V是圖的頂點(diǎn)集,VR是圖中弧的集合。

操作結(jié)果:按V和VR的定義構(gòu)造圖G,

DestroyGraph(&G);

初始條件:圖G存在。

操作結(jié)果:銷(xiāo)毀圖Go

ShortestPathi&G.v1,v2):

初始條件:圖G存在,給定起點(diǎn)v1和終點(diǎn)v20

操作結(jié)果:返回起點(diǎn)v1和終點(diǎn)v2的最短距離和路徑。

)

【類(lèi)的設(shè)計(jì)】

1.

classAll();景點(diǎn)拓?fù)鋱D界面。

classPlan0;校園平面示意圖。

classChaXun0:景點(diǎn)詳細(xì)信息查詢界面。

classLuJing0:?jiǎn)卧醋疃搪窂讲樵兘缑妗?/p>

publicclassjiemian();主界面。

2.GraphPath.java

classGraphPath()類(lèi)。最短路徑算法類(lèi)。

主要成員變量有:

staticintMaxEdges=50;最大邊數(shù)。

staticintMaxVertices=10;最大頂點(diǎn)數(shù)。

staticdoubleMaxValue=9999.9:最大值

privatecharVerticesList[]=newchar[MaxVertices];存放頂點(diǎn)的數(shù)組。

privatedoubleEdge[][]=newdouble[MaxVertices][MaxVertices];鄰接矩陣(存放兩個(gè)頂點(diǎn)

權(quán)值)。

privateintCurrentEdges;現(xiàn)有邊數(shù)

privateintCurrentvertices;現(xiàn)有頂點(diǎn)數(shù)

publicintpath[]=newint[MaxVertices];存放最短路徑上的最后?個(gè)經(jīng)由點(diǎn)。

publicdoubledist[]=newdouble[MaxVertices];存放最短路徑的權(quán)值。

主要成員方法:

publicGraphPath():構(gòu)造函數(shù)建立空的鄰接矩陣。

publicintFindVertex(charvertex):杳找指定的頂點(diǎn)的序號(hào)。

publicbooleanIsGraphEmpty():判斷圖是否為空。

publicbooleanIsGraphFull():判斷圖是否為滿。

publicintNumberOfVertices():取得頂點(diǎn)數(shù)。

publicintNumberOfEdges():取得邊數(shù)。

publiccharGetValue(inti):按序號(hào)取得頂點(diǎn)值。參數(shù)為頂點(diǎn)序號(hào)。

publicdoubleGetWeight(intvl,intv2):取得一條邊的權(quán)值,參數(shù)為該邊的頂點(diǎn)。

publicintGetFirstNeighbor(intv):取得第一個(gè)鄰接點(diǎn)的序號(hào)。

publicintInsertVertex(charvertex):插入?個(gè)頂點(diǎn),參數(shù)為頂點(diǎn)數(shù)據(jù)。

publicbooleanInsertEdge(intvl,intv2,doubleweight):插入一條邊,參數(shù)為連接該

邊的兩個(gè)頂點(diǎn)及邊上的權(quán)值。

publicbooleanRemoveVertex(intv):刪除?個(gè)頂點(diǎn)。

publicbooleanRemoveEdge(intvl,intv2):刪除一條邊,參數(shù)為所刪除邊的兩個(gè)頂點(diǎn),

既刪除vl,v2頂點(diǎn)之間的連接邊。

publicvoiddisplay():打印鄰接矩陣。

publicvoidDijkstra(intv0,intvj):最短路徑的ijkstra算法,參數(shù)為起點(diǎn)和目的點(diǎn)。

publicvoidPutpath(intvO):輸出Dijkstra算法的結(jié)果。

【存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)】

圖狀結(jié)構(gòu)是一種比樹(shù)形結(jié)構(gòu)更復(fù)雜的非線性結(jié)構(gòu)。在樹(shù)狀結(jié)構(gòu)中,結(jié)點(diǎn)間具有分支層次關(guān)系,每一

層上的結(jié)點(diǎn)只能和上一層中的至多一個(gè)結(jié)點(diǎn)相關(guān),但可能和下一層的多個(gè)結(jié)點(diǎn)相關(guān)。而在圖狀結(jié)構(gòu)

中,任意兩個(gè)結(jié)點(diǎn)之間都可能相關(guān),即結(jié)點(diǎn)之間的鄰接關(guān)系可以是任意的。因此,圖狀結(jié)構(gòu)被用于

描述各種復(fù)雜的數(shù)據(jù)對(duì)象,在自然科學(xué)、社會(huì)科學(xué)和人文科學(xué)等許多領(lǐng)域有著非常廣泛的應(yīng)用。

數(shù)據(jù)存儲(chǔ):

采用字符串?dāng)?shù)組,一維數(shù)組,二維數(shù)值來(lái)存儲(chǔ)圖中景點(diǎn)及其各邊的信息。

1.景點(diǎn)查詢圖片數(shù)組存儲(chǔ):

Stringtu[]={"img/00.png",nimg/01.png",nimg/02.png",nimg/03.png",

"img/04.pn,g"*lmg/05.pngH,"img/06.png",'*img/07.png",

"img/08.pn,g"'lmg/09.png","img/10.png","img/11.png”,};

2.景點(diǎn)查詢圖片信息數(shù)組存儲(chǔ):

StringXX西安石油大學(xué)校本部南大門(mén),位于西安市電子二路18號(hào)!”

”一號(hào)教學(xué)樓建于上個(gè)世紀(jì),老的教學(xué)樓,現(xiàn)在主要用著實(shí)驗(yàn)“,“校本部圖書(shū)館,

圖書(shū)館藏行大量圖書(shū)”,”校本部室內(nèi)體育館”,“利學(xué)超市”,“校本部學(xué)生食堂”,

”校本部室外體育場(chǎng)地,包括足球場(chǎng),籃球場(chǎng),游泳館和旱冰場(chǎng)等室外運(yùn)動(dòng)場(chǎng)地!

“,“西安石油大學(xué)校本部北門(mén),位于西安”+“市電子?路!石油大學(xué)校醫(yī)院”,

”東門(mén)主要機(jī)動(dòng)車(chē)出入大門(mén)二號(hào)教學(xué)樓,與西階教學(xué)樓,西階會(huì)議室,東街教學(xué)”+

”樓為一體建造,建于本世紀(jì)初期!”};

3.最短路徑景點(diǎn)圖片存儲(chǔ):

StringCXT[]={"","img/01.jpg",nimg/02.jpg",nimg/03.jpg",**img/04.jpg”,

n

"img/05.jpg"zimg/06.jpg",'*img/07.jpg","img/08.jpg”,

nn

"img/09.jpg","img/lO.jpgz"img/ll.jpgz};

4.頂點(diǎn)儲(chǔ)存:

Stringc[]={“01“,“02“,”03“,“04“,“05“,“06“,”07“,“08“,“09“,“10“,“11”};5.

邊的存儲(chǔ):

intv[][]={//弧

{0,1},{0,2},{1,0},{1,2},{1,8},{1,10},{2,0},{2,1},{2,3},

[2,4},{3,2},{3,5},{3,6},{4,2},{4,5},{5,3},{5,4},{5,6},

{5,8},{5,10},{6,3},{6,5},{6,7},{7,6},{8,1},{8,5},{8,9},

{8,10},{9,8},{10,1},{10,5},{10,8)

};

6.邊上權(quán)的存儲(chǔ)

Doubled[]={15,10,15,10z130,280z10,10,80,100,80z150,250,100,20,

150,20,100,300z150,250,100,200,200,130,300,100,100z

100,280,150,100

);〃權(quán)

【模塊劃分及調(diào)用關(guān)系】

退出

2.主要模塊之間的調(diào)用關(guān)系及各自功能:

<1>.主要模塊:

模塊一:顯示校院平面示意圖;

模塊二:主要景點(diǎn)拓?fù)鋱D查詢:

模塊三:景點(diǎn)詳細(xì)信息杳詢:

模塊四:景點(diǎn)最短路徑查詢:

模塊五:?jiǎn)卧醋疃搪窂讲樵儯珼ijkstra算法。

<2>.主要模塊之間的調(diào)用關(guān)系:

【模塊流程圖】

返回返回

1.主界面

2.平面示意圖界面3.景點(diǎn)拓?fù)鋱D界面

A?0?:

.flliua

■am—

?enetmrv

△.景點(diǎn)詳細(xì)查詢界面5.景點(diǎn)之間最短路徑查詢

【用戶手冊(cè)】

1.安裝運(yùn)行myeclipse850c

2.在myeclipse中新建校院導(dǎo)游為項(xiàng)目名的java項(xiàng)目,將程序打包放入src中,再在項(xiàng)目下創(chuàng)建img

文件件存放需要用到的圖片。

'PackageE■凝■七Hierarchy=B

3.運(yùn)行jiemian.java程序,運(yùn)行程序進(jìn)入主界面;

4.通過(guò)主界面的功能鍵相互調(diào)用其它程序?qū)崿F(xiàn)其相應(yīng)功能:

2、程序上機(jī)調(diào)試報(bào)告

【語(yǔ)法錯(cuò)誤及其排除】

1.關(guān)于static關(guān)鍵字修飾類(lèi)方法的問(wèn)題,用static修飾方法稱為類(lèi)方法,不用static修飾的稱為實(shí)例

方法.類(lèi)方法可以相互調(diào)用,但不能調(diào)用實(shí)例的方法.

2.在編寫(xiě)類(lèi)方法時(shí),方法明后忘記“()”,導(dǎo)致編譯錯(cuò)誤。

3.在輸程序過(guò)程中,由于不斷的中英文切換,導(dǎo)致一些標(biāo)點(diǎn)符號(hào)不合法。在復(fù)查程序時(shí)也特殊注意

到此環(huán)節(jié)。

4.在程序輸入時(shí)單詞的拼寫(xiě)錯(cuò)誤如Panel容易寫(xiě)成Panle等。在復(fù)查時(shí)我也特殊注意到此環(huán)節(jié)。

5.在添加圖片時(shí),沒(méi)有輸入正詢的路徑和名稱,導(dǎo)致程序無(wú)法顯示運(yùn)行圖片。

【算法錯(cuò)誤及其排除】

1.〃最短路徑的ijkstra算法的修正:

publicvoidDijkstra(intvO)(

ints[]=newint[MaxVertices];

intv,i,j,w;

/*初始化s、dist和path*/

for(v=0;v<CurrentVertices;v++)(

s[v]=0;/*。表示還未求出最短路徑*/

/*一開(kāi)始假定取直達(dá)珞徑最短*/

dist[v]=Edge[vO](v];

/*直達(dá)情況下的最后經(jīng)由點(diǎn)就是出發(fā)點(diǎn)*/

if(dist[v]<MaxValue&&v!=v0)path[v]=v0;

elsepath[v]=-l;/*無(wú)直達(dá)路徑*/

)

/*初始時(shí)源點(diǎn)VOWS集,表示vO到vO的最短路徑已經(jīng)找到*/

dist[vO]=0;s[vO]=1;

//下來(lái)假設(shè)經(jīng)由一個(gè)點(diǎn)中轉(zhuǎn)到達(dá)其余各點(diǎn),會(huì)近些,驗(yàn)證之.

〃再假設(shè)經(jīng)由兩個(gè)點(diǎn)中轉(zhuǎn),會(huì)更近些,驗(yàn)證之,.....

//直到窮舉完所有可能的中轉(zhuǎn)點(diǎn).

doublemin;

for(i=l;i<CurrentVertices;i++){

//挑一個(gè)距離最近經(jīng)由點(diǎn),下標(biāo)裝入v

min=MaxValue;

for(v;=0;w<CurrentVertices;w++)

/*頂點(diǎn)w不屬于S集且離vO更近*/

if(s[w]==0&&dist[w]<min)(

v=w;/*經(jīng)由頂點(diǎn)翼中轉(zhuǎn)則距離更短*/

min=dist[w];

}

s[v]=l;/*頂點(diǎn)v并入S,

由vO到達(dá)v頂點(diǎn)的最短路徑為3*/

/*假定由vO到v,再由v直達(dá)其余各點(diǎn),

更新當(dāng)前最后一個(gè)經(jīng)由點(diǎn)及距離*/

for(j=0;j<CurrentVertices;j++)

if(s[j]==0&&(min+Edge[v][j]<dist[j])){

/*如果多經(jīng)由一個(gè)v點(diǎn)到達(dá)j點(diǎn)的

最短路徑反而要短,就更新J/

dist[j]=min+Edge[v][j];

path[j]=v;/*經(jīng)由點(diǎn)的序號(hào)*/

}/*循環(huán)fori*/

}/*Dijkstra算法結(jié)束*/

3、程序測(cè)試結(jié)果

【測(cè)試數(shù)據(jù)】

1.主界面。

2.校園平面示意圖瀏覽。

3.校院主要景點(diǎn)編號(hào)及拓?fù)鋱D瀏覽。

4.景點(diǎn)看詢,查詢景點(diǎn)04的信息。

5.路徑查詢,查詢景點(diǎn)03到04的最短路徑。

6.菜單測(cè)試。

【輸出結(jié)果】

1.主界面

開(kāi)始進(jìn)入該程序顯示主界面如下:

2.校院平面示意圖瀏覽。

3.校園主要景點(diǎn)拓?fù)鋱D瀏覽。

顯示了校園的拓補(bǔ)圖和景點(diǎn)的代號(hào)和名稱。如卜.:

3.景點(diǎn)查詢,查詢景點(diǎn)04的詳細(xì)信息。

輸入景點(diǎn)的代號(hào)或者名稱,顯示景點(diǎn)的圖片和簡(jiǎn)介。如下

7.路徑查詢,查詢景點(diǎn)03到04的最短路徑。

輸入起點(diǎn)和終點(diǎn),顯示起點(diǎn)和終點(diǎn)的景點(diǎn)圖片,還有起點(diǎn)到終點(diǎn)的最短距離和路徑。如下:

8.菜單測(cè)試。

2>匡助菜單。

【程序性能評(píng)價(jià)】

本程序能夠利用UML設(shè)計(jì)良好的人機(jī)交互界面,采用數(shù)據(jù)庫(kù)提數(shù)據(jù)支持,方便數(shù)據(jù)的存儲(chǔ)和靈

活的應(yīng)用。使用起來(lái)較為方便直觀,維護(hù)期來(lái)也比較容易。

【性能改進(jìn)方向】

固然本程序還存在很大的改善空間,所以的路線及景點(diǎn)杳詢都可以集結(jié)于一張?jiān)敿?xì)的平面地圖

上,固然也可以是一維其至多維的空間上,對(duì)查詢景點(diǎn),人們查詢時(shí)只需將鼠標(biāo)放置所需了解的景

點(diǎn)處,自動(dòng)彈出該景點(diǎn)的所有詳細(xì)信息及其周邊景點(diǎn)信息等。時(shí)路徑查詢,非但提示所查最短路徑

及其該如何到達(dá),還在地圖上畫(huà)出最短路線及其最佳行駛方案和可供選其它方案。類(lèi)似于現(xiàn)有的百

度,搜搜地圖等。

【收獲及體味】

通過(guò)本次數(shù)據(jù)結(jié)構(gòu)與算法謖程設(shè)計(jì),我順便把原有的基礎(chǔ)溫故了下,并且向新的知識(shí)擴(kuò)展了下。

學(xué)到的東西不少,并且很實(shí)用。本次設(shè)計(jì)用到了,PS,PPT,word,java、數(shù)據(jù)結(jié)構(gòu)、軟件工程、

UML設(shè)計(jì)、數(shù)據(jù)庫(kù)等知識(shí)。首先利用java的可視化創(chuàng)建窗口框架,確保界面看起來(lái)簡(jiǎn)潔并且易操作。

再創(chuàng)建數(shù)據(jù)庫(kù)和表,優(yōu)化表的表現(xiàn)形式,易于操作,進(jìn)行相關(guān)的查詢等。從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)存入

暫時(shí)的數(shù)據(jù)結(jié)構(gòu)中,進(jìn)行無(wú)向圖的最短路徑操作。本次課設(shè)都是個(gè)人完成,覺(jué)得受益匪淺。

遺憾的是想在其基礎(chǔ)上擴(kuò)展下相關(guān)的功能,如:利用TCP/IP協(xié)議實(shí)現(xiàn)服務(wù)器端和客戶端的鏈接,

進(jìn)行多線程的操作,杳詢等可以同步進(jìn)行,管理員可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行添加景點(diǎn)、刪除景點(diǎn)和修改景

點(diǎn)信息等操作。但由于時(shí)間的關(guān)系,沒(méi)有對(duì)這些任務(wù)進(jìn)行擴(kuò)展。

4、源程序代碼

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

//景點(diǎn)拓?fù)鋱D界面

classAllextendsJFrame{

JLabellabel;

JPanelpanel;

Imageicon背景;//背景為整個(gè)界面的背景,通過(guò)添加圖片設(shè)置為背景

A11O(

super(“西安石油大學(xué)校本部校院拓?fù)鋱D“);

//添加背景,添加標(biāo)題,設(shè)置按鈕圖標(biāo)

背景=new]!^96工<:。11("-9/1233i119”);//設(shè)置背景圖片

label=newJLabel(背景);

label.setBounds(0.0,背景.get工conWidth(),背景.getIconHeight());

this.getLayeredPane().setLayout(null);

JPanela=newCPanel();〃添加背景,并把窗口大小設(shè)置為背景圖

片的大小

panel=(JPanel)this.getContentPane();

panel.setopaque(false);

FlowLayoutf=newFlowLayout();

panel.setLayout(f);

getLayeredPane().setLayout(null);

getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));

seESize(背景.getlconWidth()z背景.getlconHeight());

setBounds(350z160,背景.get工conWidth(),背景.getlconHeight());

setVisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

}

//校園平面示意圖界面

classPlanextendsJFrame(

JLabellabel;

JPanelpanel;

Imageicon背景;//背景為整個(gè)界面的背景,通過(guò)添加圖片設(shè)置為力F

Plan(){

supeC西安石油大學(xué)校本部平面圖”);

//添加背景,添加標(biāo)題,設(shè)置按鈕圖標(biāo)

背景=new工mage工con("img/333.png");//設(shè)置背景圖片

label=newJLabel(背景);

label.setBounds(01.0,背景.get■工conWidth(),背景.getlconHeight());

this.getLayeredPane().setLayout(null);

JPanel£1=newCPanel();//添加背景,并把窗口大小設(shè)置為背景圖

片的大小

panel=(JPanel)this.getContentPane();

panel.setOpaque(false);

FlowLayoutf=newFlowLayout();

panel.setLayout(f);

getLayeredPane().setLayout(null);

getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));

setSize(背景.getlconWidth()z背景.getlconHeight());

setBounds(250,160,背景.get工conWidth(),背景.getlconHeight());

eetVisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

)

)

〃查詢界面

classChaXunextendsJFrameimplementsActionListener{

inti=0;

JLabellabel;

JLabellabell=newJLabel(“景點(diǎn)(編號(hào)或者名稱)”);

//JLabellabe12=newJLabel("開(kāi)始”);

JLabellabel3=newJLabel("簡(jiǎn)介”);

JLabellabel4=newJLabel("景點(diǎn)名");

JTextAreatextl-newJTextArea1,20);

JTextAreatext2=newJTextArea(""z3,40);

JPanelpanel;

JButtonbuttonl=newJButton(“返回“);//按鈕組件

JButtonbutton2=newJButton(“查詢")”/按鈕組件;

〃添加背景

Stringtu[]={"img/00.png,',"img/01.png","img/'O2.png",uimg/03.png”,

"img/04.png","img/05.png'\"img/06.pngn,nimg/07.png",

nimg/08.p,n"gi"mg/09.png","img/10.png",Mimg/ll.png",};

StringXX[]={”",“西安石油大學(xué)校本部南大門(mén),位于西安市電子二路18號(hào)!”,

”一號(hào)教學(xué)樓建于上個(gè)世紀(jì),老的教學(xué)樓,"+

“現(xiàn)在土要用著實(shí)驗(yàn)”,“校本部圖書(shū)館,圖書(shū)館藏有大量圖書(shū)”,

”校本部室內(nèi)體育館“,“利學(xué)超市“,“校本部學(xué)生.食堂”,

”校本部室外體育場(chǎng)地,包括足球場(chǎng),籃球場(chǎng),游泳館和旱冰場(chǎng)等室外運(yùn)動(dòng)場(chǎng)地!”,

”西安石油大學(xué)校本部北門(mén),位于西安”+

”市電子一路!石油大學(xué)校醫(yī)院“,“東門(mén)主要機(jī)劭車(chē)出入大門(mén)”,

”二號(hào)教學(xué)樓,與西階教學(xué)樓,西階會(huì)議室,東街教學(xué)”+

”樓為一體建造,建于本世紀(jì)初期!“};

Imageiconpicture=newImageicon(tu[i]);;//背景為整個(gè)界面的背景,通過(guò)添加圖

片設(shè)置為背景

ChaXun(inti)(

super("景點(diǎn)查詢”);

setsize(561,495);

setLocation(350,110);

setResizablet(rue);

setVisiblet(rue);

setLayoutn(ewFlowLayout());

textl.setBackground(Color.LIGHT_GRAY);//文本框顏色設(shè)為亮灰

text2.setBackground(Color.lightGray);//文本柄顏色設(shè)為亮灰

text2.setEditable(false);

Fontfontn=ewFont("華文行楷”,

Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHTZ20);

label3.setFont(font)”/為標(biāo)題添加字體

labcl3.octForeground(newColor(255,2,2));

picture=newImage1con(tu[i]);;//背景為整個(gè)界面的背景,通過(guò)添加圖片設(shè)置為

背景

label=newJLabel(picture);

text2.append(XX[i]);

addl(abell);

addt(extl);

addb(utton2);

addl(abel);

addl(abel3);

addt(ext2);

addb(uttonl);

buttonl.addActionListener(this);//為每一個(gè)按鈕設(shè)置監(jiān)視器

button2.addActionListener(this)〃/為每“個(gè)按鈕改置監(jiān)視器

)

publicvoidactionPerformed(ActionEvente){〃事件響應(yīng)

if(e.getSource()==button2){

this.dispose();

inti=Integer.parselnt(textl.getText());

newChaXun(i);

}

if(e.getSourca()==buttonl)

this.dispose();

)

)

//單源最短路徑查詢界面

classLuJingextendsJFrameimplementsActionListener{

GraphPathG=newGraphPath();

JLabeltul,tu2,tu3;

Stringt;

JLabellabell=newJLmbel("起點(diǎn)(編號(hào)或者名稱);

JLabellabe12=newJLmbel("終點(diǎn)(編號(hào)或者名稱):;

JLabellabel3=newJLabel("路徑顯示+距離

JTextAreatextl=newJTextArea("",1,36);

u

JTextAreatext2=newJTextArea("zlz30);

JTextAreatext3=newJTextArea("”,4,45);

JPanelpanel;

Strings=H00";

JButtonbuttonl=newJButton("查詢");//按鈕組件

JButtonbutton2=new【Button("返回”);//按鈕組件:

//添力□背景

工mage:[8n'pl,p2,p3;〃背景為整個(gè)界面的背景,通過(guò)添加圖片設(shè)置為背景

StringCXT[]={"'*,uinig/01.jpg"/"img/02.jpg","img/03.jpg",

"img/04.jpg","img/05.jpg","img/06.jpg'',

"img/07.jpg","img/08.jpg","img/09.jpg",

"img/10.jpg'1/"img/ll.jpg",);

LuJing(inti,intj){

super("路徑查詢");

setSize(561,495);

setLocation(350,110);

setResizablet(rue);

setVisiblet(rue);

setLayoutn(ewFlowLayout());

textl.setBackground(Color.LIGHT_GRAY);//文本框顏色設(shè)為痙灰

text2.setBackground(Color.lightGray);

text3.setBackground(Color.lightGray);//文本框顏色設(shè)為亮灰

Fontfontn=ewFont("華文行梢”,

Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,20);

label3.setFont(font);//為標(biāo)題添加字體

label3.setForeground(newColor(255,2,2));

pl=newImageicon(CXT[i]);//設(shè)置背景圖片

p2=newImageicon("img/00.JPG");

p3=newImageicon(CXTFj1);

tul=newJLabel(pl);

tu2=newJLabel(p2);

tu3=newJLabel(p3);

text3.append(G.Putpath(i,j));

addl(abell);

addt(extl);

addl(abel2);

addt(ext2);

addb(uttonl);

addt(ul);

addt(u2);

addt(u3);

addl(abel3);

addt(ext3);

addb(utton2);

buttonl.addActionListener(this);//為每一個(gè)按仃I設(shè)置監(jiān)

視器button2.addActionListener(this);

)

publicvoidactionPerformed(ActionEvente)(//事件響應(yīng)

if(e.getSource()==buttonl){

dispose();

//text3.append(CXT[1]);

inti-工ntcgor.parse工nt(tcxtl.gotTcxt());

intj=Integer.parselnt(text2.getText());

//text3.append("hungtao");

newLuJing(i,j);

//準(zhǔn)備有向圖(網(wǎng))數(shù)據(jù)

,,nnH

Stringc[]={01,02"z"03","04,"05","06",

“07“,“08“,”09”,“10“,“11”};//頂點(diǎn)

intv[][]={〃弧

{0,1)/(0,2),{lz0)z{1,2},{1,8},.:1,10},{2,0},{2,1},

[2,3},{2,4},{3,2},{3,5},{3,6},{4,2},{4,5},{5,3},

{5,4},{5,6},{5,8},{5,10},{6,3},{6,5},{6,7},{7,6},

18,1},18,5},18,9},{8,101,19,81,f10,1},{10,51,110,81

};

Doubled[]=(15z10,15,L0,130,280,10,10,80,100,80,150,250,

100,20,150,20,100,300,150,250,130,200,200,130,300,

100,100,100,280,150,100

};:/權(quán)

//插入頂點(diǎn)

for(intk=0;i<ll;k++)

G.Insertvertex(c[k]);

//插入弧

for(intm=0;i<32;m++)

G.InsertEdge(v[m][0]zv[m][l]zd[m]);

G.Dijkstra(i);

}

if(e.getSource()==button2)

dispose();

)

}

///主界面

publicclassjiemianextendsJFrameimplementsActionListener{

JLabellabel;

JMenumSystem=newJMenu("系統(tǒng)");//系統(tǒng)菜單

JMenuItemmAdd=newJMenu工tem("添力口景點(diǎn)”);

JMenuItemmAlter=newJMenu工tem("修改景點(diǎn)信息,');

JMenuItemmRemove=newJMenu工tem("刪除景點(diǎn)”);

JMenuItemmExit=newJMenu工tem("退出");

JMenuItemmSave=newJMenu工tem("保存");

JMenumHelp=newJMenu("[Gift");//匡助菜單

JMenuItemmAbout=newJMenu工tem("軟件信息”);

JMenuBarmBar=newJMenuBar();

JPanelpanel;

JButtonbuttonl=newJButton("景點(diǎn)拓?fù)鋱D”);

JButtonbutton2=newJButton(“景點(diǎn)查詢”);

JButtonbutton3=newJButton(“路徑查詢”);

JButtonbutton4=newJButton("退出");

JButtonbutton5=newJButton("校院平面圖”);

Imageicon背景;//背景為整個(gè)界面的背景,通過(guò)添加圖片設(shè)置為背景

publicjiemian(){

super(“西安石油大學(xué)校本部導(dǎo)游”);

//setSize(561,495);

setLocation(350,110);

setLayoutn(ull);

mSystcm.add(mAdd);//為菜單添加菜單項(xiàng)II

mSystem.add(mAlter);

mSystem.add(mRemove);

mSystem.add(mSave);

mSystem.add(mExit);

mHelp.add(mAbout);

mBar.add(mSystem);//將菜單添加到菜單條

mBar.add(mHelp);

setJMenuBarm(Bar,;//設(shè)置菜單條

mExit.addActi。nListener(this);//為菜單按鈕添力11監(jiān)聽(tīng)事件

mAbout.addActionListener(this);

mSave.addActionListener(this);

setResizablet(rue);

背景=new工mage工con("img/127.jpg");〃設(shè)置背景圖片

label=newJLabel(背景);

label.setBounds(0.0,背景.get工conWidth(),背景.getlconHeight());

this.getLayeredPane().setLayout(null);

JPanel屈1=newCPanelO;//添加背景,并把窗口大小設(shè)置為背景圖

片的大小

panel=(JPanel)this.getContentPane();

panel.setOpaque(false);

getLayeredPane().setLayout(null);

getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));

setSize(背景.getlconWidth(),背景.getlconHeight());

setBounds(350,150,背景.get■工conWidth(),背景.getlconHeight());

setvisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

button1.setBounds(245,210,100,40);

button?.setBounds(245,260,100,40);

button3.setBounds(245,310,100,40);

button4.setBounds(245,360,100,40);

buttons.setBounds(245z160,100,40);

getContentPane().addb(utton5);

getContentPane().addb(uttonl);

getContentPane().addb(utton2);

getContentPane().addb(utton3);

getContentPane().addb(utton4);

buttonl.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

buttons.addActionListener(this);

)

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==mExit)

Systemx.it(0);

elseif(e.getSource()==mAbout)

JOptionPaneh.ovzMessageDialog(this,"校本部導(dǎo)游圖程序\n\n西安石油大學(xué)

\n理學(xué)院\n數(shù)學(xué)與應(yīng)用數(shù)學(xué)”+

”\n黃濤\n2022年05月軟件信息

",JOptionPane.INFORMATION_MESSAGE);

elseif(e.getSource()==buttonl)

newAll();

elseif(e.getSource()==button2)

newChaXun(00);

elseif(e.getSource()==button3)

newLuJing(0,0);

elseif(e.getSource()==button4)

System.exit(0J;

elseif(e.getSource()==button5)

newPlan();

}

//主函數(shù)程序開(kāi)始

publicstaticvoidmain(String(]args){

jiemianlog=newjiemian();

log.setVisible(true);

)

GraphPath.java

//求圖中某一點(diǎn)到其余各點(diǎn)

〃最短路徑的Dijkstra算法

//“令國(guó)鑒.

classGraphPath(

st.at.icint.MaxRdgAS=50;

staticintMaxVertices=15;

staticd

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論