廣東海洋大學(xué)公交換乘系統(tǒng)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  廣東海洋大學(xué)信息學(xué)院</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  目錄</b></p><p>  一、課程設(shè)計(jì)主要內(nèi)容………………………………………P3</p><p>  1.1 概況…………………………………………………………….P3&l

2、t;/p><p>  1.2 主要內(nèi)容……………………………..………………….…P4</p><p>  1.3 開發(fā)環(huán)境和工具………………………………..…………….P4</p><p>  二、功能和結(jié)構(gòu)設(shè)計(jì)………………………………………….P4</p><p>  三、流程圖和算法設(shè)計(jì)……………………………………………P4</p&g

3、t;<p>  四、源程序代碼………………………………………….…..P9</p><p>  五、課程設(shè)計(jì)總結(jié)………………………………………….…..P17</p><p>  5.1 優(yōu)點(diǎn)……………………………………………………P17</p><p>  5.2 缺點(diǎn)……………………………………………………P17</p><p&

4、gt;  5.3 自我總結(jié)……………………………………………P17</p><p>  六、參考資料……………………………………………….…..P18</p><p>  一、課程設(shè)計(jì)主要內(nèi)容</p><p><b>  1.1 概況</b></p><p><b>  名稱:公交換乘系統(tǒng)</b>&

5、lt;/p><p>  用途:交通運(yùn)輸公司、乘客</p><p>  功能:實(shí)現(xiàn)最優(yōu)路線的顯示</p><p><b>  1.2 主要內(nèi)容</b></p><p>  公交換乘在一個(gè)城市的公共交通系統(tǒng)設(shè)計(jì)中占據(jù)著極其重要的地位,公交換乘的過程將直接影響居民出行時(shí)間的長(zhǎng)短,公交換乘的過程如下:指定一起始公交站點(diǎn)與目的公交站點(diǎn)

6、,依據(jù)參考因素,例如:換乘路線的路徑最短、耗費(fèi)時(shí)間最短、所需車資最少等,經(jīng)過分析處理得到可達(dá)目的站點(diǎn)換乘次數(shù)最少的乘車方案,具體可分為: </p><p> ?。?)零次換乘 起始站點(diǎn)和目的站點(diǎn)之間存在可直達(dá)的公交線路,即出行居民無需轉(zhuǎn)乘就可以直接到達(dá)目的站點(diǎn),這也是較為理想的方案。 </p><p> ?。?)一次換乘 起始站點(diǎn)和目的站點(diǎn)之間沒有公交車直接往返,即兩站點(diǎn)之間不存在可直達(dá)的

7、公交線路,則出行居民需要在途經(jīng)的某個(gè)站點(diǎn)下車,然后轉(zhuǎn)乘另一線路公交車才能達(dá)到目的站點(diǎn)。 </p><p> ?。?)多次換乘 在起始站點(diǎn)和目的站點(diǎn)之間沒有可直達(dá)的公交線路,出行居民需要經(jīng)過一次以上的轉(zhuǎn)乘才能達(dá)到目的站點(diǎn),則得到多次換乘方案。多次換乘方案可通過一次換乘的遞歸計(jì)算得到,一般情況下,超過兩次轉(zhuǎn)乘的方案對(duì)于出行居民來說是難以接受的,本課程設(shè)計(jì)只要求計(jì)算零次和一次換乘方案,對(duì)于一次以上的公交換乘不作要求。&

8、lt;/p><p>  下面以圖所示的公交線路圖為例,來看一下公交換乘方案的選擇。</p><p>  在該交通公交線路圖網(wǎng)中共有1線、2線、3線3條公交線路,每條線路各布有若干個(gè)公交站點(diǎn)(與公交線路對(duì)應(yīng)顏色的小圓點(diǎn)標(biāo)示),其中黑色圓點(diǎn)表示換乘站點(diǎn),即不同線路共同經(jīng)過的公交站點(diǎn)。例如,某一居民在灣橋站乘車前往目的站點(diǎn)建新東路站,則該居民可乘坐2線公交車即可直達(dá)目的站點(diǎn),即零次換乘;如果該居民前

9、往目的站點(diǎn)海運(yùn)集團(tuán)公司站,分析該公交線路可知該居民有兩種一次換乘的乘車方案:其一是該居民在灣橋站乘坐2線公車到農(nóng)墾醫(yī)院站,然后再換乘1線公交車直到海運(yùn)集團(tuán)公司站;其二是該居民在灣橋站乘坐2線公車直到霞湖醫(yī)院站,再換乘1線公交車到海運(yùn)集團(tuán)公司站;同理,仿照一次換乘的方法可得到其他多次換乘的乘車方案,用戶可以自行分析。</p><p>  1.3 開發(fā)環(huán)境和工具</p><p>  開發(fā)語言:

10、C++程序設(shè)計(jì)語言</p><p>  開發(fā)軟件:Visual C++ 6.0</p><p><b>  二、功能和結(jié)構(gòu)設(shè)計(jì)</b></p><p><b>  1)輸入出發(fā)點(diǎn):</b></p><p><b>  2)輸入終點(diǎn):</b></p><p&g

11、t;<b>  3)查詢結(jié)果:</b></p><p>  三、流程圖和算法設(shè)計(jì)</p><p>  用戶通過輸入起始站點(diǎn)和終點(diǎn)站來獲取公交線路信息,流程圖如下:</p><p><b>  算法:</b></p><p> ?。?)首先建立3個(gè)一位數(shù)組保存各個(gè)站點(diǎn)信息。具體算法如下:</p&

12、gt;<p>  Busline::Busline(string p[],int n) //構(gòu)造函數(shù),初始化公交線路站點(diǎn)信息</p><p><b>  { </b></p><p>  if(n>pathlen) throw"上溢"; </p><p>  for(int i=0;i<pathl

13、en;i++) </p><p><b>  { </b></p><p>  bus[i]=p[i]; </p><p><b>  } </b></p><p><b>  } </b></p><p>  string path1[path

14、len]={"農(nóng)墾醫(yī)院站","潛水運(yùn)動(dòng)學(xué)校站","海濱賓館站","海上城市站","市旅游總公司站","霞湖醫(yī)院站","海運(yùn)集團(tuán)公司站"}; </p><p>  string path2[pathlen]={"東華站","灣橋站",&q

15、uot;農(nóng)墾醫(yī)院站","啤酒廠站","俱樂部站","廣醫(yī)附院站","國(guó)貿(mào)站","廣州灣站","建新東路站","霞湖醫(yī)院站","霞山汽車運(yùn)輸總站"}; </p><p>  string path3[pathlen]={"海濱醫(yī)院站&qu

16、ot;,"海濱賓館站","兒童公園站","廣州灣站","建設(shè)路站","湛江汽車南站","人民大道中巴專線","世紀(jì)廣場(chǎng)站"};</p><p>  Busline a(path1,7); </p><p>  Busline b(path2,11);

17、</p><p>  Busline c(path3,8);</p><p> ?。?)判斷乘客是否需要換乘,即起點(diǎn)和終點(diǎn)是否位于同一條公交線上:</p><p>  1)如果可以直達(dá),起點(diǎn)和終點(diǎn)位于同一條公交線上,算法如下:</p><p>  void Busline::through(int i,string sp,string fp,

18、string p[],int l) //l為公交專線,i是站點(diǎn)下標(biāo),sp是出發(fā)點(diǎn),fp是終點(diǎn)</p><p><b>  {</b></p><p>  qd=i; int count1=0,count2=0,sum1=0;//count1,count2用于記錄經(jīng)過的站點(diǎn)數(shù)</p><p>  for(int j=0;j<pathle

19、n;j++) </p><p>  if(fp==p[j]) </p><p><b>  {</b></p><p>  cout<<"可以直達(dá),乘坐"<<l<<"號(hào)車!"<<endl; </p><p>  if(i<

20、;j) //起點(diǎn)下標(biāo)小于終點(diǎn)下標(biāo) </p><p><b>  { </b></p><p>  cout<<"該路線為:"<<endl; </p><p>  for(int k=i;k<=j-1;k++) </p><p><

21、b>  { </b></p><p>  cout<<p[k]<<"-->"; </p><p><b>  count1++;</b></p><p><b>  }</b></p><p>  cout<<p[j]

22、;</p><p><b>  } </b></p><p>  else //起點(diǎn)下標(biāo)大于終點(diǎn)下標(biāo)</p><p><b>  {</b></p><p>  cout<<"該路線為:"<<endl; </p><p>  

23、for(int k=i;k>=j+1;k--) </p><p><b>  {</b></p><p>  cout<<p[k]<<"-->"; </p><p><b>  count2++;</b></p><p><b>

24、;  } </b></p><p>  cout<<p[j];</p><p><b>  }</b></p><p><b>  } </b></p><p>  sum1=count1+count2+1;//統(tǒng)計(jì)經(jīng)過的站點(diǎn)個(gè)數(shù)</p><p>  

25、cout<<endl;</p><p>  cout<<"共經(jīng)過站點(diǎn)數(shù)為:";</p><p>  cout<<sum1<<endl;</p><p><b>  } </b></p><p>  2)如果需要換乘,起點(diǎn)和終點(diǎn)位于不同一條公交線上,若有多

26、種換乘方案,則選取經(jīng)過站點(diǎn)數(shù)最少的方案,即最優(yōu)路線作為輸出,算法如下:</p><p>  void Busline::transfer(int i,int j,string sp,string fp,string p1[],string p2[]) </p><p><b>  { </b></p><p>  qd=i; zd=j;

27、int count1=0,count2=0,count3=0,count4=0;//i是起點(diǎn)下標(biāo),j是終點(diǎn)下標(biāo)</p><p>  int sum1=0,sum2=0;</p><p>  for(int k=0;k<pathlen;k++) </p><p>  for(int h=0;h<pathlen;h++) </p>

28、<p>  if(fp==p1[h]&&sp==p2[k]) </p><p><b>  { </b></p><p>  for(int x=0;x<4;x++) </p><p>  for(int l=0;l<pathlen;l++) </p><

29、;p>  for(int l1=0;l1<pathlen;l1++) </p><p><b>  { </b></p><p>  if(a[x]==p2[l]&&a[x]==p1[l1]) //a[x]為換乘前后路線的交點(diǎn)</p><p><b>  { </b></p>

30、<p>  if(i<=l) //起點(diǎn)下標(biāo)小于交點(diǎn)下標(biāo) </p><p>  { cout<<"該路線為:"<<endl; </p><p>  for(int y=i;y<l;y++) </p><p><b>  { </b>&

31、lt;/p><p>  cout<<p2[y]<<"-->"; //輸出換乘之前的站點(diǎn)</p><p>  count1++;//統(tǒng)計(jì)站點(diǎn)個(gè)數(shù)</p><p><b>  } </b></p><p>  if(j<=l1) //終點(diǎn)下標(biāo)小于交點(diǎn)下標(biāo)

32、</p><p><b>  { </b></p><p>  cout<<a[x]<<endl;</p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p>&l

33、t;p>  for(int z=l1;z>j;z--) </p><p><b>  { </b></p><p>  count2++;//統(tǒng)計(jì)站點(diǎn)個(gè)數(shù)</p><p>  cout<<p1[z]<<"-->"; //輸出換乘后的站點(diǎn) </p>&

34、lt;p><b>  } </b></p><p>  cout<<fp<<endl; //輸出終點(diǎn)</p><p><b>  } </b></p><p>  else if(j>l1) //終點(diǎn)下標(biāo)大于交點(diǎn)下標(biāo) </p><p><b>

35、;  { </b></p><p>  cout<<a[x]<<endl; </p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z<j;z++)

36、 </p><p><b>  { </b></p><p><b>  count2++;</b></p><p>  cout<<p1[z]<<"-->"; </p><p><b>  } </b>&l

37、t;/p><p>  cout<<fp<<endl; </p><p><b>  } </b></p><p>  sum1=count1+count2+1;//換乘前后總共經(jīng)過的站點(diǎn)數(shù)</p><p>  cout<<"共經(jīng)過站點(diǎn)數(shù)為:";</p>&

38、lt;p>  cout<<sum1<<endl;</p><p>  cout<<"------------------------------------"<<endl;</p><p><b>  } </b></p><p>  else if(i>

39、l) //起點(diǎn)下標(biāo)大于交點(diǎn)下標(biāo) </p><p><b>  { </b></p><p>  cout<<"該路線為:"<<endl;</p><p>  for(int y=i;y>l;y--) </p><p><b>  { &l

40、t;/b></p><p><b>  count3++;</b></p><p>  cout<<p2[y]<<"-->"; </p><p><b>  } </b></p><p>  if(j<=l1) //終

41、點(diǎn)下標(biāo)小于交點(diǎn)下標(biāo) </p><p>  { cout<<a[x]<<endl;</p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z>j;z--) &l

42、t;/p><p><b>  { </b></p><p><b>  count4++;</b></p><p>  cout<<p1[z]<<"-->"; </p><p><b>  } </b></p&

43、gt;<p>  cout<<fp<<endl;</p><p><b>  } </b></p><p>  else if(j>l1) //終點(diǎn)下標(biāo)大于交點(diǎn)下標(biāo)</p><p><b>  { </b></p><p>  cout<<

44、;a[x]<<endl;</p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z<j;z++) </p><p><b>  { </b&g

45、t;</p><p><b>  count4++;</b></p><p>  cout<<p1[z]<<"-->"; </p><p><b>  } </b></p><p>  cout<<fp<<endl; <

46、/p><p><b>  } </b></p><p>  sum2=count3+count4+1;</p><p>  cout<<"共經(jīng)過站點(diǎn)數(shù)為:";</p><p>  cout<<sum2<<endl;</p><p>  cout

47、<<"------------------------------------"<<endl;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p&

48、gt;<b>  }</b></p><p>  if(sum1!=0&&sum2!=0)</p><p><b>  {</b></p><p>  if(sum1<=sum2)</p><p>  cout<<"同一轉(zhuǎn)乘方式下,最優(yōu)路線為:共經(jīng)過站點(diǎn)數(shù)

49、為"<<sum1<<"的路線!"<<endl;</p><p><b>  else</b></p><p>  cout<<"同一轉(zhuǎn)乘方式下,最優(yōu)路線為:共經(jīng)過站點(diǎn)數(shù)為"<<sum2<<"的路線!"<<endl;}

50、</p><p><b>  } </b></p><p><b>  四、源程序代碼</b></p><p>  #include<iostream> </p><p>  #include<string> </p><p>  using nam

51、espace std; </p><p>  const int pathlen=11; </p><p>  int qd,zd;//起點(diǎn),終點(diǎn)的下標(biāo) </p><p>  string a[4]={"農(nóng)墾醫(yī)院站","廣州灣站","霞湖醫(yī)院站","海濱賓館站"}; //轉(zhuǎn)乘站點(diǎn)<

52、;/p><p>  //int const count1=0,count2=0,count3=0,count4=0;</p><p>  //int const sum1=0,sum2=0; </p><p>  class Busline</p><p><b>  {</b></p><p>

53、<b>  public:</b></p><p>  Busline(string p[],int n); </p><p>  void through(int i,string sp,string fp,string p[],int l); </p><p>  void transfer(int i,int j,string sp,st

54、ring fp,string p1[],string p2[]); </p><p>  void map(); </p><p><b>  private: </b></p><p>  string bus[pathlen]; </p><p><b>  }; </b></p>

55、<p>  Busline::Busline(string p[],int n) //構(gòu)造函數(shù),初始化公交線路站點(diǎn)信息</p><p><b>  { </b></p><p>  if(n>pathlen) throw"上溢"; </p><p>  for(int i=0;i<pathlen;i

56、++) </p><p><b>  { </b></p><p>  bus[i]=p[i]; </p><p><b>  } </b></p><p><b>  } </b></p><p>  void Busline::through

57、(int i,string sp,string fp,string p[],int l) //l為公交專線,i是站點(diǎn)下標(biāo),sp是出發(fā)點(diǎn),fp是終點(diǎn)</p><p><b>  {</b></p><p>  qd=i; int count1=0,count2=0,sum1=0;</p><p>  for(int j=0;j<path

58、len;j++) </p><p>  if(fp==p[j]) </p><p><b>  {</b></p><p>  cout<<"可以直達(dá),乘坐"<<l<<"號(hào)車!"<<endl; </p><p>  if(i&

59、lt;j) </p><p><b>  { </b></p><p>  cout<<"該路線為:"<<endl; </p><p>  for(int k=i;k<=j-1;k++) </p><p><b>  { &

60、lt;/b></p><p>  cout<<p[k]<<"-->"; </p><p><b>  count1++;</b></p><p><b>  }</b></p><p>  cout<<p[j];</p>

61、;<p><b>  } </b></p><p><b>  else </b></p><p><b>  {</b></p><p>  cout<<"該路線為:"<<endl; </p><p>  for

62、(int k=i;k>=j+1;k--) </p><p><b>  {</b></p><p>  cout<<p[k]<<"-->"; </p><p><b>  count2++;</b></p><p><b>  

63、} </b></p><p>  cout<<p[j];</p><p><b>  }</b></p><p><b>  } </b></p><p>  sum1=count1+count2+1;</p><p>  cout<<en

64、dl;</p><p>  cout<<"共經(jīng)過站點(diǎn)數(shù)為:";</p><p>  cout<<sum1<<endl;</p><p><b>  } </b></p><p>  void Busline::transfer(int i,int j,string

65、sp,string fp,string p1[],string p2[]) </p><p><b>  { </b></p><p>  qd=i; zd=j; int count1=0,count2=0,count3=0,count4=0;</p><p>  int sum1=0,sum2=0;</p><p

66、>  for(int k=0;k<pathlen;k++) </p><p>  for(int h=0;h<pathlen;h++) </p><p>  if(fp==p1[h]&&sp==p2[k]) </p><p><b>  { </b></p><p>  

67、for(int x=0;x<4;x++) </p><p>  for(int l=0;l<pathlen;l++) </p><p>  for(int l1=0;l1<pathlen;l1++) </p><p><b>  { </b></p><p>  if(a[x]

68、==p2[l]&&a[x]==p1[l1]) </p><p><b>  { </b></p><p>  if(i<=l) </p><p>  { cout<<"該路線為:"<<endl; </p><p>  fo

69、r(int y=i;y<l;y++) </p><p><b>  { </b></p><p>  cout<<p2[y]<<"-->"; </p><p><b>  count1++;</b></p><p><

70、;b>  } </b></p><p>  if(j<=l1) </p><p><b>  { </b></p><p>  cout<<a[x]<<endl;</p><p>  cout<<"然后在"&

71、lt;<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z>j;z--) </p><p><b>  { </b></p><p><b>  count2++;</b></p><p

72、>  cout<<p1[z]<<"-->"; </p><p><b>  } </b></p><p>  cout<<fp<<endl;</p><p><b>  } </b></p><p>  el

73、se if(j>l1) </p><p><b>  { </b></p><p>  cout<<a[x]<<endl; </p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl

74、; </p><p>  for(int z=l1;z<j;z++) </p><p><b>  { </b></p><p><b>  count2++;</b></p><p>  cout<<p1[z]<<"-->";

75、 </p><p><b>  } </b></p><p>  cout<<fp<<endl; </p><p><b>  } </b></p><p>  sum1=count1+count2+1;</p><p>  cout<&l

76、t;"共經(jīng)過站點(diǎn)數(shù)為:";</p><p>  cout<<sum1<<endl;</p><p>  cout<<"------------------------------------"<<endl;</p><p><b>  } </b>

77、</p><p>  else if(i>l) </p><p><b>  { </b></p><p>  cout<<"該路線為:"<<endl;</p><p>  for(int y=i;y>l;y--) </p><

78、;p><b>  { </b></p><p><b>  count3++;</b></p><p>  cout<<p2[y]<<"-->"; </p><p><b>  } </b></p><p>

79、;  if(j<=l1) </p><p>  { cout<<a[x]<<endl;</p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z>

80、;j;z--) </p><p><b>  { </b></p><p><b>  count4++;</b></p><p>  cout<<p1[z]<<"-->"; </p><p><b>  } </

81、b></p><p>  cout<<fp<<endl;</p><p><b>  } </b></p><p>  else if(j>l1) </p><p><b>  { </b></p><p>  cout<<

82、;a[x]<<endl;</p><p>  cout<<"然后在"<<a[x]<<"轉(zhuǎn)乘"<<endl; </p><p>  for(int z=l1;z<j;z++) </p><p><b>  { </b&g

83、t;</p><p><b>  count4++;</b></p><p>  cout<<p1[z]<<"-->"; </p><p><b>  } </b></p><p>  cout<<fp<<endl; <

84、/p><p><b>  } </b></p><p>  sum2=count3+count4+1;</p><p>  cout<<"共經(jīng)過站點(diǎn)數(shù)為:";</p><p>  cout<<sum2<<endl;</p><p>  cout

85、<<"------------------------------------"<<endl;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p&

86、gt;<b>  }</b></p><p>  if(sum1!=0&&sum2!=0)</p><p>  {if(sum1<=sum2)</p><p>  cout<<"同一轉(zhuǎn)乘方式下,最優(yōu)路線為:共經(jīng)過站點(diǎn)數(shù)為"<<sum1<<"的路線!"

87、;<<endl;</p><p><b>  else</b></p><p>  cout<<"同一轉(zhuǎn)乘方式下,最優(yōu)路線為:共經(jīng)過站點(diǎn)數(shù)為"<<sum2<<"的路線!"<<endl;}</p><p><b>  } </b&

88、gt;</p><p>  void Busline::map() { </p><p>  cout<<" 湛江公交路線圖 "<<endl; </p><p>  cout<<"

89、 2線| "<<endl; </p><p>  cout<<" | "<<endl; &

90、lt;/p><p>  cout<<" 東華站○ "<<endl; </p><p>  cout<<" | |

91、 "<<endl; </p><p>  cout<<" 灣橋站○ 潛水運(yùn)動(dòng) ○海濱醫(yī)院站 "<<endl; </p><p>  cout<<" | 學(xué)校站

92、 | 海上城市站 "<<endl; </p><p>  cout<<" ̄農(nóng)墾醫(yī)院站● ̄ ̄○ ̄ ̄ ̄●海濱賓館站 ̄ ̄ ̄○ ̄ ̄ ̄| "<<endl; </p><p>  cout<<"

93、 | | | "<<endl; </p><p>  cout<<" 啤酒廠站○ ○兒童公園站 ○市旅游總公司站 "<<endl; </p><p> 

94、 cout<<" | | | "<<endl; </p><p>  cout<<" 俱樂部站○ | | "

95、;<<endl; </p><p>  cout<<" | 廣州|灣站 霞湖|醫(yī)院站 "<<endl; </p><p>  cout<<"  ̄○ ̄○ ̄ ̄ ● ̄ ̄ ̄ ̄ ̄○ ̄ ̄ ̄ ̄ ̄ ̄● ̄ ̄○ ̄ ̄

96、 "<<endl; </p><p>  cout<<" 廣醫(yī)附院站 國(guó)貿(mào)站 | 建新東路站 | 霞山汽車運(yùn)輸總站 "<<endl; </p><p>  cout<<" |

97、 | "<<endl; </p><p>  cout<<" 3線 | | "<<endl; </p><p>  cout<<&quo

98、t;  ̄ ̄○ ̄ ̄○ ̄ ̄ ̄○ ̄○建設(shè)路站 ○海運(yùn)集團(tuán)公司站 "<<endl; </p><p>  cout<<"世紀(jì)廣場(chǎng)站 人民大道 湛江汽車南站 | "<<endl; </p><p>  cout<

99、<" 中巴專線 |1線 "<<endl; </p><p>  cout<<" (●為換乘站點(diǎn),○為普通站點(diǎn)) "<<endl; &l

100、t;/p><p>  cout<<endl; } </p><p>  void main() </p><p><b>  { </b></p><p>  string path1[pathlen]={"農(nóng)墾醫(yī)院站","潛水運(yùn)動(dòng)學(xué)校站","海濱賓館站&qu

101、ot;,"海上城市站","市旅游總公司站","霞湖醫(yī)院站","海運(yùn)集團(tuán)公司站"}; </p><p>  string path2[pathlen]={"東華站","灣橋站","農(nóng)墾醫(yī)院站","啤酒廠站","俱樂部站","廣醫(yī)

102、附院站","國(guó)貿(mào)站","廣州灣站","建新東路站","霞湖醫(yī)院站","霞山汽車運(yùn)輸總站"}; </p><p>  string path3[pathlen]={"海濱醫(yī)院站","海濱賓館站","兒童公園站","廣州灣站",&

103、quot;建設(shè)路站","湛江汽車南站","人民大道中巴專線","世紀(jì)廣場(chǎng)站"}; </p><p>  Busline a(path1,7); </p><p>  Busline b(path2,11); </p><p>  Busline c(path3,8); </p>&l

104、t;p>  a.map(); </p><p>  string sp,fp; </p><p><b>  begin:</b></p><p>  cout<<"請(qǐng)輸入出發(fā)點(diǎn):"<<endl; </p><p><b>  cin>>sp;

105、</b></p><p><b>  begin1:</b></p><p>  cout<<"請(qǐng)輸入終點(diǎn):"<<endl; </p><p>  cin>>fp; </p><p>  int j1=1,jj=1; </p><

106、;p>  for(int d=0;d<7;d++) </p><p><b>  { </b></p><p>  if(sp==path1[d]) </p><p><b>  j1=2; </b></p><p>  if(fp==path1[d]) </p>

107、<p><b>  jj=2; </b></p><p><b>  } </b></p><p>  for( d=0;d<11;d++) </p><p><b>  { </b></p><p>  if(sp==path2[d]) </

108、p><p><b>  j1=2; </b></p><p>  if(fp==path2[d]) </p><p><b>  jj=2; </b></p><p><b>  } </b></p><p>  for( d=0;d<8;d

109、++) </p><p><b>  { </b></p><p>  if(sp==path3[d]) </p><p><b>  j1=2; </b></p><p>  if(fp==path3[d]) </p><p><b>  jj=2;

110、</b></p><p><b>  } </b></p><p>  if(j1==1) </p><p><b>  { </b></p><p>  cout<<"輸入的出發(fā)點(diǎn)有錯(cuò),請(qǐng)重新輸入:"<<endl; </p

111、><p>  goto begin;</p><p><b>  } </b></p><p>  if(jj==1) </p><p><b>  { </b></p><p>  cout<<"輸入的終點(diǎn)點(diǎn)有錯(cuò),請(qǐng)重新輸入:"<

112、<endl; </p><p>  goto begin1; </p><p><b>  } </b></p><p><b>  else </b></p><p>  {cout<<"--------------查詢結(jié)果--------------"&l

113、t;<endl;</p><p>  for(int i=0;i<pathlen;i++) </p><p><b>  { </b></p><p>  for(int k1=0;k1<pathlen;k1++) </p><p>  if(fp==path1[k1]) <

114、;/p><p><b>  { </b></p><p>  if(sp==path1[i]) </p><p><b>  { </b></p><p>  a.through(i,sp,fp,path1,1);</p><p>  cout

115、<<endl;break;</p><p><b>  } </b></p><p>  else if(sp!=path1[i]) </p><p>  { </p><p>  if(sp==path2[i]) </p><p><b

116、>  {</b></p><p>  cout<<"需要換乘,轉(zhuǎn)乘方式為:2路轉(zhuǎn)1路線"<<endl; </p><p>  a.transfer(i,k1,sp,fp,path1,path2); </p><p>  cout<<endl; </p><

117、p><b>  } </b></p><p>  if(sp==path3[i]) </p><p><b>  { </b></p><p>  cout<<"需要換乘,轉(zhuǎn)乘方式:3路轉(zhuǎn)1路線"<<endl; </p><

118、;p>  a.transfer(i,k1,sp,fp,path1,path3); </p><p>  cout<<endl;</p><p><b>  } </b></p><p><b>  //break;</b></p><p><b>  } </b&

119、gt;</p><p><b>  } </b></p><p>  else if(fp==path2[k1]) </p><p>  { </p><p>  if(sp==path2[i]) </p><p><b>  { </b>

120、;</p><p>  b.through(i,sp,fp,path2,2);</p><p>  cout<<endl;break;</p><p><b>  } </b></p><p>  else if(sp!=path2[i]) </p><p><b>

121、  { </b></p><p>  if(sp==path1[i])</p><p><b>  {</b></p><p>  cout<<"需要換乘,轉(zhuǎn)乘方式:1路轉(zhuǎn)2路線"<<endl; </p><p>  b.transfer(

122、i,k1,sp,fp,path2,path1);</p><p>  cout<<endl;</p><p><b>  }</b></p><p>  else if(sp==path3[i]) </p><p><b>  { </b></p>&l

123、t;p>  cout<<"需要換乘,轉(zhuǎn)乘方式:3路轉(zhuǎn)2路線"<<endl; </p><p>  b.transfer(i,k1,sp,fp,path2,path3); </p><p>  cout<<endl; </p><p><b>  } </b><

124、;/p><p><b>  // break;</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  else if(fp==path3[k1]) </p><p>  { &

125、lt;/p><p>  if(sp==path3[i]) </p><p>  { </p><p>  c.through(i,sp,fp,path3,3); cout<<endl;break;</p><p><b>  } </b></p><p>  el

126、se if(sp!=path3[i]) </p><p><b>  { </b></p><p>  if(sp==path1[i]) </p><p><b>  { </b></p><p>  cout<<"需要換乘,轉(zhuǎn)乘方式:1路轉(zhuǎn)3路線&q

127、uot;<<endl; </p><p>  c.transfer(i,k1,sp,fp,path3,path1); </p><p>  cout<<endl;</p><p><b>  } </b></p><p>  else if(sp==path2[i]) &l

128、t;/p><p><b>  { </b></p><p>  cout<<"需要換乘,轉(zhuǎn)乘方式:2路轉(zhuǎn)3路線"<<endl; </p><p>  c.transfer(i,k1,sp,fp,path3,path2);</p><p>  cout<

129、<endl;</p><p><b>  } </b></p><p><b>  //break;</b></p><p><b>  } ;</b></p><p><b>  }</b></p><p><b&

130、gt;  }</b></p><p><b>  } </b></p><p>  cout<<"\n"<<"是否繼續(xù)?繼續(xù)請(qǐng)輸入y或者Y!"<<endl; </p><p><b>  char t; </b></p>

131、<p><b>  cin>>t; </b></p><p>  if(t=='y'||t=='Y')</p><p><b>  {a.map();</b></p><p>  goto begin;}</p><p><b> 

132、 else</b></p><p>  exit(1); }</p><p><b>  五、課程設(shè)計(jì)總結(jié)</b></p><p><b>  5.1 優(yōu)點(diǎn)</b></p><p>  1)路線清晰,簡(jiǎn)單明了;</p><p>  2)查詢出最短路徑,實(shí)用性高等。

133、</p><p><b>  5.2 缺點(diǎn):</b></p><p>  1)本系統(tǒng)為用戶查找出最短到達(dá)目的地的路徑,具有實(shí)用性;</p><p>  2)本系統(tǒng)中僅提供了一次換乘功能,有局限性;</p><p>  3)沒有設(shè)置用戶權(quán)限設(shè)置,安全性不高;</p><p>  4)只有查詢功能,沒

134、有提供路線更新功能等。</p><p><b>  5.3 自我總結(jié)</b></p><p>  通過這次課程設(shè)計(jì),使我學(xué)到了一些以前沒有掌握和一知半解的知識(shí),使我對(duì)數(shù)據(jù)結(jié)構(gòu)算法和C++程序設(shè)計(jì)有了更深層次的認(rèn)識(shí)和理解,只有在通過親身實(shí)踐操作,才能真切的發(fā)現(xiàn)自己的問題,有哪些不懂的,有哪些掌握不太好的,又有哪些之前的理解是錯(cuò)誤或片面的。同時(shí),又有哪些在此過程中做起來是

135、得心應(yīng)手的,在獲得知識(shí)的同時(shí)也獲得一點(diǎn)成就感喜悅感。編程道路上,會(huì)有大大小小的困難,只要不放棄,專心研讀,多方請(qǐng)教交流,終會(huì)克服的。我也清醒認(rèn)識(shí)到,只有自己肯努力,愿意花時(shí)間精力去學(xué)習(xí),就能夠得到我們自己所期望的東西。 最后,在此由衷的感謝那些幫助我的同學(xué),感謝他們的悉心指導(dǎo)和慷慨指教,使我受益良多和我的課程設(shè)計(jì)有了較完善的一面,另外,在交流學(xué)習(xí)中,我們也增進(jìn)了友誼之情,更是可貴。在課程設(shè)計(jì)過程中,收獲知識(shí),提高能力的同時(shí),我也學(xué)到

136、了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學(xué)習(xí)的過程中,我一定會(huì)把課程設(shè)計(jì)的精神帶到生活中,不畏艱難,勇往直前! </p><p><b>  六、參考資料</b></p><p>  《C++程序設(shè)計(jì)教程與實(shí)驗(yàn)》 清華大學(xué)出版社 </p><p>  《數(shù)

溫馨提示

  • 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. 眾賞文庫(kù)僅提供信息存儲(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)論