版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、;.數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程設(shè)計(jì)任務(wù)書題 目校園導(dǎo)游程序?qū)W生姓名黃濤學(xué)號專業(yè)班級數(shù)學(xué)1001設(shè)計(jì)內(nèi)容與要求【問題描述】 如今的大學(xué)校園占地面積廣,建筑物繁多,對陌生人在校園很容易迷失方向或不易找到自己的目的地。為了解決這一問題,我為我校本部校區(qū)建立校園導(dǎo)游圖,以此給新生和來訪客人提供方便快捷的咨詢引導(dǎo)服務(wù)。【課程設(shè)計(jì)目的】 本程序涉及的類容廣,涉及:數(shù)據(jù)結(jié)構(gòu)(圖),java程序設(shè)計(jì),UML設(shè)計(jì)等。通過該程序能很好的復(fù)習(xí)以前學(xué)過的知識,也能促進(jìn)對剛學(xué)過的圖知識進(jìn)一步加深理解,還能根據(jù)需要學(xué)習(xí)新知識。提高用知識解決實(shí)際問題的綜合能力,達(dá)到學(xué)以致用的目的。【軟件功能】1.可以瀏覽我校本部整體的校園平面
2、圖。圖中顯示所有景點(diǎn)及其道路連通情況。采用人機(jī)交互方式實(shí)現(xiàn)圖形化界面景點(diǎn)介紹。2.為來訪客人提供任意景點(diǎn)相關(guān)信息的查詢。3.為來訪客人提供任意景點(diǎn)的問路查詢?!舅惴ㄋ枷搿勘境绦蛑杏玫降臄?shù)據(jù)結(jié)構(gòu):圖。主要算法:迪杰斯特拉算法。ADT Graph 數(shù)據(jù)對象 V:景點(diǎn)頂點(diǎn)集數(shù)據(jù)關(guān)系R:R = VR VR = <v,w>| v,wV 且 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)造
3、圖G。DestroyGraph(&G);初始條件:圖G存在。操作結(jié)果:銷毀圖G。ShortestPath(&G,v1,v2);初始條件:圖G存在,給定起點(diǎn)v1和終點(diǎn)v2。 操作結(jié)果:返回起點(diǎn)v1和終點(diǎn)v2的最短距離和路徑。【提交成果】1.“數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程設(shè)計(jì)任務(wù)書”一份,打印裝袋;2.“數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程設(shè)計(jì)報(bào)告”一份,打印裝袋;3. 上面兩項(xiàng)內(nèi)容的word文檔,通過電子郵件交到指導(dǎo)教師。起止時(shí)間2013 年 6 月3日 至 2013 年6月 14 日指導(dǎo)教師簽名 2013年 6 月 3 日 系(教研室)主任簽名 2013年 6 月 3 日學(xué)生簽名年 月 日數(shù)據(jù)結(jié)構(gòu)
4、與算法設(shè)計(jì)課程設(shè)計(jì) 專業(yè):數(shù)學(xué)與應(yīng)用數(shù)學(xué) 班級:數(shù)學(xué)1001 學(xué)號: 姓名: 黃濤 完成日期:2013.06.16 指導(dǎo)教師:1、 程序設(shè)計(jì)說明書【設(shè)計(jì)題目】 校園導(dǎo)游程序【問題描述】 如今的大學(xué)校園占地面積廣,建筑物繁多,對陌生人在校園很容易迷失方向或不易找到自己的目的地。為了解決這一問題,我為我校本部校區(qū)建立校園導(dǎo)游圖,以此給新生和來訪客人提供方便快捷的咨詢引導(dǎo)服務(wù)。 【軟件功能】 1. 能夠?qū)π@整體平面示意圖進(jìn)行瀏覽。2. 能夠?qū)θ5闹饕包c(diǎn)的拓?fù)鋱D進(jìn)行一個(gè)整體情況的預(yù)覽查詢。3. 能夠?qū)崿F(xiàn)對每個(gè)景點(diǎn)詳細(xì)信息的查詢。4. 能夠?qū)崿F(xiàn)景點(diǎn)與景點(diǎn)間最短路線的查詢,采用Dijkstra最短路
5、徑算法?!舅惴ㄋ枷搿?. 為各個(gè)功能模塊用類封裝。2. 采用數(shù)據(jù)結(jié)構(gòu)有權(quán)圖的知識來存儲各個(gè)景點(diǎn)。3. 兩個(gè)景點(diǎn)之間的最短路徑采用Dijkstra算法求最短路徑。即由迪杰斯特拉(Dijkstra)提出的一個(gè)按路徑長度遞增的次序產(chǎn)生最短路徑的算法。該算法的基本思想是:設(shè)置兩個(gè)頂點(diǎn)的集合S和TVS,集合S中存放已找到最短路徑的頂點(diǎn),集合T存放當(dāng)前還未找到最短路徑的頂點(diǎn)。初始狀態(tài)時(shí),集合S中只包含源點(diǎn)v0,然后不斷從集合T中選取到頂點(diǎn)v0路徑長度最短的頂點(diǎn)u加入到集合S中,集合S每加入一個(gè)新的頂點(diǎn)u,都要修改頂點(diǎn)v0到集合T中剩余頂點(diǎn)的最短路徑長度值,集合T中各頂點(diǎn)新的最短路徑長度值為原來的最短路徑長
6、度值與頂點(diǎn)u的最短路徑長度值加上u到該頂點(diǎn)的路徑長度值中的較小值。此過程不斷重復(fù),直到集合T的頂點(diǎn)全部加入到S中為止。4. 本實(shí)驗(yàn)中用到的數(shù)據(jù)結(jié)構(gòu):圖ADT Graph 數(shù)據(jù)對象 V:景點(diǎn)頂點(diǎn)集數(shù)據(jù)關(guān)系R:R = VRVR = <v,w>| v,wV 且 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é)果:銷
7、毀圖G。ShortestPath(&G,v1,v2);初始條件:圖G存在,給定起點(diǎn)v1和終點(diǎn)v2。操作結(jié)果:返回起點(diǎn)v1和終點(diǎn)v2的最短距離和路徑?!绢惖脑O(shè)計(jì)】1. Jiemian.java class All();景點(diǎn)拓?fù)鋱D界面。 class Plan ():校園平面示意圖。 class ChaXun():景點(diǎn)詳細(xì)信息查詢界面。 class LuJing():單源最短路徑查詢界面。 public class jiemian();主界面。2. GraphPath.javaclass GraphPath()類。最短路徑算法類。主要成員變量有:static int MaxEdges = 5
8、0;最大邊數(shù)。static int MaxVertices = 10;最大頂點(diǎn)數(shù)。static double MaxValue=9999.9; 最大值無。private char VerticesList=new charMaxVertices;存放頂點(diǎn)的數(shù)組。private double Edge=new doubleMaxVerticesMaxVertices;鄰接矩陣(存放兩個(gè)頂點(diǎn)權(quán)值)。private int CurrentEdges; 現(xiàn)有邊數(shù)。private int CurrentVertices; 現(xiàn)有頂點(diǎn)數(shù)。public int path=new intMaxVertices;
9、 存放最短路徑上的最后一個(gè)經(jīng)由點(diǎn)。public double dist=new doubleMaxVertices;存放最短路徑的權(quán)值。主要成員方法:public GraphPath ( ) :構(gòu)造函數(shù)建立空的鄰接矩陣。public int FindVertex (char vertex):查找指定的頂點(diǎn)的序號。public boolean IsGraphEmpty ( ):判斷圖是否為空。public boolean IsGraphFull ( ):判斷圖是否為滿。public int NumberOfVertices ( ):取得頂點(diǎn)數(shù)。public int NumberOfEdges (
10、 ):取得邊數(shù)。public char GetValue ( int i ):按序號取得頂點(diǎn)值。參數(shù)為頂點(diǎn)序號。public double GetWeight ( int v1, int v2 ):取得一條邊的權(quán)值,參數(shù)為該邊的頂點(diǎn)。public int GetFirstNeighbor ( int v ):取得第一個(gè)鄰接點(diǎn)的序號。public int InsertVertex ( char vertex ):插入一個(gè)頂點(diǎn),參數(shù)為頂點(diǎn)數(shù)據(jù)。public boolean InsertEdge( int v1, int v2, double weight):插入一條邊,參數(shù)為連接該邊的兩個(gè)頂點(diǎn)及邊
11、上的權(quán)值。public boolean RemoveVertex ( int v ):刪除一個(gè)頂點(diǎn)。public boolean RemoveEdge ( int v1, int v2 ):刪除一條邊,參數(shù)為所刪除邊的兩個(gè)頂點(diǎn),既刪除v1,v2頂點(diǎn)之間的連接邊。public void display():打印鄰接矩陣。public void Dijkstra(int v0,int vj):最短路徑的ijkstra算法,參數(shù)為起點(diǎn)和目的點(diǎn)。public void Putpath(int v0):輸出Dijkstra算法的結(jié)果。【存儲結(jié)構(gòu)設(shè)計(jì)】圖狀結(jié)構(gòu)是一種比樹形結(jié)構(gòu)更復(fù)雜的非線性結(jié)構(gòu)。在樹狀結(jié)構(gòu)
12、中,結(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ù)對象,在自然科學(xué)、社會科學(xué)和人文科學(xué)等許多領(lǐng)域有著非常廣泛的應(yīng)用。 數(shù)據(jù)存儲: 采用字符串?dāng)?shù)組,一維數(shù)組,二維數(shù)值來存儲圖中景點(diǎn)及其各邊的信息。 1. 景點(diǎn)查詢圖片數(shù)組存儲:String tu="img/00.png","img/01.png","img/02.png","img/03.png",
13、 "img/04.png","img/05.png","img/06.png","img/07.png", "img/08.png","img/09.png","img/10.png","img/11.png",; 2. 景點(diǎn)查詢圖片信息數(shù)組存儲:String XX="","西安石油大學(xué)校本部南大門,位于西安市電子二路18號!","一號教學(xué)樓建于上個(gè)世紀(jì),老的教學(xué)樓," +&q
14、uot;現(xiàn)在主要用著實(shí)驗(yàn)","校本部圖書館,圖書館藏有大量圖書","校本部室內(nèi)體育館","利學(xué)超市","校本部學(xué)生食堂","校本部室外體育場地,包括足球場,籃球場,游泳館和旱冰場等室外運(yùn)動場地!","西安石油大學(xué)校本部北門,位于西安" +"市電子一路!","石油大學(xué)校醫(yī)院","東門主要機(jī)動車出入大門","二號教學(xué)樓,與西階教學(xué)樓,西階會議室,東街教學(xué)" +"樓為一體建筑,建于本
15、世紀(jì)初期!" 3. 最短路徑景點(diǎn)圖片存儲:String CXT="","img/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","img/11.jpg&quo
16、t;,; 4. 頂點(diǎn)儲存:String c="01","02","03","04","05","06","07","08","09","10","11" 5. 邊的存儲: int v= /弧 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,
17、7,7,6,8,1,8,5,8,9, 8,10,9,8,10,1,10,5,10,8 ; 6. 邊上權(quán)的存儲 Double d=15,10,15,10,130,280,10,10,80,100,80,150,250,100,20, 150,20,100,300,150,250,100,200,200,130,300,100,100, 100,280,150,100 ; /權(quán)【模塊劃分及調(diào)用關(guān)系】程序開始1. 模塊劃分:主界面主菜單主要功能鍵系統(tǒng)幫助校院平面示意圖添加景點(diǎn)修改景點(diǎn)刪除景點(diǎn)保存退出軟件信息景點(diǎn)拓?fù)鋱D景點(diǎn)信息查詢返回查詢最短路徑查詢退出2. 主要模塊之間的調(diào)用關(guān)系及各自功能: <
18、;1>.主要模塊: 模塊一:顯示校院平面示意圖; 模塊二:主要景點(diǎn)拓?fù)鋱D查詢; 模塊三:景點(diǎn)詳細(xì)信息查詢; 模塊四:景點(diǎn)最短路徑查詢; 模塊五:單源最短路徑查詢,Dijkstra算法。 <2>.主要模塊之間的調(diào)用關(guān)系:主程序菜單模式j(luò)iemian.java景點(diǎn)之間最短路查詢模塊class LuJing();RoadQuery.java景點(diǎn)詳細(xì)信息查詢模塊class ChaXun();景點(diǎn)拓?fù)鋱D模塊class Plan();顯示校院平面示意圖模塊class All();最短路徑界面class LuJing();單源最短路徑模塊Dijkstra遞歸算法GraphPath.java
19、返回某景點(diǎn)信息模塊class ChaXun();【模塊流程圖】YYNN建 圖增加頂點(diǎn)刪除頂點(diǎn)Dijkstra算法求最短路徑顯示最短路徑輸入頂點(diǎn)與邊值信息定義頂點(diǎn)個(gè)數(shù)及邊的個(gè)數(shù)開始結(jié)束主界面【界面設(shè)計(jì)】退出景點(diǎn)之間最短路徑查詢界面景點(diǎn)詳細(xì)信息查詢界面景點(diǎn)拓?fù)鋱D界面平面示意圖界面查詢查詢返回返回1. 主界面 2. 平面示意圖界面 3. 景點(diǎn)拓?fù)鋱D界面 4. 景點(diǎn)詳細(xì)查詢界面 5. 景點(diǎn)之間最短路徑查詢 【用戶手冊】1. 安裝運(yùn)行myeclipse8.5.0。2. 在myeclipse中新建校院導(dǎo)游為項(xiàng)目名的java項(xiàng)目,將程序打包放入src中,再在項(xiàng)目下創(chuàng)建img文件件存放需要用到的圖片。3. 運(yùn)
20、行jiemian.java程序,運(yùn)行程序進(jìn)入主界面;4. 通過主界面的功能鍵相互調(diào)用其它程序?qū)崿F(xiàn)其相應(yīng)功能;2、 程序上機(jī)調(diào)試報(bào)告【語法錯(cuò)誤及其排除】1. 關(guān)于static關(guān)鍵字修飾類方法的問題,用static修飾方法稱為類方法,不用static修飾的稱為實(shí)例方法。類方法可以相互調(diào)用,但不能調(diào)用實(shí)例的方法。2. 在編寫類方法時(shí),方法明后忘記“()”,導(dǎo)致編譯錯(cuò)誤。3. 在輸程序過程中,由于不斷的中英文切換,致使一些標(biāo)點(diǎn)符號不合法。在復(fù)查程序時(shí)也特別注意到此環(huán)節(jié)。4. 在程序輸入時(shí)單詞的拼寫錯(cuò)誤如Panel容易寫成Panle等。在復(fù)查時(shí)我也特別注意到此環(huán)節(jié)。5.在添加圖片時(shí),沒有輸入正確的路徑和
21、名稱,導(dǎo)致程序無法顯示運(yùn)行圖片。【算法錯(cuò)誤及其排除】 1. /最短路徑的ijkstra算法的修正:public void Dijkstra(int v0) int s=new intMaxVertices;int v,i,j,w;/*初始化s、dist和path*/for(v=0; v<CurrentVertices; v+) sv=0; /* 0表示還未求出最短路徑 */ /* 一開始假定取直達(dá)路徑最短 */distv=Edgev0v; /* 直達(dá)情況下的最后經(jīng)由點(diǎn)就是出發(fā)點(diǎn) */if(distv<MaxValue&&v!=v0) pathv=v0; else p
22、athv=-1; /* 無直達(dá)路徑 */*初始時(shí)源點(diǎn)v0S集,表示v0到v0的最短路徑已經(jīng)找到*/distv0=0;sv0=1; /下來假設(shè)經(jīng)由一個(gè)點(diǎn)中轉(zhuǎn)到達(dá)其余各點(diǎn),會近些,驗(yàn)證之./再假設(shè)經(jīng)由兩個(gè)點(diǎn)中轉(zhuǎn),會更近些,驗(yàn)證之,./直到窮舉完所有可能的中轉(zhuǎn)點(diǎn).double min;for(i=1;i<CurrentVertices ;i+) /挑一個(gè)距離最近經(jīng)由點(diǎn),下標(biāo)裝入vmin=MaxValue;for(w=0;w<CurrentVertices;w+)/*頂點(diǎn)w不屬于S集且離v0更近*/if(sw=0 && distw<min) v=w; /* 經(jīng)由頂點(diǎn)w
23、中轉(zhuǎn)則距離更短 */min=distw;sv=1; /*頂點(diǎn)v并入S,由v0到達(dá)v頂點(diǎn)的最短路徑為min*/*假定由v0到v,再由v直達(dá)其余各點(diǎn),更新當(dāng)前最后一個(gè)經(jīng)由點(diǎn)及距離*/for(j=0;j<CurrentVertices;j+) if(sj=0 && (min+Edgevj<distj)/* 如果多經(jīng)由一個(gè)v點(diǎn)到達(dá)j點(diǎn)的最短路徑反而要短,就更新.*/distj=min+Edgevj; pathj=v; /* 經(jīng)由點(diǎn)的序號 */*if*/*循環(huán)for i */*Dijkstra算法結(jié)束*/3、 程序測試結(jié)果【測試數(shù)據(jù)】1. 主界面。2. 校園平面示意圖瀏覽。3
24、. 校院主要景點(diǎn)編號及拓?fù)鋱D瀏覽。4. 景點(diǎn)查詢,查詢景點(diǎn)04的信息。5. 路徑查詢,查詢景點(diǎn)03到04的最短路徑。6. 菜單測試?!据敵鼋Y(jié)果】1. 主界面開始進(jìn)入該程序顯示主界面如下:2. 校院平面示意圖瀏覽。 3.校園主要景點(diǎn)拓?fù)鋱D瀏覽。 顯示了校園的拓補(bǔ)圖和景點(diǎn)的代號和名稱。如下:3. 景點(diǎn)查詢,查詢景點(diǎn)04的詳細(xì)信息。輸入景點(diǎn)的代號或名稱,顯示景點(diǎn)的圖片和簡介。如下 7. 路徑查詢,查詢景點(diǎn)03到04的最短路徑。 輸入起點(diǎn)和終點(diǎn),顯示起點(diǎn)和終點(diǎn)的景點(diǎn)圖片,還有起點(diǎn)到終點(diǎn)的最短距離和路徑。如下:8. 菜單測試。1>系統(tǒng)菜單2>幫助菜單?!境绦蛐阅茉u價(jià)】 本程序能夠利用UML設(shè)
25、計(jì)良好的人機(jī)交互界面,采用數(shù)據(jù)庫提數(shù)據(jù)支持,方便數(shù)據(jù)的存儲和靈活的應(yīng)用。使用起來較為方便直觀,維護(hù)期來也比較容易。【性能改進(jìn)方向】 當(dāng)然本程序還存在很大的改善空間,所以的路線及景點(diǎn)查詢都可以集結(jié)于一張?jiān)敿?xì)的平面地圖上,當(dāng)然也可以是三維甚至多維的空間上,對查詢景點(diǎn),人們查詢時(shí)只需將鼠標(biāo)放置所需了解的景點(diǎn)處,自動彈出該景點(diǎn)的所有詳細(xì)信息及其周邊景點(diǎn)信息等。對路徑查詢,不但提示所查最短路徑及其該如何到達(dá),還在地圖上畫出最短路線及其最佳行駛方案和可供選其它方案。類似于現(xiàn)有的百度,搜搜地圖等?!臼斋@及體會】 通過本次數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì),我順便把原有的基礎(chǔ)溫故了下,并且向新的知識擴(kuò)展了下。學(xué)到的東西很
26、多,并且很有用。本次設(shè)計(jì)用到了,PS,PPT,word,java、數(shù)據(jù)結(jié)構(gòu)、軟件工程、UML設(shè)計(jì)、數(shù)據(jù)庫等知識。首先利用java的可視化創(chuàng)建窗口框架,確保界面看起來簡潔并且易操作。再創(chuàng)建數(shù)據(jù)庫和表,優(yōu)化表的表現(xiàn)形式,易于操作,進(jìn)行相關(guān)的查詢等。從數(shù)據(jù)庫中提取數(shù)據(jù)存入臨時(shí)的數(shù)據(jù)結(jié)構(gòu)中,進(jìn)行無向圖的最短路徑操作。本次課設(shè)都是個(gè)人完成,覺得受益匪淺。 遺憾的是想在其基礎(chǔ)上擴(kuò)展下相關(guān)的功能,如:利用TCP/IP協(xié)議實(shí)現(xiàn)服務(wù)器端和客戶端的鏈接,進(jìn)行多線程的操作,查詢等可以同步進(jìn)行,管理員可以對數(shù)據(jù)庫進(jìn)行添加景點(diǎn)、刪除景點(diǎn)和修改景點(diǎn)信息等操作。但由于時(shí)間的關(guān)系,沒有對這些任務(wù)進(jìn)行擴(kuò)展。4、 源程序代碼 J
27、iemian.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;/景點(diǎn)拓?fù)鋱D界面class All extends JFrame JLabel label; JPanel panel;ImageIcon 背景;/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景 All() super("西安石油大學(xué)校本部校院拓?fù)鋱D"); /添加背景,添加標(biāo)題,設(shè)置按鈕圖標(biāo) 背景 = new ImageIcon("img/1233.png");/設(shè)置背景圖片 label = new JLabe
28、l(背景); label.setBounds(0, 0, 背景.getIconWidth(),背景.getIconHeight(); this.getLayeredPane().setLayout(null); JPanel p1 = new JPanel(); /添加背景,并把窗口大小設(shè)置為背景圖片的大小 panel = (JPanel) this.getContentPane(); panel.setOpaque(false); FlowLayout f = new FlowLayout(); panel.setLayout(f); getLayeredPane().setLayout(n
29、ull); getLayeredPane().add(label, new Integer(Integer.MIN_VALUE); setSize(背景.getIconWidth(), 背景.getIconHeight(); setBounds(350, 160,背景.getIconWidth(),背景.getIconHeight(); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); /校園平面示意圖界面class Plan extends JFrame JLabel label; JPanel pane
30、l;ImageIcon 背景;/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景 Plan() super("西安石油大學(xué)校本部平面圖"); /添加背景,添加標(biāo)題,設(shè)置按鈕圖標(biāo) 背景 = new ImageIcon("img/333.png");/設(shè)置背景圖片 label = new JLabel(背景); label.setBounds(0, 0, 背景.getIconWidth(),背景.getIconHeight(); this.getLayeredPane().setLayout(null); JPanel p1 = new JPanel(); /添
31、加背景,并把窗口大小設(shè)置為背景圖片的大小 panel = (JPanel) this.getContentPane(); panel.setOpaque(false); FlowLayout f = new FlowLayout(); panel.setLayout(f); getLayeredPane().setLayout(null); getLayeredPane().add(label, new Integer(Integer.MIN_VALUE); setSize(背景.getIconWidth(), 背景.getIconHeight(); setBounds(250, 160,背景
32、.getIconWidth(),背景.getIconHeight(); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); /查詢界面class ChaXun extends JFrame implements ActionListenerint i=0;JLabel label;JLabel label1=new JLabel("景點(diǎn)(編號或名稱)");/JLabel label2=new JLabel("開始");JLabel label3=new JLabel(&
33、quot;簡介");JLabel label4=new JLabel("景點(diǎn)名");JTextArea text1=new JTextArea("",1,20);JTextArea text2=new JTextArea("",3,40); JPanel panel; JButton button1=new JButton("返回");/按鈕組件 JButton button2=new JButton("查詢");/按鈕組件; /添加背景String tu="img/00.p
34、ng","img/01.png","img/02.png","img/03.png", "img/04.png", "img/05.png","img/06.png","img/07.png", "img/08.png","img/09.png","img/10.png","img/11.png",;String XX="","西安石油大
35、學(xué)校本部南大門,位于西安市電子二路18號!", "一號教學(xué)樓建于上個(gè)世紀(jì),老的教學(xué)樓," +"現(xiàn)在主要用著實(shí)驗(yàn)","校本部圖書館,圖書館藏有大量圖書", "校本部室內(nèi)體育館","利學(xué)超市","校本部學(xué)生食堂","校本部室外體育場地,包括足球場,籃球場,游泳館和旱冰場等室外運(yùn)動場地!", "西安石油大學(xué)校本部北門,位于西安" +"市電子一路!","石油大學(xué)校醫(yī)院","東門主要機(jī)動
36、車出入大門", "二號教學(xué)樓,與西階教學(xué)樓,西階會議室,東街教學(xué)" +"樓為一體建筑,建于本世紀(jì)初期!"ImageIcon picture= new ImageIcon(tui);/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景 ChaXun(int i) super("景點(diǎn)查詢"); setSize(561,495); setLocation(350,110); setResizable(true); setVisible(true); setLayout(new FlowLayout(); text1.setBackgro
37、und(Color.LIGHT_GRAY);/文本框顏色設(shè)為亮灰 text2.setBackground(Color.lightGray);/文本框顏色設(shè)為亮灰 text2.setEditable(false); Font font=new Font("華文行楷", Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,20); label3.setFont(font);/為標(biāo)題添加字體 label3.setForeground(new Color(255,2,2); picture= new ImageIcon(tu
38、i);/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景 label = new JLabel(picture); text2.append(XXi); add(label1); add(text1); add(button2); add(label); add(label3); add(text2); add(button1); button1.addActionListener(this);/為每個(gè)按鈕設(shè)置監(jiān)視器 button2.addActionListener(this);/為每個(gè)按鈕設(shè)置監(jiān)視器 public void actionPerformed(ActionEvent e) /事件響
39、應(yīng) if(e.getSource()=button2) this.dispose(); int i=Integer.parseInt(text1.getText(); new ChaXun(i); if(e.getSource()=button1) this.dispose(); /單源最短路徑查詢界面class LuJing extends JFrame implements ActionListenerGraphPath G=new GraphPath();JLabel tu1,tu2,tu3; String t;JLabel label1=new JLabel("起點(diǎn)(編號或名
40、稱):");JLabel label2=new JLabel("終點(diǎn)(編號或名稱):");JLabel label3=new JLabel("路徑顯示+距離: ");JTextArea text1=new JTextArea("",1,36);JTextArea text2=new JTextArea("",1,30);JTextArea text3=new JTextArea("",4,45); JPanel panel; String s="00" JButto
41、n button1=new JButton("查詢");/按鈕組件 JButton button2=new JButton("返回");/按鈕組件; /添加背景ImageIcon p1,p2,p3;/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景 String CXT="","img/01.jpg","img/02.jpg","img/03.jpg", "img/04.jpg","img/05.jpg","img/06.jpg&
42、quot;, "img/07.jpg","img/08.jpg","img/09.jpg", "img/10.jpg","img/11.jpg",; LuJing(int i,int j) super("路徑查詢"); setSize(561,495); setLocation(350,110); setResizable(true); setVisible(true); setLayout(new FlowLayout(); text1.setBackground(Colo
43、r.LIGHT_GRAY);/文本框顏色設(shè)為亮灰 text2.setBackground(Color.lightGray); text3.setBackground(Color.lightGray);/文本框顏色設(shè)為亮灰 Font font=new Font("華文行楷", Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,20); label3.setFont(font);/為標(biāo)題添加字體 label3.setForeground(new Color(255,2,2); p1 = new ImageIcon(CX
44、Ti);/設(shè)置背景圖片 p2 = new ImageIcon("img/00.JPG"); p3 = new ImageIcon(CXTj); tu1 = new JLabel(p1); tu2 = new JLabel(p2); tu3 = new JLabel(p3); text3.append(G.Putpath(i,j); add(label1); add(text1); add(label2); add(text2); add(button1); add(tu1); add(tu2); add(tu3); add(label3); add(text3); add(
45、button2); button1.addActionListener(this);/為每個(gè)按鈕設(shè)置監(jiān)視器 button2.addActionListener(this); public void actionPerformed(ActionEvent e) /事件響應(yīng) if(e.getSource()=button1) dispose(); /text3.append(CXT1) ; int i=Integer.parseInt(text1.getText(); int j=Integer.parseInt(text2.getText(); /text3.append("hungt
46、ao") ; new LuJing(i,j); /準(zhǔn)備有向圖(網(wǎng))數(shù)據(jù) String c="01","02","03","04","05","06", "07","08","09","10","11" /頂點(diǎn) int v= /弧 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
47、,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 ; Doubled=15,10,15,10,130,280,10,10,80,100,80,150,250, 100,20,150,20,100,300,150,250,100,200,200,130,300, 100,100,100,280,150,100 ; /權(quán) /插入頂點(diǎn) for(int k=0;i<11;k+) G.InsertVertex(ck); /插入弧 for(int m=0;i<32;m+) G.InsertEdge(vm0,vm
48、1,dm); G.Dijkstra(i); if(e.getSource()=button2) dispose(); /主界面public class jiemian extends JFrame implements ActionListenerJLabel label;JMenu mSystem=new JMenu("系統(tǒng)");/系統(tǒng)菜單 JMenuItem mAdd=new JMenuItem("添加景點(diǎn)"); JMenuItem mAlter=new JMenuItem("修改景點(diǎn)信息"); JMenuItem mRemove
49、=new JMenuItem("刪除景點(diǎn)"); JMenuItem mExit=new JMenuItem("退出"); JMenuItem mSave=new JMenuItem("保存"); JMenu mHelp=new JMenu("幫助");/幫助菜單 JMenuItem mAbout=new JMenuItem("軟件信息"); JMenuBar mBar=new JMenuBar(); JPanel panel;JButton button1=new JButton("景
50、點(diǎn)拓?fù)鋱D");JButton button2=new JButton("景點(diǎn)查詢");JButton button3=new JButton("路徑查詢");JButton button4=new JButton("退出");JButton button5=new JButton("校院平面圖");ImageIcon 背景;/背景為整個(gè)界面的背景,通過添加圖片設(shè)置為背景public jiemian()super("西安石油大學(xué)校本部導(dǎo)游"); /setSize(561,495); se
51、tLocation(350,110); setLayout(null); mSystem.add(mAdd);/為菜單添加菜單項(xiàng)目 mSystem.add(mAlter); mSystem.add(mRemove); mSystem.add(mSave); mSystem.add(mExit); mHelp.add(mAbout); mBar.add(mSystem);/將菜單添加到菜單條 mBar.add(mHelp); setJMenuBar(mBar);/設(shè)置菜單條 mExit.addActionListener(this);/為菜單按鈕添加監(jiān)聽事件 mAbout.addActionListener(this); mS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江水利水電學(xué)院《區(qū)塊鏈技術(shù)及運(yùn)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州信息工程職業(yè)學(xué)院《Office高級應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 長江職業(yè)學(xué)院《動物分子與細(xì)胞生物學(xué)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南財(cái)經(jīng)職業(yè)學(xué)院《國畫基礎(chǔ)(I)》2023-2024學(xué)年第一學(xué)期期末試卷
- 公司發(fā)展規(guī)劃報(bào)告模板
- 保險(xiǎn)銷售年度報(bào)告模板
- X1汽車新品發(fā)布會模板
- 市場部年終報(bào)告
- 生物科技年度總結(jié)模板
- 二零二五板材原材料供應(yīng)合同范本2篇
- 專業(yè)技術(shù)職務(wù)聘任表(2017年版) 人才引進(jìn) 居轉(zhuǎn)戶 中級職稱 高級職稱 技師 上海戶口
- GB/T 21835-2008焊接鋼管尺寸及單位長度重量
- 消防安全風(fēng)險(xiǎn)辨識清單
- GB 19079.6-2005體育場所開放條件與技術(shù)要求第6部分:滑雪場所
- 1超分子化學(xué)簡介
- 聚酯合成副反應(yīng)介紹
- DB37-T 1342-2021平原水庫工程設(shè)計(jì)規(guī)范
- 電除顫教學(xué)課件
- 廣東省藥品電子交易平臺結(jié)算門戶系統(tǒng)會員操作手冊
- DB32T 3960-2020 抗水性自修復(fù)穩(wěn)定土基層施工技術(shù)規(guī)范
- 大斷面隧道設(shè)計(jì)技術(shù)基本原理
評論
0/150
提交評論