交通咨詢模擬系統(tǒng)軟件詳細(xì)設(shè)計說明書_第1頁
交通咨詢模擬系統(tǒng)軟件詳細(xì)設(shè)計說明書_第2頁
交通咨詢模擬系統(tǒng)軟件詳細(xì)設(shè)計說明書_第3頁
交通咨詢模擬系統(tǒng)軟件詳細(xì)設(shè)計說明書_第4頁
交通咨詢模擬系統(tǒng)軟件詳細(xì)設(shè)計說明書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、詳細(xì)設(shè)計說明書目錄1引言21.1編寫目的21.2背景24.3飛機(jī)圖141. 引言1.1編寫目的為軟件設(shè)計者提供全國交通咨詢模擬系統(tǒng)軟件的需求分析說明預(yù)期讀者:1 開發(fā)人員 2 審查人員 3 后續(xù)開發(fā)1.2背景a 待開發(fā)的軟件系統(tǒng)的名稱:全國交通咨詢模擬b 本項目任務(wù)提出者:段毅 開發(fā)者:李鳳忠,孫希展,趙大輝,田佳林用戶:需要查詢?nèi)珖煌顩r的旅游者 實現(xiàn)該軟件的計算中心或計算機(jī)網(wǎng)絡(luò):交通查詢終端/互聯(lián)網(wǎng)2. 系統(tǒng)的結(jié)構(gòu)21ipo圖開始公共復(fù)用模塊用戶組模塊管理員模塊交通編輯城市編輯文檔存儲初始化城市圖交通圖打印交通情況查詢最省時旅程查詢最省錢旅程ps:其中任何模塊具有任何權(quán)限調(diào)用公共模塊以完

2、成本模塊的需求22大致流程圖開始用戶管理員結(jié)束交通編輯城市編輯最省時旅程最省錢旅程選擇用戶組選擇功能選擇功能添加線路修改線路刪除線路添加城市刪除城市輸入始末城市編號、出發(fā)到達(dá)時間、票價輸入始末城市編號、出發(fā)到達(dá)時間、票價輸入始末城市編號輸入城市名稱、及與舊城市交通信息輸入城市編號按要求修改城市、飛機(jī)、列車文檔繼續(xù)操作?輸入出發(fā)、到達(dá)城市編號輸入出發(fā)、到達(dá)城市編號系統(tǒng)輸出最優(yōu)策略:出發(fā)城市、中轉(zhuǎn)城市、到達(dá)城市及其兩兩出發(fā)到達(dá)時間繼續(xù)查詢?選擇子功能nonoyes顯示城市、交通信息顯示城市、交通信息初始化交通圖顯示全部交通情況顯示全部交通情況3模塊說明統(tǒng)一規(guī)則統(tǒng)一數(shù)據(jù)結(jié)構(gòu)在概要設(shè)計里有提及,再此重

3、述,并進(jìn)一步細(xì)化城市結(jié)構(gòu)交通圖結(jié)構(gòu)表結(jié)點(diǎn)交通圖結(jié)構(gòu)頭結(jié)點(diǎn)struct city/城市結(jié)構(gòu)體int i;/城市編號int used; /調(diào)用標(biāo)志char name20;/城市名稱otherinfo other; /其他信息citiesmaxcity;typedef struct arcnode/表結(jié)點(diǎn)int i;/到達(dá)城市編號int stime;/出發(fā)時間int etime;/到達(dá)時間int ticket;/票價int used; /調(diào)用標(biāo)志structarcnode *nextarc;/下一條線路指針otherinfo other; /其他信息做線路編號arcnode;typedef stru

4、ct vnode/頭結(jié)點(diǎn)int i; /出發(fā)城市編號int used; /調(diào)用標(biāo)志arcnode *firstarc;/第一條線路otherinfo other; /其他信息vnode;飛機(jī)交通圖、列車交通圖vnode adjplanemaxcity,adjtrainmaxcity;文檔規(guī)則在概要設(shè)計里已詳細(xì)解釋,此處不再贅述。值得一提的是:1 表結(jié)點(diǎn)的其他信息(other)做線路編號,讓管理員修改和刪除命令更加人性化,操作更加簡單2 交通圖的第一個結(jié)點(diǎn)其他信息(adj0.other)記錄總線路數(shù),及圖中邊數(shù),有利于添加線路,讓添加線路有新的線路編號3.1模塊描述基于ipo圖和大致流程圖,有如

5、下模塊描述:一 管理員模塊1被調(diào)用關(guān)系:主函數(shù)main()調(diào)用2功能:完成管理員規(guī)定的功能-城市編輯、交通編輯和打印交通情況(調(diào)用公共模)3函數(shù)聲明:int admin();4設(shè)計方法:int admin()/管理員函數(shù)int choose,again;again = 1;while(again)system(cls);printf(nn選擇操作:nn);printf( 1.城市編輯 2.交通編輯 3.查看交通情況n);scanf(%d,&choose);while(choose!=1 & choose!=2 & choose!=3) printf(選擇錯誤,請重新輸入:);scanf(%d,

6、&choose);switch(choose)case 1:cityedit(); break;/城市編輯case 2:trafficedit();break;/交通編輯case 3:printfcity();printf(飛機(jī)航班情況:n);printftraffic(adjplane);printf(列車時刻情況:n);printftraffic(adjtrain);break;default:printf(未知錯誤n);system(pause);break;/system(cls);加不?printf(n繼續(xù)操作管理員?nn1.yes 2.non);scanf(%d,&again);w

7、hile(again!=1&again!=2) printf(選擇錯誤,請重新輸入:);scanf(%d,&again);if(again = 2)again = 0;/退出循環(huán),結(jié)束管理員函數(shù)save();/保存文檔printf(感謝使用。n);system(pause);return 1;5可調(diào)用關(guān)系:交通編輯模塊、城市編輯模塊、公共模塊6出口:遞歸調(diào)用管理員函數(shù)admin();或主函數(shù)main()的退出1.1交通編輯模塊1被調(diào)用關(guān)系:管理員函數(shù)admin()調(diào)用2功能:完成管理員規(guī)定的下的子功能-交通編輯包括線路添加、修改、刪除3函數(shù)聲明:int trafficedit();4設(shè)計方法:

8、代碼過于冗長,此處用流程圖表示,便于理解交通編輯開始編輯飛機(jī)編輯列車添加線路修改線路刪除線路添加線路修改線路刪除線路繼續(xù)操作?退回至管理員函數(shù)noyes選擇操作選擇操作選擇操作5可調(diào)用關(guān)系:線路添加、修改和刪除、公共模塊6出口:遞歸調(diào)用交通編輯或管理員函數(shù)admin();附錄:線路添加int addarc(vnode adj); 線路修改int revisearc(vnode adj); 線路刪除int deletearc(vnode adj);出于詳細(xì)文檔的簡潔性、可讀性,這三個函數(shù)不加詳述1.2城市編輯模塊1被調(diào)用關(guān)系:管理員函數(shù)admin()調(diào)用2功能:完成管理員規(guī)定的下的子功能-城市編

9、輯包括城市添加和刪除3函數(shù)聲明:int cityedit();4設(shè)計方法:int cityedit()打印城市圖選擇功能:1。添加城市2。刪除城市。switch:1。輸入添加城市名稱查詢最近一個調(diào)用為空的城市編號,插入城市2輸入刪除城市編號 若該編號調(diào)用為真刪除之(使之調(diào)用為假)繼續(xù)操作?:1。繼續(xù),調(diào)用本函數(shù) 2。不繼續(xù),退回管理員函數(shù)5可調(diào)用關(guān)系:公共模塊6出口:遞歸調(diào)用城市編輯cityedit()或管理員函數(shù)admin();1.3文檔存儲模塊1被調(diào)用關(guān)系:管理員函數(shù)admin()調(diào)用2功能:完成管理員規(guī)定的下的子功能-文檔存儲包括城市文檔、飛機(jī)和列車的交通文檔3函數(shù)聲明:int save

10、()4設(shè)計方法:int save()/保存文檔printf(正在保存信息n);savecity();savetraffic();printf(保存信息完畢n);return 1;5可調(diào)用關(guān)系:城市文檔存儲、飛機(jī)和列車的交通文檔存儲、公共模塊6出口:管理員函數(shù)admin();附錄:交通文檔存儲函數(shù)int savetraffic(); 城市文檔存儲函數(shù)int savecity()二 用戶組模塊1被調(diào)用關(guān)系:主函數(shù)main調(diào)用2功能:完成用戶組規(guī)定的下的子功能-查詢最省時、最省錢旅程和打印交通情況3函數(shù)聲明:int user();4設(shè)計方法:int user()打印城市圖選擇功能:1。最省時旅程 2

11、。最省錢旅程 3。打印交通情況switch:1。最省時旅程函數(shù)min_time()2最省錢旅程函數(shù)min_money()3打印城市圖、交通圖。繼續(xù)操作?:1。繼續(xù),調(diào)用本函數(shù) 2。不繼續(xù),退回主函數(shù)5可調(diào)用關(guān)系:省時旅程函數(shù)、省錢旅程函數(shù)和公共模塊6出口:遞歸調(diào)用用戶組函數(shù)user()或主函數(shù)main();1.1最優(yōu)旅程函數(shù)模塊1被調(diào)用關(guān)系:用戶組函數(shù)user();2功能:完成用戶組規(guī)定的下的子功能-查詢最省時、最省錢旅程3函數(shù)聲明:int min_money();int min_time();4設(shè)計方法:int min_time()int choose;printf(請選擇交通工具n);pr

12、intf( 1.飛機(jī) 2.列車n);scanf(%d,&choose);while(choose!=1 & choose!=2) printf(選擇錯誤,請重新輸入:);scanf(%d,&choose);switch(choose)case 1:minsome_dij(adjplane,1);break;/飛機(jī)最短時間case 2:minsome_dij(adjtrain,1);break;/列車最短時間default:printf(未知錯誤n);system(pause);break;return 1;int min_money()int choose;printf(請選擇交通工具n);p

13、rintf( 1.飛機(jī) 2.列車n);scanf(%d,&choose);while(choose!=1 & choose!=2) printf(選擇錯誤,請重新輸入:);scanf(%d,&choose);switch(choose)case 1:minsome_dij(adjplane,2);break;/飛機(jī)最少金錢case 2:minsome_dij(adjtrain,2);break;/列車最少金錢default:printf(未知錯誤n);system(pause);break;return 1;5可調(diào)用關(guān)系:最短路徑函數(shù)minsome_dij(vnode adj,int some

14、)6出口:用戶組函數(shù)user();1.2最短路徑函數(shù)1被調(diào)用關(guān)系:最短時間函數(shù)int min_money();最短路徑函數(shù)int min_time();2功能:完成用戶規(guī)定的下的子功能-查詢最優(yōu)旅程的兩城市最短路徑3函數(shù)聲明:int minsome_dij(vnode adj,int some)4設(shè)計方法:代碼過于冗長,此處用流程圖表示,便于理解 必要說明:/以下用djsila算法查詢/some控制代價類型(1為時間,2為金錢)/p存儲路徑信息(線路),d存儲代價,final存儲是否入圖s,lasttime記錄最后時間(與新到達(dá)線路做比較)最短路徑開始退回至用戶組函數(shù)或主函數(shù)按照交通表adj初

15、始化代價int dmaxcity、各個城市最后到達(dá)時間lasttimemaxcity,路徑函數(shù)arcnode *pmaxcitymaxcity打印城市圖輸入出發(fā)、到達(dá)城市編號選取最小代價min和對應(yīng)邊vmin=infinityv=j按照adjv更新代價dmaxcity和路徑pmaxcitymaxcity城市i和j不通找到路線,輸出路徑pjnono yse yse5可調(diào)用關(guān)系:打印城市圖函數(shù)6出口:退回至用戶組函數(shù)或主函數(shù)三 公共模塊1.1初始化城市圖1被調(diào)用關(guān)系:主函數(shù) main()2功能:完成主函數(shù)規(guī)定城市圖的初始化3函數(shù)聲明:int initcity(char *c) /初始化城市citi

16、es(按照c串)4設(shè)計方法:int initcity(char *c)/初始化城市cities(按照c串)int i=0,j=0,k=0;while(i3000 & jmaxcity & *c!=0)k=0;while(*c= & *c!=0) c+;/去空格跳至有內(nèi)容的地方if(*c = 0)continue;j = getint(&c);/取城市編號,調(diào)用為真citiesj.used=1;while(*c= & *c!=0) c+;/去空格while(*c!= & *c!=0) k+=*(c+);/讀入城市名稱k=0;return 1;5可調(diào)

17、用關(guān)系:得到下一個整數(shù)函數(shù)getint();6出口:主函數(shù)1.2初始化交通圖1被調(diào)用關(guān)系:主函數(shù)main()2功能:完成主函數(shù)規(guī)定交通圖的初始化3函數(shù)聲明:int initraffic(char *t,vnode adj)/初始化交通圖adj(按照s串)4設(shè)計方法:此處使用偽代碼:使用getint函數(shù)得到下一個整數(shù)int initraffic(char *t,vnode adj)char *s;s=t;while(s串結(jié)束) 若s串結(jié)束,break;若s串轉(zhuǎn)行,s+,continue;aim = getint(&s); /得到出發(fā)城市如果aim城市不可調(diào)用,轉(zhuǎn)入下一行,continue;whi

18、le(s串未轉(zhuǎn)行)用getint每讀入4個數(shù)字添加一條adjaim下路直到轉(zhuǎn)行退出if(s串轉(zhuǎn)行)s+ ;5可調(diào)用關(guān)系:getint函數(shù)6出口:遞歸調(diào)用用戶組函數(shù)user()或主函數(shù)main();1.3打印交通情況1被調(diào)用關(guān)系:任何可以調(diào)用的函數(shù)2功能:完成主函數(shù)規(guī)定城市圖交通圖的打印3函數(shù)聲明:int printftraffic(vnode adj)/打印adj交通圖 int printfcity()/打印城市3 設(shè)計方法:int printfcity()/打印城市int i;printf(城市信息如下:nn);for(i=0;imaxcity;i+)if(citiesi.used)prin

19、tf( %3d.%-10s,citiesi.i,);printf(nn);return 1;int printftraffic(vnode adj)/打印adj交通圖int i;arcnode *next;printf(編號 出發(fā)城市 到達(dá)城市 出發(fā)時間 到達(dá)時間 票價n);for(i=0;iused & citiesnext-i.used) /到達(dá)城市可線路可調(diào)用printf(%-4d %2d.%-6s %2d.%-6s %-8d %-8d %-4dn,next-other,adji.i,,next-i,,next-stime,next-etime,next-ticket);

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論