2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  C++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告</p><p>  課程設(shè)計(jì): 校園導(dǎo)游系統(tǒng) </p><p>  系 別: 計(jì)算機(jī)系 年 級(jí): 10級(jí) </p><p>  專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p&g

2、t;  班 級(jí): 1班 學(xué) 號(hào): </p><p>  姓  名: </p><p>  成 績(jī): </p><p>  任課教師:

3、 </p><p>  2012 年 8 月 20 日</p><p><b>  目錄</b></p><p>  1.需求分析…………………………………… ……………3</p><p>  2.概要設(shè)計(jì).............................……………………

4、…………3</p><p>  3.詳細(xì)設(shè)計(jì)………………………………………………….3</p><p>  4.使用說(shuō)明………………………………………………….3</p><p>  5.測(cè)試結(jié)果……………………………………………….…4</p><p>  6.附錄………………………………………………………5</p><

5、p>  7.參考文獻(xiàn)…………………………………………………14</p><p><b>  需求分析</b></p><p>  設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來(lái)訪(fǎng)的客人提供各種信息查詢(xún)服務(wù)。</p><p><b>  概要設(shè)計(jì)</b></p><p>  (1) 設(shè)計(jì)你所在學(xué)校的校園平面圖,所含

6、景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱(chēng)、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。</p><p>  (2)為來(lái)訪(fǎng)客人提供圖中任意景點(diǎn)相關(guān)信息的查詢(xún)。</p><p>  (3)為來(lái)訪(fǎng)客人提供圖中任意景點(diǎn)的問(wèn)路查詢(xún),即查詢(xún)?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短的簡(jiǎn)單路徑。</p><p><b>  詳細(xì)設(shè)計(jì)</b><

7、;/p><p>  以輸出流顯示校園的界面</p><p>  以圖的形式存儲(chǔ)校園景點(diǎn)</p><p>  以循環(huán)算法運(yùn)行操作界面</p><p>  以函數(shù)調(diào)用實(shí)現(xiàn)導(dǎo)游功能</p><p><b>  使用說(shuō)明</b></p><p>  運(yùn)行時(shí)顯示校園景觀圖,同時(shí)顯示選擇菜

8、單</p><p>  選擇菜單:1.地點(diǎn)介紹 2.最短路徑 3.結(jié)束 “請(qǐng)選擇功能”</p><p>  地點(diǎn)介紹:出現(xiàn)景點(diǎn)選擇:A.操場(chǎng) B.偏門(mén) C.圖書(shū)館 D.大門(mén) E.食堂 F.誠(chéng)智樓 G.博學(xué)樓 H.創(chuàng)新樓 I.海天樓 J.明德樓 請(qǐng)選擇地點(diǎn)(選擇加回車(chē)即能查詢(xún)景點(diǎn)信息)</p><p>  最短路徑:出現(xiàn)“輸入起點(diǎn)位置”,輸入后即出現(xiàn)

9、“輸入終點(diǎn)位置”(輸入加回車(chē)即顯示兩景點(diǎn)的最短路徑)</p><p><b>  測(cè)試結(jié)果</b></p><p><b>  運(yùn)行界面</b></p><p><b>  地點(diǎn)介紹</b></p><p><b>  最短路徑</b></p>

10、<p><b>  附錄</b></p><p>  校園景觀圖實(shí)現(xiàn)函數(shù):</p><p>  void viewshow()</p><p><b>  {</b></p><p>  cout<<" 東方學(xué)院實(shí)景圖

11、"<<endl;</p><p>  cout<<""<<endl;</p><p>  cout<<" A操場(chǎng)-----B偏門(mén)"<<endl;</p><p>  cout<<"

12、 / \\"<<endl;</p><p>  cout<<" / \\"<<endl;</p><p>  cout<<" C圖書(shū)館------D大門(mén) E食堂----------\\"<<en

13、dl;</p><p>  cout<<" / \\ \\"<<endl;</p><p>  cout<<" / \\ F誠(chéng)智樓---G博學(xué)樓-H創(chuàng)新樓"<<endl;</p&

14、gt;<p>  cout<<" / \\/"<<endl;</p><p>  cout<<" I海天樓--------J明德樓"<<endl;</p><p>  cout<<""<&l

15、t;endl;</p><p><b>  }</b></p><p><b>  建立圖函數(shù):</b></p><p>  #include"SeqList.h"</p><p>  #include"SeqQueue.h"</p><p

16、>  const int MaxVertices=10;</p><p>  const int MaxWeight=10000;</p><p>  class AdjMWGraph</p><p><b>  {</b></p><p><b>  private:</b></p&g

17、t;<p>  SeqList Vertices;//頂點(diǎn)信息的線(xiàn)性表</p><p>  int Edge[MaxVertices][MaxVertices];</p><p>  int numOfEdges;</p><p><b>  public:</b></p><p>  AdjMWGraph

18、(const int sz=MaxVertices); </p><p>  int GraphEmpty( )const</p><p>  {return Vertices.ListEmpty( );}</p><p>  int NumOfVertices(void)</p><p>  {return Vertices.ListSiz

19、e( );}</p><p>  int NumOfEdges(void)</p><p>  {return numOfEdges;}</p><p>  VerT GetValue(const int i);</p><p>  int GetWeight(const int v1,const int v2);</p>&l

20、t;p>  void InsertVertex(const VerT &vertex);</p><p>  void InsertEdge(const int v1,const int v2,int weight);</p><p>  void DeleteVertex(const int i);</p><p>  void DeleteEdge

21、(const int v1,const int v2);</p><p>  int GetFirstNeighbor(const int v);</p><p>  int GetNextNeighbor(const int v1,const int v2);</p><p>  void DepthFirstSearch(const int v,int visi

22、ted[],void visit(VerT item)); </p><p>  void BroadFirstSearch(const int v,int visited[],void visit(VerT item)); </p><p>  void DepthFirstSearch(void visit(VerT item));</p><p>  void

23、 BroadFirstSearch(void visit(VerT item));</p><p><b>  }; </b></p><p>  AdjMWGraph::AdjMWGraph(const int sz)</p><p><b>  {</b></p><p>  for(int i

24、=0; i<sz; i++)</p><p>  for(int j=0; j<sz; j++)</p><p><b>  {</b></p><p>  if(i == j) Edge[i][j]=0;</p><p>  else Edge[i][j]=MaxWeight;</p><

25、;p><b>  }</b></p><p>  numOfEdges=0;</p><p><b>  }</b></p><p>  VerT AdjMWGraph::GetValue(const int i)</p><p><b>  {</b></p>

26、;<p>  if(i<0||i>Vertices.ListSize())</p><p><b>  {</b></p><p>  cerr<<"參數(shù)i越界出錯(cuò)!"<<endl;</p><p><b>  exit(1);</b></p>

27、;<p><b>  }</b></p><p>  return Vertices.GetData(i);</p><p><b>  }</b></p><p>  int AdjMWGraph::GetWeight(const int v1,const int v2)</p><p&

28、gt;<b>  {</b></p><p>  if(v1<0||v1>Vertices.ListSize()||v2<0||v2>Vertices.ListSize())</p><p><b>  {</b></p><p>  cerr<<"參數(shù)v1或v2越界出錯(cuò)!&q

29、uot;<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  return Edge[v1][v2];</p><p><b>  }</b></p><p>  v

30、oid AdjMWGraph::InsertVertex(const VerT &vertex)</p><p><b>  {</b></p><p>  Vertices.Insert(vertex,Vertices.ListSize());</p><p><b>  }</b></p><

31、;p>  void AdjMWGraph::InsertEdge(const int v1,const int v2,int weight)</p><p><b>  {</b></p><p>  if(v1<0||v1>Vertices.ListSize()||v2<0||v2> Vertices.ListSize())</p

32、><p><b>  {</b></p><p>  cerr<<"參數(shù)v1或v2越界出錯(cuò)!"<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p&

33、gt;  Edge[v1][v2]=weight;</p><p>  numOfEdges++;</p><p><b>  }</b></p><p>  void AdjMWGraph::DeleteVertex(const int v)</p><p><b>  {</b></p&g

34、t;<p>  for(int i=0;i<Vertices.ListSize();i++)</p><p>  for(int j=0;j<Vertices.ListSize();j++)</p><p>  if((i==v||j==v)&&Edge[i][j]>0 &&Edge[i][j]<MaxWeight)&l

35、t;/p><p><b>  {</b></p><p>  Edge[i][j]=MaxWeight;</p><p>  numOfEdges--;</p><p><b>  }</b></p><p>  Vertices.Delete(v);</p>&l

36、t;p><b>  }</b></p><p>  void AdjMWGraph::DeleteEdge(const int v1,const int v2)</p><p><b>  {</b></p><p>  if(v1<0||v1>Vertices.ListSize()||v2<0||

37、v2>Vertices.ListSize()||v1==v2)</p><p><b>  {</b></p><p>  cerr<<"參數(shù)v1或v2出錯(cuò)!"<<endl;</p><p><b>  exit(1);</b></p><p>&l

38、t;b>  }</b></p><p>  Edge[v1][v2]=MaxWeight;</p><p>  numOfEdges--;</p><p><b>  }</b></p><p>  int AdjMWGraph::GetFirstNeighbor(const int v)</p&

39、gt;<p><b>  {</b></p><p>  if(v<0||v>Vertices.ListSize( ))</p><p><b>  {</b></p><p>  cerr<<"參數(shù)v1越界出錯(cuò)!"<<endl;</p>

40、<p><b>  exit(1);</b></p><p><b>  }</b></p><p>  for(int col=0;col<=Vertices.ListSize();col++)</p><p>  if(Edge[v][col]>0&&Edge[v][col]<

41、;MaxWeight) return col;</p><p>  return -1;</p><p><b>  }</b></p><p>  int AdjMWGraph::GetNextNeighbor(const int v1,const int v2)</p><p><b>  {</b&

42、gt;</p><p>  if(v1<0||v1>Vertices.ListSize()||v2<0||v2>Vertices.ListSize())</p><p><b>  {</b></p><p>  cerr<<"參數(shù)v1或v2越界出錯(cuò)!"<<endl;</

43、p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  for(int col=v2+1; col<=Vertices.ListSize(); col++)</p><p>  if(Edge[v1][col]>0&&Ed

44、ge[v1][col]<MaxWeight)return col;</p><p>  return -1; </p><p><b>  }</b></p><p>  void AdjMWGraph::DepthFirstSearch(const int v,int visited[],void visit(VerT item))&l

45、t;/p><p><b>  {</b></p><p>  visit(GetValue(v));</p><p>  visited[v]=1;</p><p>  int w=GetFirstNeighbor(v);</p><p>  while(w!=-1)</p><p

46、><b>  {</b></p><p>  if(!visited[w])DepthFirstSearch(w,visited,visit);</p><p>  w=GetNextNeighbor(v,w);</p><p><b>  } </b></p><p><b>  

47、}</b></p><p>  void AdjMWGraph::BroadFirstSearch(const int v,int visited[],void visit(VerT item))</p><p><b>  {</b></p><p><b>  VerT u,w;</b></p>

48、<p>  SeqQueue queue;//定義隊(duì)列queue</p><p>  visit(GetValue(v));</p><p>  visited[v]=1;</p><p>  queue.QInsert(v);</p><p>  while(!queue.QueueEmpty())</p>&l

49、t;p><b>  {</b></p><p>  u=queue.QDelete();</p><p>  w=GetFirstNeighbor(u);</p><p>  while(w!=-1)</p><p><b>  {</b></p><p>  if(!

50、visited[w])</p><p><b>  {</b></p><p>  visit(GetValue(w));</p><p>  visited[w]=1;</p><p>  queue.QInsert(w);</p><p><b>  }</b></

51、p><p>  w=GetNextNeighbor(u,w);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void AdjMWGraph::DepthFirst

52、Search(void visit(VerT item))</p><p><b>  {</b></p><p>  int *visited=new int[NumOfVertices()];</p><p>  for(int i=0;i<NumOfVertices();i++)visited[i]=0;</p>&l

53、t;p>  for(i=0;i<NumOfVertices();i++)</p><p>  if(!visited[i])DepthFirstSearch(i,visited,visit);</p><p>  delete []visited;</p><p><b>  } </b></p><p> 

54、 //非連通圖的廣度優(yōu)先搜索遍歷算法如下</p><p>  void AdjMWGraph::BroadFirstSearch(void visit(VerT item))</p><p><b>  {</b></p><p>  int *visited=new int[NumOfVertices()];</p><p

55、>  for(int i=0;i<NumOfVertices();i++)visited[i]=0;</p><p>  for(i=0; i<NumOfVertices(); i++)</p><p>  if(!visited[i]) BroadFirstSearch(i,visited,visit);</p><p>  delete []v

56、isited;</p><p><b>  }</b></p><p>  struct RowColWeight</p><p><b>  {</b></p><p><b>  int row;</b></p><p><b>  int

57、 col;</b></p><p>  int weight;</p><p><b>  };</b></p><p>  void CreatGraph(AdjMWGraph &G,Datatype V[],int n,RowColWeight E[],int e)//建圖</p><p><

58、;b>  {</b></p><p>  for(int i=0; i<n;i++)G.InsertVertex(V[i]);</p><p>  for(int k=0; k<e;k++)G.InsertEdge(E[k].row,E[k].col,E[k].weight);</p><p><b>  }</b>

59、;</p><p>  void Printchar(char item)</p><p><b>  {</b></p><p>  cout << item<<" ";</p><p><b>  } </b></p><p>

60、  void Dijkstra(AdjMWGraph &G,int v0,int distance[],int path[])</p><p><b>  {</b></p><p>  int n=G.NumOfVertices();</p><p>  int *s=new int[n];</p><p> 

61、 int minDis,i,j,u;</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  distance[i]=G.GetWeight(v0,i);</p><p><b>  s[i]=0;</b></p><

62、;p>  if(i!=v0&&distance[i]<MaxWeight)path[i]=v0;</p><p>  else path[i]=-1;</p><p><b>  }</b></p><p><b>  s[v0]=1;</b></p><p>  for

63、(i=1;i<n;i++)</p><p><b>  {</b></p><p>  minDis=MaxWeight;</p><p>  for(j=0;j<=n;j++)</p><p>  if(s[j]==0&&distance[j]<minDis)</p>&

64、lt;p><b>  {</b></p><p><b>  u=j;</b></p><p>  minDis=distance[j];</p><p><b>  }</b></p><p>  if(minDis==MaxWeight)return;</p&g

65、t;<p><b>  s[u]=1;</b></p><p>  for(j=0;j<n;j++)</p><p>  if(s[j]==0&&G.GetWeight(u,j)<MaxWeight&&distance[u]+G.GetWeight(u,j)<distance[j])</p>

66、<p><b>  {</b></p><p>  distance[j]=distance[u]+G.GetWeight(u,j);</p><p>  path[j]=u;</p><p><b>  }</b></p><p><b>  }</b></

67、p><p><b>  }</b></p><p><b>  主函數(shù):</b></p><p>  typedef char VerT;</p><p>  typedef char Datatype;</p><p>  #include"AdjMWGraph.h&

68、quot;</p><p>  #include"View.h"</p><p>  int main()</p><p><b>  { </b></p><p>  int s,sss=1,j=1;</p><p>  char ch,qd,zd;</p>&

69、lt;p>  AdjMWGraph g;</p><p>  char a[]={'A','B','C','D','E','F','G','H','I','J'};</p><p>  RowColWeight rcw[]={

70、{0,1,20},{0,3,30},{0,4,30},{1,0,20},{2,3,20},{3,0,30},{3,2,20},{3,8,30},{3,9,20},{4,0,30},{4,6,20},{5,6,15},{5,9,15},{6,4,20},{6,5,15},{6,7,10},{7,6,10},{8,3,30},{8,9,15},{9,5,15},{9,8,15}}; </p><p>  int n=

71、10,e=24;</p><p>  CreatGraph(g,a,n,rcw,e);</p><p>  int m=g.NumOfVertices();</p><p>  int *distance=new int[m];</p><p>  int *path=new int[m];</p><p>  int

72、 v0=0,v1;</p><p>  Dijkstra(g,v0,distance,path);</p><p><b>  end:</b></p><p>  if (j==0){system("cls");}</p><p><b>  do{</b></p>

73、<p>  viewshow();</p><p>  cout<<"1.地點(diǎn)介紹 2.最短路徑 3.結(jié)束"<<endl<<"請(qǐng)選擇功能:";</p><p><b>  cin>>s;</b></p><p>  system("

74、cls");</p><p><b>  if(s==1)</b></p><p><b>  {</b></p><p><b>  do {</b></p><p>  viewshow();</p><p>  cout<<&

75、quot;A.操場(chǎng) B.偏門(mén) C.圖書(shū)館 D.大門(mén) E.食堂"<<endl</p><p>  <<"F.誠(chéng)智樓 G.博學(xué)樓 H.創(chuàng)新樓 I.海天樓 J.明德樓 "<<endl<<"請(qǐng)選擇地點(diǎn):";</p><p><b>  cin>>ch;</

76、b></p><p>  switch(ch)</p><p><b>  {</b></p><p><b>  case 'A':</b></p><p>  zhengdamenshow();</p><p>  cin.get();</p&

77、gt;<p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'B':</b></p><p><b>  mdshow();</b></p><p>  cin.get(

78、);</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'C':</b></p><p><b>  czshow();</b></p><p> 

79、 cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'D':</b></p><p><b>  bxshow();</b></p>&

80、lt;p>  cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'E':</b></p><p><b>  cxshow();</b><

81、/p><p>  cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'F':</b></p><p>  bahaoshow();</p>

82、<p>  cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'G':</b></p><p>  sitangshow();</p><p

83、>  cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'H':</b></p><p>  shihaoshow();</p><p>  

84、cin.get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case 'I':</b></p><p>  caochangshow();</p><p>  cin.

85、get();</p><p>  cin.get();</p><p>  system("cls");break; </p><p><b>  case 'J':</b></p><p>  tushuguanshow();</p><p>  cin.

86、get();</p><p>  cin.get();</p><p>  system("cls");break;</p><p><b>  case'K':</b></p><p><b>  j=0;</b></p><p><

87、;b>  goto end;</b></p><p><b>  default:</b></p><p>  cout<<"選擇有誤,請(qǐng)重新選擇!"<<endl;</p><p>  cin.get();</p><p>  cin.get();</p

88、><p>  system("cls");</p><p><b>  }</b></p><p>  } while(1);</p><p><b>  }</b></p><p><b>  if(s==2)</b></p>

89、;<p><b>  {</b></p><p><b>  do {</b></p><p>  viewshow();</p><p><b>  QIDIAN:</b></p><p>  cout<<"請(qǐng)輸入起點(diǎn)位置:";&

90、lt;/p><p><b>  cin>>qd;</b></p><p>  if (qd=='A')v0=0;</p><p>  else if(qd=='B')v0=1;</p><p>  else if(qd=='C')v0=2;</p>&

91、lt;p>  else if(qd=='D')v0=3;</p><p>  else if(qd=='E')v0=4;</p><p>  else if(qd=='F')v0=5;</p><p>  else if(qd=='G')v0=6;</p><p>  el

92、se if(qd=='H')v0=7;</p><p>  else if(qd=='I')v0=8;</p><p>  else if(qd=='J')v0=9;</p><p>  else {cout<<"起點(diǎn)輸入有誤,請(qǐng)重新輸入!"<<endl;cin.get();

93、cin.get();system("cls");goto QIDIAN;}</p><p>  cout<<"請(qǐng)輸入終點(diǎn)位置:";</p><p><b>  cin>>zd;</b></p><p>  if (zd=='A')v1=0;</p>&

94、lt;p>  else if(zd=='B')v1=1;</p><p>  else if(zd=='C')v1=2;</p><p>  else if(zd=='D')v1=3;</p><p>  else if(qd=='E')v1=4;</p><p>  el

95、se if(zd=='F')v1=5;</p><p>  else if(zd=='G')v1=6;</p><p>  else if(zd=='H')v1=7;</p><p>  else if(zd=='I')v1=8;</p><p>  else if(zd==&#

96、39;J')v1=9;</p><p>  else {cout<<"終點(diǎn)輸入有誤,請(qǐng)重新輸入!"<<endl;cin.get();cin.get();system("cls");goto QIDIAN;}</p><p>  cout<<"起點(diǎn)"<<g.GetValue(v

97、0)<<"到終點(diǎn)"<<g.GetValue(v1)<<"的最短距離為:"<<distance[v1]<<endl;</p><p>  cout<<"是否繼續(xù)查詢(xún):1.是 2.否;請(qǐng)選擇:";</p><p><b>  cin>>ss

98、s;</b></p><p>  system("cls");</p><p>  }while(sss==1);</p><p><b>  }</b></p><p>  if (s==3){cout<<"謝謝使用!"<<endl;retur

溫馨提示

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

評(píng)論

0/150

提交評(píng)論