




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
廣東海洋大學(xué)信息學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目公交換乘系統(tǒng)課程名稱數(shù)據(jù)結(jié)構(gòu)姓名(學(xué)號(hào))聯(lián)系電話專業(yè)名稱計(jì)算機(jī)科學(xué)與技術(shù)所在班級(jí)1101班指導(dǎo)教師教師職稱起止時(shí)間2011 年12月26日至 2012年1月6日評(píng)定成績一、 課程設(shè)計(jì)的主要內(nèi)容1、 公交線路中,為用戶查找最短路徑,有【0】次換乘就能到達(dá)目的地和【1】次換乘就能到達(dá)目的地。2、 為用戶計(jì)算出路程所需費(fèi)用。3、 該課程設(shè)計(jì)的公交系統(tǒng)中有分權(quán)限;分管理員用戶和普通用戶,管理員的登陸需要帳號(hào)和密碼(暗文),普通用戶可以直接登陸。4、 管理員可以重新輸入新公交路線、輸出公交路線、讀取已經(jīng)存盤的公交路線資料、存入新公交路線資料(慎用?。?、查找最短公交路線、新增管理員用戶和刪除管理員用戶。5、 普通用戶只能輸出公交路線和查找最短公交路線兩個(gè)功能。二、 功能和結(jié)構(gòu)設(shè)計(jì)1、 為用戶分權(quán)限2、 管理員有重新輸入新公交路線、輸出公交路線、讀取已經(jīng)存盤的公交路線資料、存入新公交路線資料(慎用?。?、查找最短公交路線、新增管理員用戶和刪除管理員用戶3、 普通用戶只能輸出公交路線和查找最短公交路線兩個(gè)功能。注:系統(tǒng)默認(rèn)的公交線路圖(系統(tǒng)開發(fā)者為用戶事先存好的,在f1.txt文檔中)三、 流程圖和算法設(shè)計(jì)算法:(給出查找最短路徑的方法)void Bus:findline()int x,y,i,j,k,l,longers;longers=0;/x、y是起始和終止車站的編碼;i、j是每個(gè)站點(diǎn)后兩位編碼;k是每個(gè)站點(diǎn)后兩位編碼的差值;l是轉(zhuǎn)乘站點(diǎn)的后兩位編碼while(1)coutx;couty;if(x/100)lineNum|(x/100)=busStationNumx/100-1|(y/100)lineNum|(y/100)=busStationNumy/100-1)/前兩個(gè)是判斷車站編碼的首位的,第三個(gè)是判斷車站編碼的后兩位的cout-找不到您所輸入站點(diǎn),請(qǐng)重新輸入!-endl;elsebreak;i=x%100;j=y%100;if(x/100)=(y/100)cout您可【0】次換乘到達(dá)目的地,路線如下:0)for(k=0;kj-i;k+)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k.longer;coutlinex/100-1x%100+k.busStationNamej-i;k-)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k-1.longer;coutlinex/100-1x%100+k.busStationNameendl;longers+=linex/100-1x%100+k.longer;cout-路程所需費(fèi)用:longers*0.5元,祝您路途愉快!-endl;elsestring takeName25;/存放兩條路線上可轉(zhuǎn)乘車站的名稱;int takeNum25;/存放兩條路線上可轉(zhuǎn)乘車站的編號(hào);int a,b;/a、b是計(jì)數(shù)的for(a=0;a2;a+)for(b=0;b5;b+)takeNameab= ;takeNumab=0;/遍歷每條路線可換乘的站點(diǎn)for(a=0,b=0;abusStationNumx/100-1;a+)if(linex/100-1a.take)takeName0b=linex/100-1a.busStationName;takeNum0b=linex/100-1a.number;b+;for(a=0,b=0;abusStationNumy/100-1;a+)if(liney/100-1a.take)takeName1b=liney/100-1a.busStationName;takeNum1b=liney/100-1a.number;b+;/比較可換乘的站點(diǎn)是否有相同的,如果有,可以了一次換乘到達(dá)目的地;否則不可以bool nn=false;for(a=0;a5;a+)for(b=0;b5;b+)if(takeName0a!= &takeName1b!= &takeName0a=takeName1b)cout您可以【1】次換乘到達(dá)目的地(換乘點(diǎn)前面有“*”提示),為你選擇的路線如下:0)for(k=0;kl-i;k+)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k.longer;cout*linex/100-1x%100+k.busStationName;/money+=linex/100-1x%100+k.longer;elsefor(k=0;kl-i;k-)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k-1.longer;cout*linex/100-1x%100+k.busStationName;/money+=linex/100-1x%100+k.longer;l=takeNum1b%100;if(j-l0)longers+=liney/100-1l.longer;for(k=1;kj-l;k+)coutliney/100-1l+k.busStationName;longers+=liney/100-1l+k.longer;coutliney/100-1l+k.busStationNamej-l;k-)coutliney/100-1l+k.busStationName;longers+=liney/100-1l+k.longer;coutliney/100-1l+k.busStationNameendl;longers+=liney/100-1l+k.longer;cout-路程所需費(fèi)用:longers*0.5元,祝您路途愉快!-endl;nn=true;break;else if(a=4&b=4)cout很抱歉,沒有【0】次換乘或【1】次換乘可以到達(dá)目的地的路線!;if(nn)break;四、 源程序代碼Bus.h:#include#includeusing namespace std;template class Buspublic:struct BusStationint number; /車站編號(hào)string busStationName;/車站名稱bool take; /是否可乘換int longer; /到下一個(gè)車站的路程;Bus();Bus();void input();void output();void findline();/查找線路void readfile();/讀取公交路線數(shù)據(jù)void writefile();/存入公交路線數(shù)據(jù)typedef BusStation* Pointer;private:Pointer *line; /指向三條路線的指針int lineNum;/路線數(shù)int *busStationNum;/每條路線的車站數(shù);templateclass Administratorpublic:Administrator();Administrator();void readAdministrator();/讀取管理員資料void writeAdministrator();/存入管理員資料void addAdministrator();/增加用戶void deleteAdministrator();/刪除用戶bool land();private:string *name;string *mima;int num;/Bus.cpp#includeBus.h#includetemplateBus:Bus()lineNum=0;line=new PointerlineNum;/三條線路busStationNum=new int lineNum;/每條線路的車站數(shù)templateBus:Bus()for(int i=0;ilineNum;i+)delete linei;lineNum=0;delete busStationNum;delete line;templatevoid Bus:input()coutlineNum;line=new PointerlineNum;/三條線路busStationNum=new int lineNum;/每條線路的車站數(shù)for(int a=0;alineNum;a+)cout請(qǐng)輸入第a+1busStationNuma;for(int b=0;blineNum;b+)lineb=new BusStationbusStationNumb;/依據(jù)每條線路的車站數(shù)創(chuàng)建每條線路int k,m,i,j;/k指前一線,m指后一線,i指要比較的前一線的車站,j指要比較的后一線的車站cout請(qǐng)依次輸入每個(gè)車站的名稱、到下一站點(diǎn)的距離:endl;for(i=0;ilineNum;i+)cout第i+1條路線的資料endl;for(j=0;jlineij.busStationName;if(jlineij.longer;/到下一站點(diǎn)有3公里elsecinlineij.longer;/以下是要找出線路中可換乘的車站for(k=0,m=k+1;klineNum-1;)/每條路線的站點(diǎn)與另一條路線的站點(diǎn)進(jìn)行比較for(i=0;ibusStationNumk;i+)for(j=0;j=lineNum-1)k+;m=k;m+;templatevoid Bus:output()cout編碼 ;cout車站名稱 ;cout到下一站的距離 ;cout是否可以乘換endl;coutsetiosflags(ios:left);for(int i=0;ilineNum;i+)for(int j=0;jbusStationNumi;j+)coutsetw(6)lineij.number;coutsetw(20)lineij.busStationName;coutsetw(20)lineij.longer;if(lineij.take)cout是 endl;elsecout否 endl;coutendl;templatevoid Bus:findline()int x,y,i,j,k,l,longers;longers=0;/x、y是起始和終止車站的編碼;i、j是每個(gè)站點(diǎn)后兩位編碼;k是每個(gè)站點(diǎn)后兩位編碼的差值;l是轉(zhuǎn)乘站點(diǎn)的后兩位編碼while(1)coutx;couty;if(x/100)lineNum|(x/100)=busStationNumx/100-1|(y/100)lineNum|(y/100)=busStationNumy/100-1)/前兩個(gè)是判斷車站編碼的首位的,第三個(gè)是判斷車站編碼的后兩位的cout-找不到您所輸入站點(diǎn),請(qǐng)重新輸入!-endl;elsebreak;i=x%100;j=y%100;if(x/100)=(y/100)cout您可【0】次換乘到達(dá)目的地,路線如下:0)for(k=0;kj-i;k+)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k.longer;coutlinex/100-1x%100+k.busStationNamej-i;k-)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k-1.longer;coutlinex/100-1x%100+k.busStationNameendl;longers+=linex/100-1x%100+k.longer;cout-路程所需費(fèi)用:longers*0.5元,祝您路途愉快!-endl;elsestring takeName25;/存放兩條路線上可轉(zhuǎn)乘車站的名稱;int takeNum25;/存放兩條路線上可轉(zhuǎn)乘車站的編號(hào);int a,b;/a、b是計(jì)數(shù)的for(a=0;a2;a+)for(b=0;b5;b+)takeNameab= ;takeNumab=0;/遍歷每條路線可換乘的站點(diǎn)for(a=0,b=0;abusStationNumx/100-1;a+)if(linex/100-1a.take)takeName0b=linex/100-1a.busStationName;takeNum0b=linex/100-1a.number;b+;for(a=0,b=0;abusStationNumy/100-1;a+)if(liney/100-1a.take)takeName1b=liney/100-1a.busStationName;takeNum1b=liney/100-1a.number;b+;/比較可換乘的站點(diǎn)是否有相同的,如果有,可以了一次換乘到達(dá)目的地;否則不可以bool nn=false;for(a=0;a5;a+)for(b=0;b5;b+)if(takeName0a!= &takeName1b!= &takeName0a=takeName1b)cout您可以【1】次換乘到達(dá)目的地(換乘點(diǎn)前面有“*”提示),為你選擇的路線如下:0)for(k=0;kl-i;k+)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k.longer;cout*linex/100-1x%100+k.busStationName;/money+=linex/100-1x%100+k.longer;elsefor(k=0;kl-i;k-)coutlinex/100-1x%100+k.busStationName;longers+=linex/100-1x%100+k-1.longer;cout*linex/100-1x%100+k.busStationName;/money+=linex/100-1x%100+k.longer;l=takeNum1b%100;if(j-l0)longers+=liney/100-1l.longer;for(k=1;kj-l;k+)coutliney/100-1l+k.busStationName;longers+=liney/100-1l+k.longer;coutliney/100-1l+k.busStationNamej-l;k-)coutliney/100-1l+k.busStationName;longers+=liney/100-1l+k.longer;coutliney/100-1l+k.busStationNameendl;longers+=liney/100-1l+k.longer;cout-路程所需費(fèi)用:longers*0.5元,祝您路途愉快!-endl;nn=true;break;else if(a=4&b=4)cout很抱歉,沒有【0】次換乘或【1】次換乘可以到達(dá)目的地的路線!;if(nn)break;/cout還未寫代碼;templatevoid Bus:readfile()ifstream infile(f1.txt,ios:in);if(!infile)cerropen error!lineNum;line=new PointerlineNum;/三條線路busStationNum=new int lineNum;/每條線路的車站數(shù)for(int a=0;abusStationNuma;for(int b=0;blineNum;b+)lineb=new BusStationbusStationNumb;/依據(jù)每條線路的車站數(shù)創(chuàng)建每條線路for(int i=0;ilineNum;i+)for(int j=0;jlineij.number;infilelineij.busStationName;infilelineij.longer;infilelineij.take;cout-讀取成功-endl;infile.close();template void Bus:writefile()ofstream outfile(f1.txt,ios:out);if(!outfile)cerropen error!endl;exit(1);outfilelineNum ;for(int a=0;alineNum;a+)outfilebusStationNuma ;for(int i=0;ilineNum;i+)for(int j=0;jbusStationNumi;j+)outfilelineij.number ;outfilelineij.busStationName ;outfilelineij.longer ;outfilelineij.take ;cout-存入成功-endl;outfile.close();/template Administrator:Administrator()num=0;name=new stringnum;mima=new stringnum;templateAdministrator:Administrator()num=0;delete name;delete mima;name=NULL;mima=NULL;templatevoid Administrator:readAdministrator()ifstream infile(Administrator.txt,ios:in);if(!infile)cerropen error!num;name=new stringnum;mima=new stringnum;for(int i=0;inameimimai;templatevoid Administrator:writeAdministrator()ofstream outfile(Administrator.txt,ios:out);if(!outfile)cerropen error!endl;exit(1);outfilenum ;for(int i=0;inum;i+)outfilenamei ;outfilemimai ;templatebool Administrator:land()string myname;string mymima;coutmyname;cout 密碼:;char ch; while (ch=getch()!=13) /輸入密碼時(shí)顯示星號(hào)功能。老師,學(xué)生登錄時(shí)也與這個(gè)相同。 mymima+=ch;/string對(duì)象重載了+= coutmymima;readAdministrator();for(int i=0;inum;i+)if(myname=namei&mymima=mimai)return true;return false;template void Administrator:addAdministrator()string *name_aux,*mima_aux;name_aux=new stringnum+1;mima_aux=new stringnum+1;for(int i=0;inum;i+)/將用戶的帳戶和密碼賦給輔助變量name_auxi=namei;mima_auxi=mimai;/一下幾行代碼是為了擴(kuò)大存儲(chǔ)帳戶和密碼的數(shù)組delete name;delete mima;num+;name=new stringnum;mima=new stringnum;for(int j=0;jnum-1;j+)/將用戶和密碼重新復(fù)制回來namej=name_auxj;mimaj=mima_auxj;delete name_aux;delete mima_aux;name_aux=NULL;mima_aux=NULL;coutnamenum-1;coutmimanum-1;for(int k=0;knum-1;k+)if(namek=namenum-1)cout帳戶已存在!;num-;break;else if(k=num-2)cout-新管理員用戶創(chuàng)建成功-;writeAdministrator();templatevoid Administrator:deleteAdministrator()string dname,dmima;/分別存放要?jiǎng)h除的管理員用戶的帳號(hào)和密碼coutdname;coutdmima;for(int i=0;inum;i+)if(dname=namei&dmima=mimai)for(int j=i;jnum-1;j+)namej=namej+1;mimaj=mimaj+1;num-;writeAdministrator();cout-您已經(jīng)成功刪除dname管理員用戶=num-1)cout-您要?jiǎng)h除的用戶不存在!-;getch();/main.cpp/*日期:2011.12.282011.12.30作者:周欽雄聲明:我只是編程世界中小兵,程序中不足之處請(qǐng)多多提點(diǎn),不勝感激*/#includeBus.cpp#include#include#includevoid main()/system(Color 3D);Bus b;Administrator a;int num;loop:while(1)system(cls);coutsetw(70)endl;coutsetw(70) 歡迎進(jìn)入公交換乘系統(tǒng) wwwwwwwwwendl;coutsetw(70) endl;coutsetw(70) 1、 管理員登陸 endl;coutsetw(70) 2、普通用戶登陸 endl;coutsetw(70) 3、 退出 endl;coutsetw(70) 請(qǐng)選擇 endl;coutsetw(70)num;switch(num)case 1:if(a.land()goto g;elsecoutendl;cout-用戶不存在或密碼錯(cuò)誤-;getch();break;case 2:goto h;break;case 3:goto I;break;default:cout-您的輸入有誤!按任意鍵重新選擇-;getch();goto loop;g:while(1)system(cls);coutsetw(70)endl;coutsetw(70) 管理員界面 wwwwwwwwwendl;coutsetw(70) endl;coutsetw(70) 1、輸入新公交路線 endl;coutsetw(70) 2、輸出公交路線 endl;coutsetw(70) 3、讀取公交線資料 endl;coutsetw(70) 4、存入公交線資料(慎用!) endl;coutsetw(70) 5、查找最短公交路線 endl;coutsetw(70) 6、新增管理員用戶 endl;coutsetw(70) 7、刪除管理員用戶 endl;coutsetw(70) 8、 返回 endl;couts
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025太陽能槽式復(fù)合拋物面聚光集熱土壤儲(chǔ)熱技術(shù)
- 個(gè)人勞動(dòng)法權(quán)益保障合同
- 個(gè)人抵押借款擔(dān)保合同
- 分期付款購買機(jī)動(dòng)車合同書
- 醫(yī)療器械藥品購銷合同
- 醫(yī)院場地租賃合同書樣本
- 五金電器銷售合同6篇
- 2025年紅河b2貨運(yùn)上崗證模擬考試
- 合同范本銷售人員聘用合同7篇
- 面板自動(dòng)檢測機(jī)競爭策略分析報(bào)告
- Boomer-XL3D鑿巖臺(tái)車(修訂版)
- 幼兒園小班故事《貪吃的小豬》課件
- 三年級(jí)(下)道德與法治第三單元教材分析課件
- Passport評(píng)估工具:項(xiàng)目復(fù)雜度評(píng)估表
- 南寧鐵路局招聘2023年高校畢業(yè)生133人筆試參考題庫(共500題)答案詳解版
- 軍用飛機(jī)改進(jìn)方案
- 多發(fā)性肌炎的基本知識(shí)
- 新版-GSP-:中藥材、中藥飲片知識(shí)培訓(xùn)試題及答案
- 裝修隱蔽工程驗(yàn)收記錄表范例
- 攝影基礎(chǔ)知識(shí)教學(xué)課件-攝影師入門基礎(chǔ)知識(shí)
- 煙花爆竹基礎(chǔ)知識(shí)
評(píng)論
0/150
提交評(píng)論