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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  項目名稱: 航空客運訂票系統 </p><p>  學生姓名: </p><p>  學 號: </p><p>  班 級: </p><p>  指導教師: </p>

2、<p>  2013年 1月 1日</p><p><b>  目錄</b></p><p><b>  1.需求分析1</b></p><p>  2.數據結構設計及用法說明2</p><p>  3 詳細設計和編碼3</p><p>  3.1 查詢模塊

3、3</p><p>  3.2 訂票模塊4</p><p>  3.3 退票模塊5</p><p><b>  4.實驗結果6</b></p><p>  4.1航班信息錄入6</p><p>  4.2航班信息查詢6</p><p><b>  4.3

4、訂票模塊7</b></p><p><b>  4.4退票管理8</b></p><p><b>  5.體會9</b></p><p><b>  6.參考文獻10</b></p><p>  7.源代碼清單11</p><p>

5、<b>  1.需求分析</b></p><p>  本訂票系統能夠實現全部航線信息的錄入功能、訂票客戶信息的查詢功能、訂票功能和退票功能。</p><p><b>  具體分析如下:</b></p><p><b>  航班信息的錄入功能</b></p><p>  航班信息

6、的錄入功能包含:終點站名、航班號、飛機號、 飛行日期(星期幾)、乘員定額、余票量、已經訂票的客戶名單(包括姓名、訂票量)以及等候替補的客戶名單(包姓名、所需票量)。</p><p>  訂票客戶信息的查詢功能</p><p>  訂票客戶信息的查詢功能:根據客戶提供的終點站名進行查詢,并且可以輸出以下信息:航班號、飛機號、飛行日期和余票量。</p><p><

7、b>  訂票功能</b></p><p>  訂票功能:根據客戶提出的要求(航班號、訂票數量)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續;若已滿員或余票額少于定票額,則詢問客戶是否愿意排隊等候,若愿意,系統則自動登記排隊候補。</p><p><b>  退票功能</b></p><p>  退票功能:根據客戶提供的

8、情況(航班、姓名),詢問退票張數,然后為客戶辦理退票手續。接著系統自動查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊候補的客戶。</p><p>  具體功能模塊圖如圖1-1所示,</p><p>  圖1-1航空客運訂票系統功能模塊圖</p><p>  2.數據結構設計及用法說明</p

9、><p>  本系統定義了三個結構體,一個表示已定票客戶名單,一個表示等候替補的客戶名單,還有一個為航班信息。同時在結構體之后還定義了一個單鏈表。</p><p>  在已定票客戶名單中,name1存放客戶姓名,reserve表示訂票量,具體如下:</p><p>  typedef struct //已經訂票的客戶名單</p><p>&

10、lt;b>  {</b></p><p>  char name1[20]; //客戶姓名</p><p>  int reserve; //定票量</p><p><b>  }name;</b></p><p>  在等候替補的客戶名單中,name數組用來存放等候客戶姓名,necessary存

11、放所需票量的數量,具體如下:</p><p>  typedef struct //等候替補的客戶名單</p><p><b>  {</b></p><p>  char name[20]; //客戶姓名</p><p>  int necessary[20]; //所需票量</p><

12、;p><b>  }wai;</b></p><p>  在航班信息當中,destination表示終點站名,flight表示航班號,num為飛機號,time表示飛行日期,sum表示乘員定額,odd表示余票量,waitno表示已經有的候票客戶人數;同時還定義了訂票客戶數組name namelist[50]、以及候票客戶數組wai wait[50];具體如下:</p>&

13、lt;p>  struct airline //航班信息,</p><p><b>  {</b></p><p>  char destination[maxsize]; //終點站名</p><p>  char flight[20]; //航班號</p><p>  int num;

14、//飛機號</p><p>  char time; //飛行日期(星期幾)</p><p>  int sum; //乘員定額</p><p>  int odd; //余票量</p><p>  name namelist[50];//訂票客戶數組</p><p>  wai wait[50];//候票

15、客戶數組</p><p>  int waitno;//已經有的候票客戶人數</p><p>  }airplane;</p><p><b>  3 詳細設計和編碼</b></p><p><b>  3.1 查詢模塊</b></p><p>  進入訂票系統,此時有四個功

16、能模塊供用戶選擇,此時是查詢功能,這是按目的地查詢,根據用戶所提供要到的目的地,當所提供目的地與已經錄入的航班信息所錄入的終點站名相同時,查找成功同時顯示所查詢的航班的信息,當查找失敗是,系統會提示用戶輸入有誤,并要重新查詢。</p><p>  圖3-1查詢功能流程圖</p><p><b>  3.2 訂票模塊</b></p><p>  

17、進入訂票模塊的時候,系統提示輸入終點站名,客戶姓名和所定票量,當用戶要訂的票數小于所在航班的余票數時,直接給用戶訂票,并提示訂票成功。當用戶要訂的票數大于所在航班的余票數時,系統會給出提示,詢問用戶目前余票量不足,是否進行候補,如果用戶選擇候補時,就先把現有的票訂下,并保存在已訂票客戶中,剩下的沒有訂的票就保存在候補客戶中。若沒有找到對應的航班號,提示航班號錯誤,重新輸入。</p><p>  圖3-2訂票模塊流

18、程圖</p><p><b>  3.3 退票模塊</b></p><p>  進入退票模塊時,系統會先讓用戶輸入航班號,并利用同樣的查找思路對航班號進行查找,查找失敗則提示沒有您要找的航班號,查找成功時,然后輸入姓名,利用同樣的查找方法,查找失敗則提示沒有您要找的姓名,查找成功則輸入要退票的張數,當信息都輸入正確時,系統會提示退票成功。</p><

19、;p>  圖3-3退票模塊流程圖</p><p><b>  4.實驗結果</b></p><p>  該系統包括對航班信息的錄入creatlist(linklist *l),航班信息的查詢seek(linklist *l) ,訂票功能管理booking(linklist *l) ,以及退票功能模塊cancel(linklist *l) ,具體如下:</p

20、><p><b>  4.1航班信息錄入</b></p><p>  當用戶選擇1.錄入航班信息時,系統會提示用戶輸入終點站名、航班號、飛機號、飛行日期,同時余票量也是手動輸入,并且在輸入完成后會顯示乘員定額,如圖4-1所示:</p><p>  圖4-1航班信息錄入圖</p><p><b>  4.2航班信息查

21、詢</b></p><p>  根據用戶提供的站名進行查找,當查找失敗的時候提示用戶該航班不存在,否則,輸出航班號、飛機號、飛行日期,以及余票量,如圖4-2</p><p>  圖4-2查詢功能模塊圖</p><p><b>  4.3訂票模塊</b></p><p>  當用戶選擇3.訂票功能管理時,系統提

22、示用戶輸入終點站,姓名、所定票量,該功能是根據終點站名查找訂票航班,當訂票數大于余票數時,系統會詢問用戶是否進入候補狀態,詢問是否排隊等候,當有剩余票時,提示訂票成功,如圖4-4</p><p>  圖4-3訂票功能模塊圖</p><p>  圖4-4訂票功能模塊圖</p><p><b>  4.4退票管理</b></p>&l

23、t;p>  該功能主要是通過查找要退票的航班,查找到已定客戶名單和其詳細信息,實現了對于用戶已定票數以及用戶名的刪除,當刪除成功的時候,提示用戶刪除失敗,如圖4-5</p><p>  圖4-5退票功能模塊圖</p><p><b>  5.體會</b></p><p>  航空客運訂票系統是對于航空公司訂票系統的一種小型模擬,它包括對航

24、班信息的錄入,客戶信息的查詢,訂票功能管理,以及取消訂票這四個功能模塊。</p><p>  這是繼開學來之后第二門課程設計,當然在這之中還是有遇到很多困難。在做第一門學生信息管理系統的時候,我對于畫流程圖以及對算法的描述的時候,總是不簡潔,而且重點也沒說到,因此,在這次做課程設計的時候,對于畫流程圖和對算法的描述分析格外細心。不僅僅如此,這次的課程設計題目蘊含了對系統功能分析,即該系統包含哪些功能,怎么去實現它

25、,以及對于這學期所需知識的一個總結。</p><p>  通過這次課程設計,讓我對于結構體的定義,單鏈表的定義、使用,以及循環語句的使用有了更深入的了解,同時對于做課程設計的第一步有了全新的認識,只要能將所需知識更好使用就可以做到想做的東西。</p><p><b>  6.參考文獻</b></p><p>  [1]雷于生,胡成松.C語言程序

26、設計.北京:高等教育出版社,2009</p><p>  [2]嚴蔚敏,吳偉江。數據結構。北京:清華大學出版社,1997</p><p>  [3]譚浩強編著.C語言程序設計.北京:清華大學出版社,1991</p><p>  [4]譚浩強,張基溫,唐永炎編著.C語言程序設計教程.北京:高等教育出版社,1992</p><p>  [5]黃揚

27、銘.數據結構.北京:科學出版社,2001</p><p><b>  7.源代碼清單</b></p><p>  #include<iostream.h></p><p>  #include<malloc.h></p><p>  #include<string.h></p&g

28、t;<p>  #include<stdlib.h></p><p>  #define maxsize 50</p><p>  typedef struct //已經訂票的客戶名單</p><p><b>  {</b></p><p>  char name1[20]; //客戶姓

29、名</p><p>  int reserve; //定票量</p><p><b>  }name;</b></p><p>  typedef struct //等候替補的客戶名單</p><p><b>  {</b></p><p>  char name[

30、20]; //客戶姓名</p><p>  int necessary; //所需票量</p><p><b>  }wai;</b></p><p>  struct airline //航班信息,</p><p><b>  {</b></p><p>

31、  char destination[maxsize]; //終點站名</p><p>  char flight[20]; //航班號</p><p>  int num; //飛機號</p><p>  char time; //飛行日期(星期幾)</p><p>  int sum; //乘員定額</p>

32、;<p>  int odd; //余票量</p><p>  name namelist[50];//訂票客戶數組</p><p>  wai wait[50];//候票客戶數組</p><p>  int waitno;//已經有的候票客戶人數</p><p>  }airplane;</p><p&

33、gt;  typedef airline elemtype;</p><p>  typedef struct lnode//建立單鏈表</p><p><b>  {</b></p><p>  elemtype data;</p><p>  struct lnode *next;</p><p&

34、gt;  }linklist;</p><p>  void creatlist(linklist *&l);</p><p>  void seek(linklist *l);</p><p>  void booking(linklist *l);</p><p>  void cancel(linklist *&l);&

35、lt;/p><p>  /*-----------------------------------主菜單--------------------------*/</p><p>  int menu()</p><p><b>  {</b></p><p><b>  int y;</b></p

36、><p>  cout<<"\t-------------------------------------------------------------"<<endl;</p><p>  cout<<"\t----------------------航空客運訂票系統---------------------"<

37、;<endl;</p><p>  cout<<"\n\n\t\t\t1.錄 入 航 班 信 息"<<endl;</p><p>  cout<<"\n\n\t\t\t2.查 詢 航 班 信 息"<<endl;</p><p>  cout<<"\n\

38、n\t\t\t3.訂 票 功 能 管 理"<<endl;</p><p>  cout<<"\n\n\t\t\t4.退 票 辦 理"<<endl;</p><p>  cout<<"\n\n\t\t\t0.退 出"<<endl;</p><p>  c

39、out<<"\n\t -------------------------------------------------"<<endl;</p><p>  cout<<"\n\t ---------------------------------------------------"<<endl;</p>

40、<p><b>  do</b></p><p><b>  {</b></p><p>  cout<<"\t 請正確選擇:";</p><p><b>  cin>>y;</b></p><p>  }w

41、hile(y<1||y>4);</p><p><b>  return y;</b></p><p><b>  }</b></p><p>  /*----------------------------------尾插法建表----------------------*/</p><p

42、>  void creatlist(linklist *&l)</p><p><b>  {</b></p><p>  int i,m,n,j;</p><p>  linklist *s,*r;</p><p>  l=(linklist*)malloc(sizeof(linklist));//創建頭

43、結點</p><p>  r=l; //r始終指向尾結點,開始時指向頭結點</p><p>  cout<<"請輸入航班數目:"<<endl;</p><p><b>  cin>>m;</b></p><p>  cout<

44、<"請輸入航班信息"<<endl;</p><p>  for(i=0;i<m;i++)</p><p><b>  {</b></p><p>  s=(linklist *)malloc(sizeof(linklist));</p><p>  s->data.wai

45、tno=0;//侯票的人數默認為0</p><p>  cout<<"請輸入終點站名: ";</p><p>  cin>>s->data.destination;</p><p>  cout<<"請輸入航班號: ";</p><p>  cin>>

46、;s->data.flight;</p><p>  cout<<"請輸入飛機號: ";</p><p>  cin>>s->data.num;</p><p>  cout<<"請輸入飛行日期: ";</p><p>  cin>>s->

47、;data.time;</p><p>  cout<<"請輸入余票量: ";</p><p>  cin>>s->data.odd;</p><p>  cout<<"請輸入已訂客戶數: ";</p><p><b>  cin>>n

48、;</b></p><p>  //s->data.sum=0;</p><p>  for(j=0;j<n;j++)</p><p><b>  {</b></p><p>  cout<<"客戶姓名: ";</p><p>  cin&g

49、t;>s->data.namelist[j].name1;</p><p>  cout<<"客戶訂票量: ";</p><p>  cin>>s->data.namelist[j].reserve;</p><p>  s->data.sum=s->data.namelist[j].rese

50、rve;//修改航班的已訂票客戶人數</p><p><b>  } </b></p><p>  cout<<"乘員定額: "<<s->data.sum;</p><p>  r->next=s;</p><p><b>  r=s;</b>

51、</p><p><b>  }</b></p><p>  r->next=NULL;</p><p><b>  }</b></p><p>  /*--------------------------------按終點站名查找-------------------------------

52、---*/</p><p>  void seek(linklist *l)</p><p><b>  {</b></p><p>  linklist *p=l->next;//p指向第1個數據結點</p><p>  char x[maxsize];</p><p>  cout<

53、;<"請輸入要要查找的站名: ";</p><p>  cin>>x; </p><p>  while(p!=NULL&&strcmp(p->data.destination,x)!=0) //當查詢的終點站名不存在</p><p>  p=p->next;</p>

54、<p><b>  //i++;</b></p><p>  if(p==NULL)</p><p>  cout<<"該航班不存在!"<<endl;</p><p><b>  else</b></p><p><b>  {&l

55、t;/b></p><p>  cout<<"該航班信息如下:"<<endl;</p><p>  cout<<"航班號為: "<<p->data.flight<<endl; //輸出航班號</p><p>  cout<<"飛機

56、號為: "<<p->data.num<<endl; //輸出飛機號</p><p>  cout<<"飛行日期為: "<<p->data.time<<endl; //顯示飛行日期</p><p>  cout<<"余票量為: "<<

57、p->data.odd<<endl; //顯示余票量</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*------------------------------------訂票管理------------------------------

58、----*/</p><p>  void booking(linklist *l)</p><p><b>  {</b></p><p>  linklist *p=l->next; //p指向第一個數據元素</p><p>  char d[50],m[20],t;int ticket,j=0;</p

59、><p>  cout<<"請輸入終點站名: "<<endl;</p><p><b>  cin>>d;</b></p><p>  cout<<"您的姓名:"<<endl;</p><p><b>  cin&g

60、t;>m;</b></p><p>  cout<<"您所定票量: "<<endl;</p><p>  cin>>ticket;</p><p>  while(p!=NULL&&strcmp(p->data.destination,d)!=0)//根據終點站名查找訂票

61、航班</p><p>  p=p->next;</p><p><b>  if(p)</b></p><p><b>  {</b></p><p>  if(p->data.odd<ticket) //當余票量不足,詢問是否排隊等候</p><p>&

62、lt;b>  {</b></p><p>  cout<<"sorry,余票量不足,您是否排隊等候? Y/N"<<endl;</p><p><b>  cin>>t;</b></p><p>  if(t=='Y'||t=='y')&l

63、t;/p><p><b>  {</b></p><p>  while(p->data.wait[j].necessary!=0) //判斷候補乘客數組是否為空</p><p><b>  j++;</b></p><p>  strcpy(p->data.wait[j].name,m)

64、; //將輸入的人的名字存放到候補乘客中</p><p>  p->data.wait[j].necessary=ticket-p->data.odd; //候補乘客所需票量等于乘客所需票量減去余票量</p><p>  p->data.odd=0;</p><p><b>  }</b></p><p

65、><b>  else</b></p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

66、;<p>  while(p->data.wait[j].necessary!=0) //判斷已定票客戶訂票量是否為0</p><p><b>  j++;</b></p><p>  strcpy(p->data.wait[j].name,m);</p><p>  p->data.wait[j].neces

67、sary=ticket;//候補客戶所需票量等于用于自己輸入票量</p><p>  p->data.odd-=ticket;//余票量等于先得余票量減去客戶訂的票數</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<&

68、quot;訂票成功!"<<endl;</p><p><b>  }</b></p><p>  /*------------------------------ 取消訂票------------------------------------*/</p><p>  void cancel(linklist *&

69、l)</p><p><b>  {</b></p><p>  linklist *p=l->next;</p><p>  char name2[20],time1[20],flight1[20];</p><p>  int i=0,j;</p><p>  cout<<&

70、quot;請輸入退票客戶信息: "<<endl;</p><p>  cout<<"您的姓名: ";</p><p>  cin>>name2;</p><p>  cout<<"您的飛行日期:";</p><p>  cin>>ti

71、me1;</p><p>  while(p!=NULL&&strcmp(p->data.flight,flight1)!=0)//查找退票航班</p><p>  p=p->next;</p><p><b>  if(p)</b></p><p><b>  {</b>

72、;</p><p>  while(strcmp(p->data.namelist[i].name1,name2))//查找具體的退票乘客信息</p><p><b>  i++;</b></p><p>  for(;!p->data.namelist[i].name1;i++)//從該航班的已訂票數組中刪除此乘客</p&g

73、t;<p><b>  {</b></p><p>  strcpy(p->data.namelist[i].name1,p->data.namelist[i+1].name1);</p><p>  p->data.namelist[i].reserve=p->data.namelist[i+1].reserve;//刪除前一名

74、已定客戶名單</p><p>  p->data.odd+=p->data.sum;//修改余票量</p><p><b>  }</b></p><p>  if(p->data.wait[0].name)//判斷候票乘客數組是否為空</p><p>  for(j=0;p->data.odd&

75、gt;p->data.wait[j].necessary;j++)</p><p><b>  {</b></p><p>  strcpy(p->data.namelist[i+j].name1,p->data.wait[j].name);//將候補客戶名單復制給已定客戶名單</p><p>  p->data.nam

76、elist[i+j].reserve=p->data.wait[j].necessary;//已定客戶票量等于候補客戶所需票量</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"退票成功!";</p><

77、;p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  linklist *l;</p><p><b>  for(;;)</b></p><p><b> 

78、 {</b></p><p>  switch(menu())</p><p><b>  {</b></p><p>  case 1:creatlist(l);break;</p><p>  case 2:seek(l);break;</p><p>  case 3:booki

79、ng(l);break;</p><p>  case 4:cancel(l);break;</p><p>  case 5:exit(0);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</

80、b></p><p><b>  數據結構課程設計</b></p><p><b>  成績評定</b></p><p>  成績評定: (百分制)</p><p>  指導教師簽字:

溫馨提示

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

評論

0/150

提交評論