學校超市選址問題_第1頁
學校超市選址問題_第2頁
學校超市選址問題_第3頁
學校超市選址問題_第4頁
學校超市選址問題_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

題目:學校超市選址問題目錄第1章需求分析 2第2章總體設計 22.1文字描述 22.2程序流程圖 2第3章詳細設計 33.1數據結構 3第4章實現部分 44.1核心代碼 4第5章程序測試 75.1測試數據 75.2程序運行圖 75.3結果分析 8第6章總結 8參考文獻 9第1章需求分析我的課程設計題目為學校超市選址問題。對于某一學校超市,其他各單位到其的距離不同,同時各單位人員去超市的頻度也不同,根據以上這兩個條件,確定學校的超市要建在什么地方,才能使得方案達到最優。該程序要能夠確定超市的最優地址。而這個最有地址只能在所有單位所在地中選擇。通過這個課程設計,真正理解弗洛伊德算法的思想,鍛煉自主學習能力和程序編寫能力,以及能夠處理現實生活中類似的問題。第2章總體設計2.1文字描述首先,建立圖的鄰接矩陣。輸入相關基本數據信息,以單位作為圖的頂點,以單位之間的距離與各個單位去超市的頻率之積作為圖的權值,建立鄰接矩陣。然后,調用弗洛伊德算法。單位i與j之間,加入過渡點k,若i、k間距離與k、j間距離之和小于i、j間的距離,修改矩陣。如此反復執行下去。完成后,得到i到j得最短距離。最后,確定最優地點。根據某單位到各個單位的最短距離之和最短,該單位所在地即為最優地址。2.2程序流程圖開始開始MMain()函數輸入數據輸入數據建立圖的鄰接矩陣建立圖的鄰接矩陣 if(i!=j) { cout<<i<<"到"<<j<<"的最短路徑為"<<t.a[i][j]<<":"; intnext=t.path[i][j]; cout<<j; while(next!=i) { cout<<"←"<<next; next=t.path[i][next]; }cout<<"←"<<i<<endl; } }}//計算最短距離之和voidgraph::add(graph&t){ intsum[n+1]; for(inti=0;i<n+1;i++) sum[i]=0; for(inti=1;i<=n;i++) { for(intj=1;j<=n;j++) { if(i!=j) { sum[i]=sum[i]+t.a[i][j]; } } cout<<endl; cout<<i<<"到各頂點的最短路徑總和為"<<sum[i]<<endl; } sum[0]=sum[1]; intaddress=1; for(inti=2;i<n+1;i++) if(sum[0]>sum[i]) { sum[0]=sum[i]; address=i; } cout<<"所以最短路徑總和為"<<sum[0]<<"學院超市的最佳選址為頂點"<<address<<endl; }//主函數voidmain(){ grapht;inti,j,w;for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i==j) t.arcs[i][j]=0; elset.arcs[i][j]=max;cout<<"***********學校超市最佳選址************"<<endl<<endl<<endl; cout<<"請輸入請輸入存在路徑的兩個單位以及相通兩個單位間的距離(用空格隔開)"; cout<<endl; for(intk=1;k<=e;k++) { cin>>i>>j>>w; t.arcs[i][j]=w; } t.floyd(t,n); t.add(t);system("pause");}第5章程序測試5.1測試數據輸入:請輸入請輸入存在路徑的兩個單位以及相通兩個單位間的距離輸出:最短距離及路徑、某一頂點到各個頂點的最短路徑之和以及最優地址程序設計中設頂點n=4,即4個頂點,e=8即有8條路徑。(如下圖)11234429523685.2程序運行圖則輸入如下:得出結果如下:5.3結果分析雖然該程序可以求出最優地址,但還有很多地方需要改進。首先,超市只能選在某個單位所在地,而不能選在除單位所在地以外。其次,每次運行,都要輸入數據,降低了程序的效率。可以用文件來保存輸入的數據,這樣不必每次運行再輸一遍了。最后,該程序只能確定一個地點。通過比較某單位到其他單位的距離之和,確定最優地址。雖然求出了最小的,但兩個相等的話,卻只能求出最先出現的。可以另外定義幾個變量,來存放相等時的行號。這樣,就能夠確定多個地址了,而不會漏掉。第6章總結這個程序基本上運行成功,能夠對輸入的數據進行簡單地計算,并確定超市的最優地址。但是,程序功能還不夠全面。同時,這次的課程設計,使我感觸頗多。我們的學習不應該只局限于課本。掌握了課本上知識是永遠不夠的。還需要我們懂得自學,最大限度地利用我們身邊的資源。我不但學到了知識,更重要的是如何用語言及文字表達自己的想法。雖然在我的程序代碼中,有一部分是從書本弗洛伊德算法程序中得來的,但我并沒有生搬硬套。我竭力改進代碼,力求與原有的相協調,同時有所創新突破。從中,我還意識到自己編程的弱勢。通過這次課程設計,也使我認識到:只要有不退縮的精神耐力終能戰勝困難。當你獨自把錯誤找出來,把程序調試出來,你就會覺得心情有多么的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論