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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  課程名稱: 數(shù)據(jù)結(jié)構(gòu)與算法 </p><p>  題目名稱: 航空客運(yùn)訂票系統(tǒng) </p><p>  2011 年 6 月 10 日</p><p><b>  目錄</b

2、></p><p><b>  一、設(shè)計目的2</b></p><p><b>  二、問題描述3</b></p><p><b>  三、需求分析3</b></p><p><b>  四、概要設(shè)計4</b></p><

3、p><b>  1、算法思路4</b></p><p><b>  2、工作分配4</b></p><p><b>  3、程序模塊4</b></p><p><b>  五、詳細(xì)設(shè)計8</b></p><p><b>  1.?dāng)?shù)據(jù)

4、定義8</b></p><p>  1.1 已定票客戶8</p><p>  1.2 未訂票客戶8</p><p>  1.3 航線定義9</p><p>  2. 函數(shù)設(shè)計10</p><p>  2.1 錄入航線信息10</p><p>  2.2查詢航線信息11&

5、lt;/p><p>  2.3訂票功能12</p><p>  2.4退票功能17</p><p><b>  2.5主函數(shù)22</b></p><p><b>  六、測試數(shù)據(jù)23</b></p><p><b>  七、總結(jié)24</b><

6、/p><p><b>  航空客運(yùn)訂票系統(tǒng)</b></p><p><b>  一、設(shè)計目的</b></p><p>  我們之所以選擇做航空訂票系統(tǒng)這個課題,主要是因為當(dāng)今時代的需求。隨著科技與經(jīng)濟(jì)的發(fā)展,越來越多的人選擇乘飛機(jī),這跟我國的經(jīng)濟(jì)增長有很大關(guān)系,人們在追求快節(jié)奏的生活方式,所以做飛機(jī)無疑成了首選。而且隨著網(wǎng)絡(luò)的

7、盛行,航空訂票系統(tǒng)就顯得尤為重要,我們開發(fā)這個系統(tǒng)主要是為了方便大家,讓大家能夠快速、清晰、準(zhǔn)確地了解航班信息,而不至于像以前那樣排隊等候,從而避免耽擱乘客大量的等待時間。</p><p><b>  二、問題描述</b></p><p>  航空客運(yùn)訂票的業(yè)務(wù)活動包括:查詢航線,預(yù)訂客票,辦理退票等。顧客只要在網(wǎng)上登陸了這個系統(tǒng)并輸入相應(yīng)的航班信息和飛行時間等信息,

8、就可以了解當(dāng)天的航班信息,方便乘客合理的安排自己的時間。顧客可以通過這個系統(tǒng)了解到當(dāng)天將到地點(diǎn)的詳細(xì)航班信息,包括:航班號、飛機(jī)號以及余票額等相關(guān)信息。</p><p><b>  三、需求分析</b></p><p>  (1)每條航線所涉及帶的信息有:終點(diǎn)站名、航班號、飛機(jī)號、飛行日期、余票量、已定票客戶名單(包括姓名、訂票量、倉位等級1,2,或3)以及等候替補(bǔ)的

9、客戶名單(包括姓名、所需票量);</p><p>  (2)作為示意系統(tǒng),全部數(shù)據(jù)可以存放在內(nèi)存中。</p><p> ?。?)系統(tǒng)能實現(xiàn)的操作功能如下:</p><p>  ① 查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號、飛機(jī)號、星期幾飛行、余票額;</p><p>  ② 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢

10、該航班的票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于訂票額,則需重新詢問客戶要求。若需要,可登記排隊候補(bǔ);</p><p>  ③ 承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(姓名、航班),為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他的需求,則為他辦理訂票手續(xù),否則,依次詢問其他排隊候補(bǔ)客戶。</p><p><

11、b>  四、概要設(shè)計</b></p><p><b>  1、算法思路</b></p><p>  數(shù)據(jù)用數(shù)組存儲以及結(jié)構(gòu)體等通過設(shè)置關(guān)鍵字并用一定的數(shù)據(jù)結(jié)構(gòu)對其進(jìn)行一定的數(shù)據(jù)排序。輸入航班信息,進(jìn)行存儲及按要求的查找。在這期間,我們需要書寫四個基本函數(shù):即錄入函數(shù)、查找函數(shù)、訂票函數(shù)及退票函數(shù)。用if條件語句實現(xiàn)條件的選擇,并對子函數(shù)進(jìn)行相關(guān)的調(diào)用

12、。按要求輸出用戶所需信息,實現(xiàn)簡單而便捷的快速查詢。</p><p><b>  2、工作分配</b></p><p><b>  3、程序模塊</b></p><p><b> ?。?)登陸界面</b></p><p><b>  圖3-1</b><

13、;/p><p><b> ?。?)程序的模塊為</b></p><p>  錄入功能:原始數(shù)據(jù)的輸入(通過文件輸入航線的基本信息)。</p><p>  查詢功能:根據(jù)客戶需要,查詢相關(guān)航線。</p><p>  訂票功能:滿足客戶的訂票任務(wù)。</p><p>  退票功能:根據(jù)客戶的不同情況,支持客

14、戶的退票請求。</p><p>  退出功能:退出系統(tǒng)。</p><p>  圖3-2 輸入1,通過文件進(jìn)行航線原始數(shù)據(jù)的輸入</p><p>  圖3-3輸入2,通過輸入終點(diǎn)站名查詢航線信息</p><p>  圖3-4輸入3,通過輸入終點(diǎn)站名,進(jìn)行訂票</p><p>  圖3-5輸入4,通過輸入退票客戶信息進(jìn)行退

15、票</p><p>  圖3-6 輸入5,退出訂票系統(tǒng)</p><p><b>  五、詳細(xì)設(shè)計</b></p><p><b>  1.?dāng)?shù)據(jù)定義</b></p><p><b>  1.1 已定票客戶</b></p><p>  struct yidi

16、ngpiaokehu</p><p><b>  {</b></p><p>  char name[M];//顧客名</p><p>  int ordernum;//訂票量</p><p>  int rank;//倉位等級</p><p>  struct yidingpiaokehu *n

17、ext;//</p><p><b>  };</b></p><p>  typedef struct yidingpiaokehu *linklist;</p><p><b>  1.2 未訂票客戶</b></p><p>  struct weidingpiaokehu </p>

18、<p><b>  {</b></p><p>  char name[M]; //姓名</p><p>  int ordernum; //所需票量</p><p>  struct weidingpiaokehu *next; //同一類型的指針</p><p><b>  };

19、</b></p><p>  typedef struct weidingpiaokehu *pointer; //為訂票客戶的結(jié)構(gòu)體</p><p>  struct node</p><p><b>  {</b></p><p>  pointer front; //指向未訂票客服的第一個客戶

20、</p><p>  pointer rear; //指向未訂票客戶的最后一個客戶</p><p><b>  };</b></p><p>  typedef struct node linkqueue; //指向未訂票客戶的指針結(jié)構(gòu)體</p><p><b>  1.3 航線定義</b&

21、gt;</p><p>  struct lnode</p><p><b>  {</b></p><p>  char zhongdianzhan[M];//終點(diǎn)站名</p><p>  char hangbanhao[M];//航班號</p><p>  char feijihao[5];

22、//飛機(jī)號</p><p>  int day;//飛行時間</p><p>  int capacity;//成員定額</p><p>  int leftticket;//余票量</p><p>  int seat[M];</p><p>  linklist yd;//已定票客戶的頭指針</p>

23、<p>  linkqueue wd;//為訂票客戶的頭指針和尾指針</p><p><b>  };</b></p><p>  typedef struct lnode hangxian;</p><p><b>  2. 函數(shù)設(shè)計</b></p><p>  2.1 錄入航線信息&l

24、t;/p><p>  void insertairline(hangxian l[],int n)</p><p><b>  {</b></p><p>  ifstream fin("航線3.txt");</p><p>  for(int i=1;i<=n;i++)</p>&l

25、t;p><b>  {</b></p><p>  fin>>l[i].zhongdianzhan;</p><p>  fin>>l[i].hangbanhao;</p><p>  fin>>l[i].feijihao;</p><p>  fin>>l[i].d

26、ay;</p><p>  fin>>l[i].capacity;</p><p>  fin>>l[i].leftticket;//初始化時余票量等于乘員定額</p><p>  l[i].yd=(linklist)malloc(sizeof(struct yidingpiaokehu));//為每條航線上的已定票客戶開辟存儲空間</

27、p><p>  l[i].yd->next=null;</p><p>  l[i].wd.front=l[i].wd.rear=(pointer)malloc(sizeof(struct weidingpiaokehu));//為每條航線上的未定票客戶開辟存儲空間</p><p>  l[i].wd.front->next=null;</p>

28、<p>  for(int j=1;j<=l[i].leftticket;j++)</p><p>  l[i].seat[j]=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.2查詢航線信息</

29、b></p><p>  void chaxungongneng(hangxian l[],int n)</p><p><b>  {</b></p><p>  char c[M];</p><p>  cout<<"請輸入終點(diǎn)站名:"<<endl;</p>

30、;<p><b>  cin>>c;</b></p><p><b>  int i=1;</b></p><p>  while(i<=n)</p><p><b>  {</b></p><p>  if(!strcmp(c,l[i].zho

31、ngdianzhan))</p><p><b>  {</b></p><p>  cout<<"輸出航線信息:"<<endl;</p><p>  cout<<"航班號:"<<l[i].hangbanhao<<" "&l

32、t;<"飛機(jī)號:"<<l[i].feijihao<<" "</p><p>  <<"飛行日期:"<<l[i].day<<" "<<"余票額:"<<l[i].leftticket<<endl;</p>

33、;<p><b>  break;</b></p><p><b>  }</b></p><p><b>  else i++;</b></p><p><b>  }</b></p><p>  if(i>=n+1)</p&g

34、t;<p>  cout<<"對不起沒有你要查詢的航線!";</p><p><b>  }</b></p><p><b>  2.3訂票功能</b></p><p>  void dingpiao(hangxian l[],int i,int num)</p>

35、<p><b>  {</b></p><p>  linklist p;</p><p>  p=(linklist)malloc(sizeof(struct yidingpiaokehu));</p><p>  cout<<"請輸入客戶姓名:";</p><p>  ci

36、n>>p->name;</p><p>  cout<<endl<<"請輸入倉位等級:";</p><p>  cin>>p->rank;</p><p>  p->ordernum=num;</p><p>  p->next=l[i].yd->

37、;next;</p><p>  l[i].yd->next=p;</p><p>  l[i].leftticket-=num;</p><p>  int x=num;</p><p>  cout<<endl<<"您所訂票的座位號是";</p><p>  whi

38、le(x!=0)</p><p><b>  {</b></p><p>  for(int j=1;j<=M;j++)</p><p><b>  {</b></p><p>  if(l[i].seat[j]==0)</p><p><b>  {<

39、/b></p><p>  l[i].seat[j]=1;</p><p>  cout<<j<<" ";</p><p><b>  }</b></p><p>  else continue;</p><p><b>  break;

40、</b></p><p><b>  }</b></p><p><b>  x--;</b></p><p><b>  }</b></p><p>  cout<<endl<<"訂票成功!";</p>&

41、lt;p>  cout<<endl;</p><p><b>  }</b></p><p>  void denghoudingpiao(hangxian l[],int i)</p><p><b>  {</b></p><p>  pointer p;</p>

42、<p>  p=(pointer)malloc(sizeof(struct weidingpiaokehu));</p><p>  cout<<endl<<"請輸入客戶姓名:";</p><p>  cin>>p->name;</p><p>  cout<<endl<&l

43、t;"請輸入預(yù)定票量:";</p><p>  cin>>p->ordernum;</p><p>  p->next=null;//---------------插入隊列</p><p>  l[i].wd.rear->next=p;</p><p>  l[i].wd.rear=p;<

44、;/p><p>  cout<<endl<<"等候訂票成功!"<<endl;</p><p><b>  }</b></p><p>  void dingpiaogongneng(hangxian l[],int n)</p><p><b>  {<

45、/b></p><p>  char c[M];</p><p><b>  int num;</b></p><p><b>  int m,p;</b></p><p><b>  do</b></p><p><b>  {<

46、/b></p><p>  cout<<endl<<"請輸入終點(diǎn)站:";</p><p><b>  cin>>c;</b></p><p><b>  int i=1;</b></p><p>  while(i<=n) <

47、/p><p><b>  {</b></p><p>  if(!strcmp(c,l[i].zhongdianzhan))</p><p><b>  {</b></p><p><b>  {</b></p><p>  cout<<endl

48、<<"輸出查詢航班信息:"<<endl;</p><p>  cout<<"終點(diǎn)站:"<<l[i].zhongdianzhan<<" "<<"航班號:"<<l[i].hangbanhao<<" "<<&qu

49、ot;飛機(jī)號:"<<l[i].feijihao<<" "</p><p>  <<"飛行日期:"<<l[i].day<<" "<<"余票額:"<<l[i].leftticket<<endl;</p><p&

50、gt;<b>  do</b></p><p><b>  {</b></p><p>  cout<<"請輸入訂票數(shù)額";</p><p><b>  cin>>num;</b></p><p>  cout<<endl

51、;</p><p>  if(num<=l[i].leftticket)</p><p><b>  {</b></p><p>  dingpiao(l,i,num);//---------------------------------------轉(zhuǎn)入訂票;</p><p><b>  return;

52、</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"對不起,余票額不足!"<<endl;</p&g

53、t;<p>  cout<<"是否還需訂票"<<endl;</p><p>  cout<<"是請按1,等候訂票請按2,退出請按0";</p><p><b>  cin>>p;</b></p><p><b>  }</b&g

54、t;</p><p>  }while(p==1);</p><p><b>  if(p==2)</b></p><p>  denghoudingpiao(l,i);//---------------------------------------------------插入等候隊列;</p><p>  else

55、break;</p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else i++;</b></p><p><b&g

56、t;  }</b></p><p>  if(i>=n+1)</p><p><b>  {</b></p><p>  cout<<"對不起,沒有您要查找的航班!"<<endl;</p><p>  cout<<"是否要查找其他航班信息

57、?"<<endl;</p><p>  cout<<"是請按1,否請按0"<<endl;</p><p><b>  cin>>m;</b></p><p><b>  }</b></p><p>  }while(m==

58、1);</p><p><b>  }</b></p><p><b>  2.4退票功能</b></p><p>  int tuipiao(hangxian l[],int i)</p><p><b>  {</b></p><p>  char

59、name[M];</p><p><b>  int c;</b></p><p>  cout<<endl<<"請輸入退票客戶姓名";</p><p>  cin>>name;</p><p>  cout<<endl<<"請輸入

60、退票客戶所定票的座位號:";</p><p><b>  cin>>c;</b></p><p>  linklist p,q;</p><p>  p=l[i].yd->next;</p><p>  while(p!=null)</p><p><b> 

61、 {</b></p><p><b>  q=p;</b></p><p>  if(!strcmp(name,p->name))</p><p><b>  {</b></p><p>  q->next=p->next;</p><p>  

62、p->next=null;</p><p><b>  free(p);</b></p><p>  l[i].seat[c]=0;</p><p>  l[i].leftticket++;</p><p>  cout<<endl<<"退票成功!";</p>

63、<p><b>  break;</b></p><p><b>  }</b></p><p>  else p=p->next;</p><p><b>  }</b></p><p>  if(p==null)</p><p>

64、<b>  {</b></p><p>  cout<<endl<<"不存在退票客戶!";</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  else return 1

65、;</p><p><b>  }</b></p><p>  void houbudingpiao(hangxian l[],int i)</p><p><b>  {</b></p><p>  pointer q;linklist p;</p><p>  q=l[i

66、].wd.front->next;</p><p>  p=(linklist)malloc(sizeof(struct yidingpiaokehu));</p><p>  if(q==null)</p><p>  cout<<endl<<"沒有排隊等候客戶!"<<endl;</p>

67、<p>  while(q!=null)</p><p><b>  {</b></p><p>  if(q->ordernum<=l[i].leftticket)</p><p><b>  {</b></p><p>  strcpy(p->name,q->

68、name);</p><p>  p->ordernum=q->ordernum;</p><p>  p->next=l[i].yd->next;</p><p>  l[i].yd->next=p;</p><p>  l[i].leftticket-=q->ordernum;</p>&

69、lt;p>  int x=q->ordernum;</p><p>  cout<<endl<<"候補(bǔ)客戶"<<q->name<<"訂票的座位號是";</p><p>  while(x!=0)</p><p><b>  {</b><

70、;/p><p>  for(int j=1;j<=M;j++)</p><p><b>  {</b></p><p>  if(l[i].seat[j]==0)</p><p><b>  {</b></p><p>  l[i].seat[j]=1;</p>

71、<p>  cout<<j<<" ";</p><p><b>  }</b></p><p>  else continue;</p><p><b>  break;</b></p><p><b>  }</b>&

72、lt;/p><p><b>  x--;</b></p><p><b>  }</b></p><p>  l[i].wd.front->next=q->next;</p><p>  free(q);//-------------------------釋放了q之后,如果不做q=l[i]

73、.wd.front->next,while循環(huán)就不能進(jìn)行下去,</p><p>  q=l[i].wd.front->next;</p><p><b>  }</b></p><p><b>  else</b></p><p>  q=q->next;</p>&

74、lt;p><b>  }</b></p><p><b>  }</b></p><p>  void tuipiaogongneng(hangxian l[],int n)</p><p><b>  {</b></p><p>  char c[M];</p&g

75、t;<p><b>  int day;</b></p><p>  cout<<endl<<"請輸入退票航班:";</p><p><b>  cin>>c;</b></p><p>  cout<<endl<<"請輸

76、入退票日期:";</p><p><b>  cin>>day;</b></p><p><b>  int i=1;</b></p><p>  while(strcmp(l[i].hangbanhao,c))</p><p><b>  i++;</b>

77、;</p><p>  if(i>n) cout<<"輸入航班號錯誤!";</p><p>  elseif(tuipiao(l,i))</p><p><b>  {</b></p><p>  cout<<endl<<"為排隊候補(bǔ)客戶辦理訂票&

78、quot;<<endl;</p><p>  houbudingpiao(l,i);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.5主函數(shù)</b></p><p>  vo

79、id main()</p><p><b>  {</b></p><p>  hangxian l[M];int m;</p><p>  cout<<"輸入航線條數(shù):";</p><p><b>  cin>>m;</b></p><

80、;p>  cout<<endl;</p><p><b>  int n;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  cout<<endl;</p><p>

81、;  cout<<"****************************"<<endl;</p><p>  cout<<"歡迎使用航空客運(yùn)訂票系統(tǒng):"<<endl;</p><p>  cout<<"* 1.錄入航線信息 *"<<en

82、dl;</p><p>  cout<<"* 2.查詢航線信息 *"<<endl;</p><p>  cout<<"* 3.訂票功能 *"<<endl;</p><p>  cout<<"* 4.退票功能

83、 *"<<endl;</p><p>  cout<<"* 5.退出 *"<<endl;</p><p>  cout<<"* 請選擇 *"<<endl;</p><

84、p>  cout<<"****************************"<<endl;</p><p><b>  cin>>n;</b></p><p><b>  if(n==1)</b></p><p>  insertairline(l,m);&

85、lt;/p><p><b>  if(n==2)</b></p><p>  chaxungongneng(l,m);</p><p><b>  if(n==3)</b></p><p>  dingpiaogongneng(l,m);</p><p><b>  i

86、f(n==4)</b></p><p>  tuipiaogongneng(l,m);</p><p>  }while(n>=1&&n<=4);</p><p><b>  }</b></p><p><b>  六、測試數(shù)據(jù)</b></p>

87、<p><b>  航線信息:</b></p><p>  beijing 0001 10001 1 10 10</p><p>  shanghai 0002 10002 2 10 10</p><p>  guangzhou 0003 10003 3 10 10</p><p><b>  訂票客

88、戶信息:</b></p><p>  Wangyi 1 1</p><p>  Wanger 1 2</p><p>  Wangsan 1 3</p><p>  Wangsi 1 3</p><p>  Wangwu 1 1</p><p>  Wangliu 1 2</p

89、><p>  另外當(dāng)訂票已滿時再訂票的話,可以通過轉(zhuǎn)入等候訂票</p><p>  退票完成時,系統(tǒng)將會轉(zhuǎn)入為等候訂票客戶訂票</p><p><b>  七、總結(jié)</b></p><p><b>  1. 不足</b></p><p>  經(jīng)過小組同學(xué)的努力,我們也終于結(jié)束了這

90、次的課程設(shè)計,雖然最后的檢驗已經(jīng)通過了,但是其中仍顯現(xiàn)出許多的不足。</p><p> ?。?)錄入系統(tǒng),每次輸入的數(shù)據(jù)會覆蓋上次輸入的數(shù)據(jù)。</p><p> ?。?)查詢系統(tǒng),只能查找最近輸入的數(shù)據(jù),并且相同終點(diǎn)站只能顯現(xiàn)一個信息。</p><p>  (3)在數(shù)據(jù)初始化的時候未對數(shù)據(jù)按照一定的順序存放,如果航線信息較多時將影響系統(tǒng)功能</p>&

91、lt;p><b>  2. 心得體會</b></p><p>  通過這次課程設(shè)計,我們從中學(xué)會了很多東西,再一次體會到了團(tuán)隊的力量是多么的偉大。在編寫程序的過程中,我們大家都參考了很多相關(guān)資料,還有參考書等。我們小組的合理分工,各個成員翻閱了很多這方面的資料,圖書館成了我們的首要選擇。這其中可能有辛酸也有快樂,但是我們卻體驗到其中的很多樂趣,畢竟在學(xué)校像這種實踐性的機(jī)會并不多,所以我

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論