欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》

      時間:2019-05-14 05:01:41下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》》。

      第一篇:數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》

      軟件工程專業(yè)14級

      《數(shù)據(jù)結構》課程設計報告

      設計題目: 飛機訂票系統(tǒng) 班 級: 軟 件14 姓 名: 指導教師:

      2015年 11月20日

      目錄

      一、設計任務與要求........................................................1 1.1 總體目標與任務要求................................................1 1.2 題目選擇與目的意義................................................1 1.3 所選題目的主要工作................................................1

      二、需求分析..............................................................2 2.1 用戶需求分析......................................................2 2.2 功能需求分析......................................................2 2.3 系統(tǒng)需求分析......................................................2

      三、概要設計..............................................................3 3.1 各模塊的算法設計說明..............................................3 3.2 存儲結構設計說明..................................................8

      四、詳細設計.............................................................10

      五、源代碼...............................................................11

      六、運行結果分析.........................................................21

      七、收獲與體會...........................................................28

      八、主要參考資料.........................................................28

      一、設計任務與要求

      1.1 總體目標與任務要求

      制作一個訂票系統(tǒng),通過此系統(tǒng)可以實現(xiàn)如下功能: 1)錄入

      可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結構、具體數(shù)據(jù)自定)。2)查詢

      可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉)可以輸入起飛抵達城市,查詢飛機航班情況。3)訂票

      可以訂票,如果該航班已經(jīng)無票,可以提供相關可選擇的航班(訂票情況可以存在一個數(shù)據(jù)文件中,結構自己設定)。4)退票

      可退票,退票后修改相關數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。5)修改航班信息

      當航班信息改變可以修改航班數(shù)據(jù)文件。

      根據(jù)以上功能說明,設計航班信息,訂票信息的存儲結構,設計程序完成功能。

      1.2 題目選擇與目的意義

      選擇這個題目的原因是,訂票系統(tǒng)在現(xiàn)實生活中應用很廣泛,通過這個系統(tǒng)可以使訂票、退票等變得簡便。與傳統(tǒng)的人工用紙、筆來記錄辦理訂票、退票等相比,使用這個系統(tǒng)也會增加工作效率。這個題目做出來的系統(tǒng)還是比較實用的,所以我選擇了訂票系統(tǒng)這個題目。

      完成此系統(tǒng),需要綜合運用數(shù)據(jù)結構課程中學到的幾種典型數(shù)據(jù)結構,以及程序設計語言(C語言),自行實現(xiàn)一個較為完整的應用系統(tǒng)的設計與開發(fā)。通過課程設計,自己通過系統(tǒng)分析、系統(tǒng)設計、編程調(diào)試,寫實驗報告等環(huán)節(jié),進一步掌握應用系統(tǒng)設計的方法和步驟,靈活運用并深刻理解典型數(shù)據(jù)結構在軟件開發(fā)中的應用。學會將知識應用于實際的方法,提高分析和解決問題的能力,增加綜合能力。1.3 所選題目的主要工作

      這個題目的主要工作是使訂票系統(tǒng)可以錄入航班情況,查詢某個航線的情況、辦理訂票、辦理退票、修改航班信息、查詢訂票信息等。

      第 1 頁

      二、需求分析

      2.1 用戶需求分析

      用戶使用此程序所要完成的工作主要為:查詢所有航線信息、查看已訂票客戶信息、查詢航線、辦理訂票業(yè)務、辦理退票業(yè)務。通過此系統(tǒng)可以方便的進行上述工作。

      每條航線所涉及的信息有:終點站名、航班號、飛行時間、票價、乘員定額、余票量。

      已訂票的客戶名單信息包括姓名、訂票量、艙位等級(1,2或3)。等候替補的客戶名單信息包括姓名、所需票量。

      查詢航線功能可以根據(jù)旅客提出的終點站名輸出航班號、飛行時間、票價、乘員定額、余票量。

      訂票業(yè)務功能根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于定票額,則需重新詢問客戶要求。若需要,可登記排隊候補購票。

      退票業(yè)務功能根據(jù)客戶提供的情況(航班號、姓名)為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊候補的客戶。2.2 功能需求分析

      功能需求分析模塊圖如圖2.1所示。

      圖2.1 功能模塊圖

      2.3 系統(tǒng)需求分析

      第 2 頁

      開發(fā)環(huán)境: Windows 7系統(tǒng)

      使用軟件:編寫實驗報告:Microsoft Office Word 制 作 程 序:Microsoft Visual C++ 6.0

      三、概要設計

      3.1 各模塊的算法設計說明

      1.瀏覽航線信息功能,調(diào)用display函數(shù)進行輸出。如圖3.1所示。航線信息流程圖:

      圖3.1 瀏覽航線信息流程圖:

      其中display函數(shù)的流程圖如圖3.2 display函數(shù)流程圖:

      瀏覽第 3 頁

      圖3.2 display函數(shù)流程圖

      2.瀏覽已訂票客戶信息功能,按順序輸出客戶信息鏈表中的信息。流程圖如圖3.3 瀏覽已訂票客戶信息功能流程圖:

      圖3.3 瀏覽已訂票客戶信息功能流程圖

      3.查詢航線功能,根據(jù)客戶提出的終點站名輸出航線信息。流程圖如圖3.4 查詢航線流程圖:

      第 4 頁

      圖3.4 查詢航線流程圖

      4.辦理訂票業(yè)務功能,根據(jù)客戶提出的航線信息等進行訂票。流程圖如圖3.5 辦理訂票業(yè)務功能流程圖:

      第 5 頁

      圖3.5 辦理訂票業(yè)務功能流程圖

      5.辦理退票業(yè)務功能,根據(jù)客戶提出的航線信息等進行退票。流程圖如圖3.6 辦理退票業(yè)務功能流程圖:

      第 6 頁

      圖3.6 辦理退票業(yè)務功能流程圖

      6.主函數(shù)流程圖如圖3.7 主函數(shù)流程圖:

      第 7 頁

      圖3.7 主函數(shù)流程圖

      3.2 存儲結構設計說明

      typedef struct wat_ros

      /*單鏈隊列存儲等候替補的客戶信息*/ {

      char name[10];

      /*姓名*/ int req_amt;

      /*訂票量*/ struct wat_ros *next;

      }qnode,*qptr;

      第 8 頁

      typedef struct pqueue

      /*等候替補的客戶名單*/ {

      qptr front;

      qptr rear;

      }linkqueue;上述單鏈隊列用來存儲排隊等候的客戶名單,這樣可以通過隊先進先出的特點來進行操作。先排隊的客戶可以先訂票成功。

      typedef struct ord_ros

      /*乘員名單*/ {

      char name[10];

      /*客戶姓名*/ int ord_amt;int grade;

      /*訂票量*/

      /*艙位等級*/ struct ord_ros *next;}linklist;上述單鏈表用來存儲乘員的信息,包括姓名、訂票量、艙位等級。struct airline

      /*航線信息*/ {

      char ter_name[10];

      /*抵達城市*/ char air_num[10];

      /*航班號*/ char time[10];

      /*飛機時間*/ char pri[7];

      /*票價*/ int tkt_amt;

      /*乘員定額*/ int tkt_sur;

      /*余票量*/ linklist *order;

      /*乘員名單域,指向乘員名單鏈表的頭指針*/ linkqueue wait;

      /*等候替補的客戶名單域,分別指向排隊等候名單隊頭隊尾的指針*/ }lineinfo;這個結構體存儲了航線信息,包括抵達城市、航班號、飛行時間、票價、乘員定額、余票量等。

      #define MAXSIZE 5

      /*定義航線數(shù)量,可修改*/ struct airline air[MAXSIZE]=

      /*初始化航線信息*/ {

      {“beijing”,“1”,“1200”,“860”,30,30}, {“shanghai”,“2”,“1000”,“770”,20,20}, {“l(fā)ondon”,“3”,“1330”,“960”,10,10},第 9 頁

      };{“harbin”,“4”,“1700”,“760”,50,50}, {“dalian”,“5”,“1400”,“550”,40,40} 通過修改全局變量MAXSIZE的數(shù)值即可更改航線數(shù)。在struct airline air[MAXSIZE]中可以修改、增加、刪除航線信息。航線信息內(nèi)容依次為抵達城市、航班號、飛行時間、票價、乘員定額、余票量(飛行時間1200即12:00)。

      四、詳細設計

      1.查看航線信息

      編寫void list()函數(shù)來查看全部航線信息。其中調(diào)用了void display(struct airline *info)函數(shù),該函數(shù)的功能是打印每條航線的基本信息。這樣即可按順序打印出struct airline鏈表中存儲的全部航線信息。2.查看已訂票客戶信息

      編寫void prtlink()函數(shù)來查看已訂票客戶信息。這個函數(shù)中需要輸入要查詢的航線,通過find()函數(shù)來尋找這個航線然后輸出該航線乘員域的乘員信息。3.查詢航線

      編寫void search()函數(shù)來實現(xiàn)查詢航線的功能。用戶輸入抵達城市名,該函數(shù)會在航線信息鏈表中進行查詢。如果有該城市,則會輸出此航線的信息。4.辦理訂票業(yè)務

      編寫void order()函數(shù)來實現(xiàn)訂票功能。首先提示用戶輸入航班號,然后調(diào)用find()函數(shù)來查找此航班,如果該航班存在,則會提示用戶輸入信息并調(diào)用linklist *insertlink(linklist *head,int amount,char name[],int grade)在訂票乘員名單域中添加客戶信息。如果余票不足,則會提示用戶進行排隊,如果排隊,則會調(diào)用提示用戶輸入信息并調(diào)用linkqueue appendqueue(linkqueue q,char name[],int amount)在排隊等候乘員名單域中添加客戶信息。5.辦理退票業(yè)務

      編寫void return_tkt()函數(shù)來實現(xiàn)退票功能。首先提示用戶輸入航班號,然后調(diào)用find()函數(shù)來查找此航班,如果該航班存在,則會提示用戶輸入信息,信息正確則會提示退票成功。此時將乘員信息中的該乘員信息刪除,然后檢查替補乘員鏈表中的信息,如果其訂票量可以得到滿足,則會將其插入到訂票客戶名單鏈表中,提示他訂票成功。6.退出系統(tǒng)

      主函數(shù)中無限循環(huán)輸出菜單for(;;),用戶在菜單頁面下輸入6回車即exit(0),即可退出系統(tǒng)。

      第 10 頁

      五、源代碼

      #include #include #include #include #include

      #define MAXSIZE 5

      /*定義航線數(shù)量,可修改*/

      typedef struct wat_ros

      /*單鏈隊列存儲等候替補的客戶信息*/ {

      char name[10];

      /*姓名*/ int req_amt;

      /*訂票量*/ struct wat_ros *next;

      }qnode,*qptr;typedef struct pqueue

      /*等候替補的客戶名單*/ {

      qptr front;

      /*等候替補客戶名單域的隊頭指針*/ qptr rear;

      /*等候替補客戶名單域的隊尾指針*/ }linkqueue;

      typedef struct ord_ros

      /*乘員名單*/ {

      char name[10];

      /*客戶姓名*/ int ord_amt;

      /*訂票量*/

      int grade;

      /*艙位等級*/ struct ord_ros *next;}linklist;

      struct airline {

      char ter_name[10];

      /*抵達城市*/ char air_num[10];

      /*航班號*/ char time[10];

      /*飛機時間*/ char pri[7];

      /*票價*/

      第 11 頁

      int tkt_amt;

      /*乘員定額*/ int tkt_sur;

      /*余票量*/ linklist *order;

      /*乘員名單域,指向乘員名單鏈表的頭指針*/ linkqueue wait;

      /*等候替補的客戶名單域,分別指向排隊等候名單隊頭隊尾的指針*/ }lineinfo;struct airline *start;

      void display(struct airline *info)

      /*打印每條航線的基本信息*/ { }

      void list()

      /*打印全部航線信息*/ {

      }

      void search()

      /*根據(jù)客戶提出的終點站名輸出航線信息*/ {

      printf(“%8st%3st%stt%4st%3dt%10dn”,info->ter_name,info->air_num,info->time,info->pri,info->tkt_amt,info->tkt_sur);struct airline *info;int i=0;info=start;printf(“終點站名t航班號t飛行時間t票價t乘員定額t余票量n”);while(i

      } printf(“nn”);display(info);

      /*調(diào)用display函數(shù)來輸出*/ info++;i++;struct airline *info,*find();char name[10];

      /*要抵達的城市名稱*/ int i=0;info=start;

      第 12 頁

      printf(“請輸入要抵達城市的名稱:”);scanf(“%s”,name);while(iter_name))/*有該站名strcmp則返回,if(!0)即break*/

      {

      break;

      }

      info++;

      i++;} if(i>=MAXSIZE)

      /*沒有匹配的航線*/ {

      printf(“對不起,沒有這條航線!n”);} else {

      printf(“終點站名t航班號t飛行時間t票價t乘員定額t余票量n”);

      display(info);

      /*調(diào)用display函數(shù)輸出航線信息*/ } } struct airline *find()

      / *根據(jù)系統(tǒng)提出的航班號查詢并以指針形式返回*/ {

      struct airline *info;char number[10];

      /*查詢的航班號*/ int i=0;info=start;printf(“請輸入航班號:”);scanf(“%s”,number);while(i

      {

      if(!strcmp(number,info->air_num))

      /*有匹配航班*/

      {

      return info;

      }

      第 13 頁

      } info++;i++;}

      /*無匹配航班*/ printf(“對不起,沒有這條航線!n”);return NULL;void prtlink()

      /*打印訂票乘員名單域的客戶名單信息*/ {

      } linklist *insertlink(linklist *head,int amount,char name[],int grade)

      /*增加訂票乘員名單域的客戶信息*/ {

      linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL)

      /*按順序輸出客戶信息鏈表*/ {

      printf(“客戶姓名

      訂票數(shù)額

      艙位等級n”);while(p)

      {

      } printf(“%stt%dt%dn”,p->name,p->ord_amt,p->grade);p=p->next;

      }

      else

      /*沒有人訂這個航班*/ printf(“該航線沒有客戶信息!n”);linklist *p1,*new1;p1=head;new1=(linklist*)malloc(sizeof(linklist));if(!new1)

      /*存儲空間不足*/ {

      }

      第 14 頁 printf(“nOut of memory!n”);return NULL;

      } strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL)

      /*若原訂票客戶信息為空*/ {

      } else

      { } new1->next=p1;return head;

      head=new1;head=new1;new1->next=NULL;linkqueue appendqueue(linkqueue q,char name[],int amount)

      /*增加排隊等候的客戶名單域*/ {

      qptr new1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)

      /*若原排隊等候客戶名單域為空*/ { } else { } q.rear=new1;return q;

      第 15 頁 q.front=new1;q.rear->next=new1;

      }

      void order()

      /*辦理訂票業(yè)務*/ {

      struct airline *info;int amount,grade;

      /*訂票數(shù)量,艙位等級*/ char name[10];

      /*要訂的航班號*/ info=start;if(!(info=find()))

      /*根據(jù)客戶提供的航班號進行查詢,如為空,退出該模塊*/ { } printf(“請輸入您需要的票數(shù):”);scanf(“%d”,&amount);if(amount>info->tkt_amt)

      /*若客戶訂票額超過乘員定票總額,退出*/ {

      } if(amount<=info->tkt_sur)

      /*若客戶訂票額末超過余票量,訂票成功并{

      int i;printf(“請輸入您的姓名:”);scanf(“%s”,name);printf(“請輸入您需要的艙位等級(1,2或):”);scanf(“%d”,&grade);info->order=insertlink(info->order,amount,name,grade);

      /*在訂票乘員名單域for(i=0;i

      /*依次輸出該訂票客戶的座位號*/ { } info->tkt_sur-=amount;

      /*該航線的余票量應減掉該客戶的訂票量*/ printf(“n祝您乘坐愉快!n”);

      第 16 頁 return;printf(“n對不起,您輸入票數(shù)已經(jīng)超過乘員定額!”);return;等記信息*/ 中添加客戶信息*/ printf(“%s的座位號是:%dn”,name,info->tkt_amt-info->tkt_sur+i+1);

      } } else

      /*若滿員或余票額少于訂票額,詢問客戶是否需要進行排隊等候*/ {

      } char r;printf(“n沒有這么多票了,您需要排隊等候嗎?(Y/N)”);r=getch();printf(“%c”,r);if(r=='Y'||r=='y'){

      } else { } printf(“n歡迎您再次訂購!n”);printf(“n請輸入您的姓名:”);scanf(“%s”,name);info->wait=appendqueue(info->wait,name,amount);/*在排隊等候乘員名單域printf(“n注冊排隊成功!n”);中添加客戶信息*/ void return_tkt()

      /*退票模塊*/ {

      struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find()))

      /*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進行搜索*/ { } head=info->order;p1=head;

      第 17 頁 return;

      printf(“請輸入你的姓名:”);scanf(“%s”,cusname);while(p1!=NULL)

      /*根據(jù)客戶提供的姓名到訂票客戶名單域進行查詢*/ {

      } if(p1==NULL)

      /*若未找到,退出本模塊*/ {

      } else

      /*若信息查詢成功,刪除訂票客戶名單域中的信息*/ {

      } info->order=head;

      /*重新將航線名單域指向訂票單鏈表的頭指針*/ f=(info->wait).front;

      /*f指向排隊等候名單隊列的頭結點*/ r=(info->wait).rear;

      /*r指向排隊等候名單隊列的尾結點*/ t=f;

      /*t為當前滿點條件的排隊候補名單域*/

      第 18 頁 if(!strcmp(cusname,p1->name)){ } p2=p1;p1=p1->next;break;printf(“對不起,您沒有訂過票!n”);return;if(p1==head){ } { } grade=p1->grade;printf(“%s退票成功!n”,p1->name);p2->next=p1->next;head=p1->next;

      else

      info->tkt_sur+=p1->ord_amt;

      free(p1);

      while(t){

      if(info->tkt_sur>=info->wait.front->req_amt)

      /*若滿足條件者為頭結點*/ {

      } back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結點*/ {

      } if(f==r){

      第 19 頁 int i;info->wait.front=t->next;printf(“%s訂票成功!n”,t->name);for(i=0;ireq_amt;i++){ } info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客free(t);break;printf(“%s的座位號是:%dn”,t->name,(info->tkt_sur)-i);

      /*輸出座位號*/ 戶名單鏈表中*/ int i;back->next=t->next;printf(“%s訂票成功!n”,t->name);for(i=0;ireq_amt;i++)

      /*輸出座位號*/ { } info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客free(t);break;printf(“<%s>'s seat number is:%dn”,t->name,(info->tkt_sur)-i);戶名單鏈表中*/

      break;

      } } }

      int menu_select()

      /*菜單界面*/ {

      int c;char s[20];printf(“t訂票系統(tǒng)n”);printf(“~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“1.查看航線信息n”);printf(“2.查看已訂票客戶信息n”);printf(“3.查詢航線n”);printf(“4.辦理訂票業(yè)務n”);printf(“5.辦理退票業(yè)務n”);printf(“6.退出系統(tǒng)n”);printf(“~~~~~~~~~~~~~~~~~~~~~~~~~n”);do {

      printf(“請選擇(1-6):”);

      scanf(“%s”,s);c=atoi(s);}while(c<1||c>6);return c;}

      void main(){

      struct airline air[MAXSIZE]=

      /*初始化航線信息*/ {

      {“beijing”,“1”,“1200”,“860”,30,30},{“shanghai”,“2”,“1000”,“770”,20,20},{“l(fā)ondon”,“3”,“1330”,“960”,10,10}, {“harbin”,“4”,“1700”,“760”,50,50},第 20 頁

      {“dalian”,“5”,“1400”,“550”,40,40} };start=air;

      for(;;)

      /*無限循環(huán)(除非用戶選擇.退出)*/ {

      system(“cls”);

      /*清空屏幕*/

      switch(menu_select())

      {

      case 1:list();

      /*打印全部航線信息*/

      break;

      case 2:prtlink();

      /*瀏覽已訂票客戶信息*/

      break;

      case 3:search();

      /*查詢航線*/

      break;

      case 4:order();

      /*訂票*/

      break;

      case 5:return_tkt();

      /*退票*/

      break;

      case 6:printf(“n感謝您的使用,再見!n”);/*退出系統(tǒng)*/

      exit(0);

      /*正常退出程序*/

      }

      printf(“n任意鍵繼續(xù)...n”);

      getch();

      /*任意鍵繼續(xù)*/ } }

      六、運行結果分析

      1.菜單:進入系統(tǒng)后,會出現(xiàn)如下菜單,如圖6.1 菜單:

      第 21 頁

      圖6.1 菜單

      用戶根據(jù)自己需求選擇輸入數(shù)字(1-6)即可進入相應功能。

      2.查看航線信息:在菜單頁面下輸入數(shù)字1,回車,即可瀏覽全部航線信息。如圖6.2 查看航線信息:

      圖6.2 查看航線信息

      3.查看已訂票客戶信息:在菜單頁面下輸入數(shù)字2,回車,然后輸入航班號即可查看。如圖6.3 查看航線信息:

      圖6.3 查看航線信息

      該航線有客戶預定則顯示客戶預定的信息。如圖6.3 查看客戶預定信息:

      第 22 頁

      6.3 查看客戶預定信息

      如果該航線沒有客戶預定,則會提示該航線沒有客戶信息。如圖6.4 無人預定航線:

      圖6.4 無人預定航線

      4.查詢航線:在菜單頁面下輸入數(shù)字3,回車,即可進入查詢航線功能。如圖6.5 查詢航線頁面:

      圖6.5 查詢航線頁面

      根據(jù)提示輸入要抵達城市的名稱即可查詢。如果有該航線,則會顯示該航線的信息。如圖6.6 航線信息:

      第 23 頁

      圖6.6 航線信息

      如果沒有該航線,則會顯示對不起,沒有這條航線。如圖6.7 無此航線:

      圖6.7 無此航線

      5.辦理訂票業(yè)務:在菜單頁面下輸入數(shù)字4,回車,即可進入辦理訂票業(yè)務功能。如圖6.8 訂票頁面:

      圖6.8 訂票頁面

      用戶根據(jù)提示依次輸入航班號、票數(shù)、姓名、艙位等級即可。如圖6.9 訂票信息:

      第 24 頁

      圖6.9 訂票信息

      如果訂票成功,則會顯示座位號,并提示祝您乘坐愉快。如圖6.10 訂票成功:

      圖6.10 訂票成功

      如果在輸入訂票信息時,輸入的票數(shù)大于額定乘員數(shù),則會訂票失敗并提示。

      第 25 頁

      圖6.11 訂票失敗

      如果在輸入訂票信息時,輸入的票數(shù)小于額定乘員數(shù),大于余票數(shù),則會提示沒有這么多票了,詢問是否進行排隊等候。如圖6.12 詢問是否排隊等候:

      圖6.12 詢問是否排隊等候

      如果輸入N,代表不排隊,則會提示歡迎下次訂購。如果輸入Y,代表進行排隊等候。這是會提示用戶輸入姓名進行排隊。如圖6.13 排隊等候:

      圖6.13 排隊等候

      6.辦理退票業(yè)務:在菜單頁面下輸入數(shù)字5,回車,即可進入辦理退票業(yè)務功能。如圖6.14 辦理退票業(yè)務頁面:

      第 26 頁

      圖6.14 辦理退票業(yè)務頁面

      根據(jù)提示輸入航線號和姓名即可進行退票。如果此時這條航線有人排隊等候,余票數(shù)可以滿足其需求,其訂票即可成功。如圖6.15 排隊等候訂票成功:

      圖6.15 排隊等候訂票成功

      第 27 頁

      7.退出系統(tǒng):在菜單頁面下輸入數(shù)字6,回車,即可退出系統(tǒng)。如圖6.16 退出系統(tǒng):

      圖6.16 退出系統(tǒng)

      七、收獲與體會

      在編寫的時候只使用了相對較為簡單的基礎語言,代替了相對較為復雜的語言,降低了運行效率。測試輸入的數(shù)據(jù)也有一定的局限性,但是基本可以滿足訂票系統(tǒng)的需求。

      這個程序有許多地方可以改進,例如:

      ① 數(shù)據(jù)全部存儲在內(nèi)存中,可以考慮繼續(xù)編寫將數(shù)據(jù)保存在文件中,這樣不會丟失。

      ② 航線信息只能通過修改代碼來修改,可以編寫一個函數(shù)來修改航線信息并將其保存在文件中。

      ③ 使用的語言較基礎,運行效率較低,可以考慮寫一些較為復雜但運行效率高的語言。

      ④ 界面不夠美觀,菜單也只是局限在左上角,可以修改。

      八、參考文獻

      [1] 嚴蔚敏,吳偉民,數(shù)據(jù)結構(C語言版)[M].清華大學出版社,1997.[2] 夏濤.C語言程序設計,北京郵電大學出版社,2007.[3] 譚浩強.C程序設計(第三版)[M].清華大學出版社,2006.[4] 百度.百度知道.百度文庫

      第 28 頁

      第二篇:數(shù)據(jù)結構課程設計 飛機訂票系統(tǒng)

      飛機訂票系統(tǒng)

      1.需求分析

      描述要求編程解決的問題。以無歧義的陳述說明程序設計的任務,強調(diào)的是程序要做什么?明確規(guī)定:

      (a)輸入的形式和輸入值的范圍;

      (b)輸出的形式;

      (c)程序所能達到的功能;

      (d)測試數(shù)據(jù):包括正確的輸入及其輸出結果和含有錯誤的輸入及其輸出結果。

      2.概要設計

      給出程序要達到的具體的要求。描述解決相應問題算法的設計思想。描述所設計程序的各個模塊(即函數(shù))功能。說明本程序中用到的所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關系。

      3.詳細設計

      實現(xiàn)概要設計中定義的所有數(shù)據(jù)類型,對每個操作只需要寫出流程或偽碼算法;對主程序和其他模塊也都需要寫出流程或偽碼算法(偽碼算法達到的詳細程度建議為:按照偽碼算法可以在計算機鍵盤直接輸入高級程序設計語言程序);畫出函數(shù)的調(diào)用關系圖。給出所使用的基本抽象數(shù)據(jù)類型,所定義的具體問題的數(shù)據(jù)類型,以及新定義的抽象數(shù)據(jù)類型。設計出良好的輸入輸出界面(清晰易懂)。

      4.調(diào)試分析 內(nèi)容包括:

      (a)調(diào)試過程中遇到的問題是如何解決的以及對設計與實現(xiàn)的回顧討論和分析;

      (b)算法的時空分析(包括基本操作和其他算法的時間復雜度和空間復雜度的分析)和改進設想;

      (c)經(jīng)驗和體會等。

      5.用戶使用說明

      說明如何使用你編寫的程序,詳細列出每一步的操作步驟。

      6.測試結果

      設計測試數(shù)據(jù),或具體給出測試數(shù)據(jù)。要求測試數(shù)據(jù)能全面地測試所設計程序的功能。列出你的測試結果,包括輸入和輸出。這里的測試數(shù)據(jù)應該完整和嚴格,最好多于需求分析中所列。

      7.測試情況:給出程序的測試情況,并分析運行結果

      附錄(非必須,按照需要添加)

      帶注釋的源程序。可以只列出程序文件名的清單。

      需求分析

      任務:通過此系統(tǒng)可以實現(xiàn)如下功能: 錄入:

      可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結構、具體數(shù)據(jù)自定)

      查詢:

      可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉); 可以輸入起飛抵達城市,查詢飛機航班情況;

      訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結構自己設定)可以訂票,如果該航班已經(jīng)無票,可以提供相關可選擇航班;

      退票: 可退票,退票后修改相關數(shù)據(jù)文件;

      客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。

      概要設計

      詳細設計

      詳列函數(shù) void list(){

      struct airline *info;

      int i=0;

      info=start;

      printf(“起點城市t終點城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      while(i

      {

      display(info);

      info++;

      i++;

      }

      printf(“nn”);}

      查詢函數(shù) void search(){

      struct airline *info,*find();

      char qiname[10];

      char jiangname[10];

      int i=0;

      info=start;

      printf(“請輸入要起飛城市的名稱:”);

      scanf(“%s”,qiname);

      printf(“請輸入要抵達城市的名稱:”);

      scanf(“%s”,jiangname);

      while(i

      {

      if(!strcmp(jiangname,info->jiang_name))

      {

      break;

      }

      info++;

      i++;

      }

      if(i>=MAXSIZE)

      {

      printf(“沒有這條航線!n”);

      }

      else

      {

      printf(“起飛城市t降落城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      display(info);

      } }

      struct airline *find(){

      struct airline *info;

      char number[10];

      int i=0;

      info=start;

      printf(“請輸入航班號:”);

      scanf(“%s”,number);

      while(i

      {

      if(!strcmp(number,info->air_num))

      {

      return info;

      }

      info++;

      i++;

      }

      printf(“沒有這條航線!n”);

      return NULL;}

      訂票函數(shù) void order(){

      struct airline *info;

      char qiname[10];

      char jiangname[10];

      int amount;

      char name[10];

      char id[30];

      info=start;

      printf(“請輸入您的起飛城市:”);

      scanf(“%s”,qiname);

      printf(“請輸入您的降落城市:”);

      scanf(“%s”,jiangname);

      printf(“請輸入您需要的票數(shù):”);

      scanf(“%d”,&amount);

      int i=1;

      while(i<5)

      {

      if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

      {

      if(amount<=info->ticket_left)

      {

      int i;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      printf(“請輸入您的身份證號:”);

      scanf(“%s”,id);

      info->order=insertlink(info->order,amount,name,id);

      printf(“您的航班信息為:n”);

      display(info);

      for(i=0;i

      {

      printf(“%s的座位號是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

      }

      info->ticket_left-=amount;

      printf(“訂票成功!n”);

      break;

      }

      else

      {

      info++;

      i++;

      }

      }

      else

      {

      info++;

      i++;

      }

      } }

      退票函數(shù)

      void returnticket(){

      struct airline *info;

      linklist *p1,*p2,*head;

      char name[10];

      if(!(info=find()))

      {

      return;

      }

      head=info->order;

      p1=head;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      while(p1!=NULL)

      {

      if(!strcmp(name,p1->name))

      {

      break;

      }

      p2=p1;

      p1=p1->next;

      }

      if(p1==NULL)

      {

      printf(“您沒有訂過票!n”);

      return;

      }

      else

      {

      if(p1==head)

      {

      head=p1->next;

      }

      else

      {

      p2->next=p1->next;

      }

      info->ticket_left+=p1->tickets;

      printf(“%s退票成功!n”,p1->name);

      free(p1);

      }

      info->order=head;}

      存儲結構

      typedef struct passenger {

      char name[10];

      int tickets;

      char id[30];

      struct passenger *next;} linklist;typedef struct airline {

      char qi_name[10];

      char jiang_name[10];

      char air_num[10];

      char qi_time[10];

      char jiang_time[10];

      int ticket_all;

      int ticket_left;

      linklist *order;} lineinfo;調(diào)試分析

      查看航線信息

      查詢航線 ① 輸入起飛城市 ② 輸入抵達城市 ③ 輸出航班信息

      辦理訂票業(yè)務 ① 查詢符合的航班 ② 查詢余票量 ③ 輸出航班信息

      辦理退票業(yè)務

      源代碼

      #include #include #include #include #include #include using namespace std;#define MAXSIZE 5 typedef struct passenger {

      char name[10];

      int tickets;

      char id[30];

      struct passenger *next;} linklist;

      typedef struct airline {

      char qi_name[10];

      char jiang_name[10];

      char air_num[10];

      char qi_time[10];

      char jiang_time[10];

      int ticket_all;

      int ticket_left;

      linklist *order;} lineinfo;

      struct airline *start;

      void display(struct airline *info){ printf(“%st %10st %10st %10st %10st %5dt %5dn”,info->qi_name,info->jiang_name,info->air_num,info->qi_time,info->jiang_time,info->ticket_all,info->ticket_left);} void list(){

      struct airline *info;

      int i=0;

      info=start;

      printf(“起點城市t終點城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      while(i

      {

      display(info);

      info++;

      i++;

      }

      printf(“nn”);}

      void search(){

      struct airline *info,*find();

      char qiname[10];

      char jiangname[10];

      int i=0;

      info=start;

      printf(“請輸入要起飛城市的名稱:”);

      scanf(“%s”,qiname);

      printf(“請輸入要抵達城市的名稱:”);

      scanf(“%s”,jiangname);

      while(i

      {

      if(!strcmp(jiangname,info->jiang_name))

      {

      break;

      }

      info++;

      i++;

      }

      if(i>=MAXSIZE)

      {

      printf(“沒有這條航線!n”);

      }

      else

      {

      printf(“起飛城市t降落城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      display(info);

      } } struct airline *find(){

      struct airline *info;

      char number[10];

      int i=0;

      info=start;

      printf(“請輸入航班號:”);

      scanf(“%s”,number);

      while(i

      {

      if(!strcmp(number,info->air_num))

      {

      return info;

      }

      info++;

      i++;

      }

      printf(“沒有這條航線!n”);

      return NULL;}

      linklist *insertlink(linklist *head,int amount,char name[],char id[]){

      linklist *p1,*new1;

      p1=head;

      new1=(linklist*)malloc(sizeof(linklist));

      strcpy(new1->name,name);

      new1->tickets=amount;

      new1->next=NULL;

      strcpy(new1->id,id);

      if(head==NULL)

      {

      head=new1;

      new1->next=NULL;

      }

      else

      {

      while(p1->next!=NULL)

      p1=p1->next;

      p1->next=new1;

      }

      return head;}

      void order(){

      struct airline *info;

      char qiname[10];

      char jiangname[10];

      int amount;

      char name[10];

      char id[30];

      info=start;

      printf(“請輸入您的起飛城市:”);

      scanf(“%s”,qiname);

      printf(“請輸入您的降落城市:”);

      scanf(“%s”,jiangname);

      printf(“請輸入您需要的票數(shù):”);

      scanf(“%d”,&amount);

      int i=1;

      while(i<5)

      {

      if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

      {

      if(amount<=info->ticket_left)

      {

      int i;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      printf(“請輸入您的身份證號:”);

      scanf(“%s”,id);

      info->order=insertlink(info->order,amount,name,id);

      printf(“您的航班信息為:n”);

      display(info);

      for(i=0;i

      {

      printf(“%s的座位號是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

      }

      info->ticket_left-=amount;

      printf(“訂票成功!n”);

      break;

      }

      else

      {

      info++;

      i++;

      }

      }

      else

      {

      info++;

      i++;

      }

      } }

      void returnticket(){

      struct airline *info;

      linklist *p1,*p2,*head;

      char name[10];

      if(!(info=find()))

      {

      return;

      }

      head=info->order;

      p1=head;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      while(p1!=NULL)

      {

      if(!strcmp(name,p1->name))

      {

      break;

      }

      p2=p1;

      p1=p1->next;

      }

      if(p1==NULL)

      {

      printf(“您沒有訂過票!n”);

      return;

      }

      else

      {

      if(p1==head)

      {

      head=p1->next;

      }

      else

      {

      p2->next=p1->next;

      }

      info->ticket_left+=p1->tickets;

      printf(“%s退票成功!n”,p1->name);

      free(p1);

      }

      info->order=head;}

      int menu_select(){

      int c;

      char s[20];

      printf(“

      訂票系統(tǒng)n”);

      printf(“-------------n”);

      printf(“

      1.查看航線信息

      printf(”

      2.查詢航線

      printf(“

      3.辦理訂票業(yè)務

      printf(”

      4.辦理退票業(yè)務

      printf(“

      5.退出系統(tǒng)

      printf(”-------------n“);

      do

      {

      printf(”請選擇(1-5):“);

      scanf(”%s“,s);

      c=atoi(s);

      }

      while(c<1||c>6);

      return c;

      n”);n“);n”);n“);

      n”);

      }

      int main(){

      struct airline air[MAXSIZE]=

      {

      {“harbin”,“beijing”,“1”,“12:00”,“14:00”,30,30},{“harbin”,“shanghai”,“2”,“10:00”,“13:00”,20,20},{“harbin”,“beijing”,“3”,“13:30”,“10:00”,50,50},{“harbin”,“guangzhou”,“4”,“17:00”,“21:00”,50,50},{“harbin”,“dalian”,“5”,“14:00”,“17:00”,40,40}

      };

      start=air;

      while(1)

      {

      system(“cls”);

      switch(menu_select())

      {

      case 1:

      list();

      break;

      case 2:

      search();

      break;

      case 3:

      order();

      break;

      case 4:

      returnticket();

      break;

      case 5:

      exit(0);

      }

      getch();

      } }

      經(jīng)驗體會

      1、通過設計飛機訂票系統(tǒng),加深了對鏈表的運用和理解。

      2、通過多組測試數(shù)據(jù),發(fā)現(xiàn)了程序的問題,并做了調(diào)整、3、通過設計選擇菜單,對選擇結構有更深刻的了解。

      第三篇:C語言課程設計——飛機訂票系統(tǒng)源代碼

      #include //標準輸入、輸出頭文件 #include //包含字符串函數(shù)處理頭文件 #include

      //包含access函數(shù)的頭文件 #define N 9999

      //定義最多的航班數(shù)

      #define PRINT “%dtt%stt%stt星期%stt%dn ”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count

      //宏定義輸出格式

      struct air

      //定義結構體數(shù)組 { int num;

      //定義航班號

      char start[20];//航班起始站

      char over[20];//終點站

      char time[10];//飛行時間

      int count;

      //機票數(shù)量 }s[N];

      int i,m=0;

      //定義全局變量 char ii[10];

      void add();//函數(shù)聲明增加航班信息函數(shù) void print();

      //顯示航班信息 void search();//查找航班信息 void dingpiao();//訂票業(yè)務 void tuipiao();//退票 void read();//讀取文件

      void save();//保存文件 void output();//輸出格式 void paixu();//航班排序 void chushihua();//系統(tǒng)初始化 void build();//建立數(shù)據(jù)文件 void paixu1();//按航班號從小到大排序 void paixu2();//從大到小

      void main()//主函數(shù) { int j;

      chushihua();//系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)文件

      printf(“

      歡迎使用飛機訂票系統(tǒng)n”);//打印出系統(tǒng)主界面

      do {

      printf(“================================== ”);

      printf(“1.增加航班信息n”

      “t2.瀏覽航班信息n”

      “tt3.查找航班信息(按航班號)tt╮(╯_╰)╭n”

      “ttt4.航班排序(按航班號)n”

      “tttt5.訂票業(yè)務n”

      “to(︶︿︶)ottt6.退票業(yè)務n”

      “tttttt0.退出n”);printf(“================================== ”);

      printf(“請在0-6中選擇以回車鍵結束: ”);scanf(“%d”,&j);switch(j){

      case 1: add();//調(diào)用增加航班函數(shù)

      break;

      case 2:print();//調(diào)用顯示模塊

      break;

      case 3:search();//調(diào)用查找模塊

      break;

      case 4:paixu();//調(diào)用排序函數(shù)

      break;

      case 5:dingpiao();//調(diào)用訂票模塊

      break;

      case 6:tuipiao();//調(diào)用退票模塊

      break;

      case 0:

      //退出系統(tǒng)

      save();

      printf(“謝謝使用,再見!”);

      break;} }while(j!=0);//判斷是否調(diào)用其他函數(shù)

      }

      void chushihua()//定義系統(tǒng)初始化函數(shù) { if(access(“hangban.dat”,0)){

      build();} else

      read();} void build()//定義建立數(shù)據(jù)文件函數(shù) { FILE *fp;//定義文件指針

      if((fp=fopen(“hangban.dat”,“wb”))==NULL)//打開文件并判定是否出錯

      {

      printf(“創(chuàng)建文件失敗!”);//打印出錯提示

      getchar();

      return;} printf(“請依次輸入航班信息(以回車鍵結束):n”);

      //打印提示信息

      printf(“------------n”);for(i=0;i

      printf(“請輸入航班號: ”);

      scanf(“%d”,&s[i].num);//輸入航班號

      printf(“請輸入起始站: ”);

      scanf(“%s”,s[i].start);//輸入起始站

      printf(“請輸入終點站: ”);

      scanf(“%s”,s[i].over);//輸入終點站

      printf(“請輸入時間(星期幾): ”);

      scanf(“%s”,s[i].time);//輸入時間

      printf(“請輸入機票數(shù): ”);

      scanf(“%d”,&s[i].count);//輸入機票數(shù)

      fwrite(&s[i],sizeof(struct air),1,fp);

      m++;

      printf(“添加完畢,是否繼續(xù)添加?請鍵入y或n以回車鍵結束:”);

      scanf(“%s”,ii);

      if(strcmp(ii,“y”)!=0)

      //判斷是否繼續(xù)添加航班信息

      {

      fclose(fp);

      //關閉文件

      return;

      } } }

      void read()

      //定義讀取文件函數(shù) { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){

      printf(“創(chuàng)建文件失敗!”);

      getchar();

      return;} i=0;while(!feof(fp)){

      fread(&s[i],sizeof(struct air),1,fp);//逐塊讀取數(shù)據(jù)

      i++;

      m++;//計算存在航班數(shù)

      } m--;fclose(fp);}

      void save()//定義保存函數(shù) { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL)

      {

      printf(“創(chuàng)建文件失敗!”);

      getchar();

      return;} for(i=0;i

      //逐塊保存數(shù)據(jù)

      fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}

      void add()//定義增加航班信息函數(shù) { do{

      printf(“請依次輸入您要增加的航班信息(以回車鍵結束): n”);

      //打印提示信息

      printf(“------------n”);

      printf(“請輸入航班號: ”);

      scanf(“%d”,&s[m].num);//讀取航班號

      printf(“請輸入起始站: ”);

      scanf(“%s”,s[m].start);//讀取起始站

      printf(“請輸入終點站: ”);

      scanf(“%s”,s[m].over);//讀取終點站

      printf(“請輸入時間: ”);

      scanf(“%s”,s[m].time);//讀取時間

      printf(“請輸入機票數(shù): ”);

      scanf(“%d”,&s[m].count);//讀取機票數(shù)

      m++;

      printf(“添加完畢,是否繼續(xù)添加?請鍵入y或n以回車鍵結束:”);

      scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判斷是否繼續(xù)添加 }

      void output()//定義輸出格式函數(shù) { printf(“航班號tt起始站tt終點站tt時間tt機票數(shù)n”);//信息標題

      for(i=0;i

      printf(PRINT);//打印出信息

      }

      void print()//定義顯示航班信息函數(shù) { printf(“n目前我們有如下航班:n”);output();

      //調(diào)用輸出格式函數(shù)

      printf(“n請按回車鍵返回上層菜單 ”);getchar();getchar();}

      void search()//定義查詢函數(shù) { int n;

      do {

      printf(“n請輸入航班號: ”);

      scanf(“%d”,&n);//輸入查詢的航班號

      for(i=0;i

      {

      if(s[i].num==n)//按航班號判定輸出條件

      {

      printf(“n您所查找的航班信息為:n ”);

      printf(“航班號tt起始站tt終點站tt時間tt機票數(shù) nn”);

      printf(PRINT);//顯示信息

      printf(“n查詢完畢,按回車鍵繼續(xù)”);

      getchar();

      getchar();

      return;

      } } printf(“n對不起,沒有您需要的信息!n ”);printf(“是否重新查找?請鍵入y或n以回車鍵結束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 }

      void dingpiao()//定義訂票業(yè)務函數(shù) { int n;char a[10]=“y”;do {

      search();//調(diào)用查詢模塊

      if(!strcmp(ii,“n”))

      {

      printf(“對不起!沒有找到您所需要的航班,所以不能訂票。n”);//未查找到所需航班

      printf(“n請按回車鍵返回上層菜單 ”);

      getchar();

      getchar();

      strcpy(ii,“n”);

      break;

      }

      do

      {

      printf(“請輸入您要訂的機票數(shù)(以回車鍵結束): ”);

      scanf(“%d”,&n);//輸入所訂機票數(shù)

      if(n<=0)

      //判定機票數(shù)是否出錯

      {

      printf(“輸入錯誤!至少需訂1張機票。n”);

      }

      else if(s[i].count==0)//判定機票是否售完

      {

      printf(“對不起,你所選擇的航班的機票已售完!n”);

      break;

      }

      else if(s[i].count!=0&&s[i].count>=n)//判定機票數(shù)是否大于等于訂票數(shù)

      {

      s[i].count=s[i].count-n;

      printf(“訂票成功!”);

      break;

      }

      else if(s[i].count

      {

      printf(“對不起,你所選擇的航班只剩 %d張機票n”, s[i].count);

      printf(“是否需要重新輸入機票數(shù)?請輸入y或n以回車鍵結束: ”);//判定是否重新輸入訂票數(shù)

      scanf(“%s”,a);

      }

      }while(!strcmp(a,“y”));

      printf(“是否需要訂其他航班的機票?請輸入y或n以回車鍵結束: ”);

      scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否繼續(xù)訂票 }

      void tuipiao()//定義退票函數(shù) { int n;char a[10];do {

      search();//調(diào)用查詢函數(shù)

      if(!strcmp(ii,“n”))

      {

      printf(“對不起!沒有找到您所需要的航班,所以不能退票。n”);

      printf(“n請按回車鍵返回上層菜單 ”);

      getchar();

      getchar();

      strcpy(ii,“n”);

      break;

      }

      printf(“請輸入您要退的機票數(shù)目: ”);

      scanf(“%d”,&n);//輸入所退票數(shù)

      if(n<=0)

      //判定票數(shù)是否有效

      printf(“輸入錯誤!至少需退1張機票?!?;

      else

      {

      s[i].count=s[i].count+n;

      printf(“退票成功!”);

      }

      printf(“是否繼續(xù)? 請鍵入y或n以回車鍵結束: ”);//判定是否繼續(xù)退票

      scanf(“%s”,a);}while(!strcmp(a,“y”));//判定并跳出循環(huán)

      }

      void paixu()//定義排序函數(shù) { int n;

      printf(“n******************************************************************************** ”);

      printf(“1.按航班號從小到大排序n”

      “t2.按航班號從大到小排序n”);printf(“******************************************************************************** ”);

      printf(“請在1-2中選擇以回車鍵結束: ”);scanf(“%d”,&n);//輸入排序方式

      switch(n){

      case 1:paixu1();//調(diào)用從小到大排序函數(shù)

      break;

      case 2:paixu2();//調(diào)用從大到小排序函數(shù)

      break;} printf(“排序后的航班信息為:n”);output();

      //顯示排序后航班信息

      printf(“n請按回車鍵返回上層菜單 ”);

      getchar();

      getchar();}

      void paixu1()//定義從小到大排序函數(shù) { int k,j;struct air t;for(i=0;i

      {

      k=i;

      for(j=i+1;j

      if(s[k].num>s[j].num)

      k=j;

      if(i!=k)

      {

      t=s[k];

      s[k]=s[i];

      s[i]=t;

      } } }

      void paixu2()//定義從大到小排序函數(shù) {

      } int k,j;struct air t;for(i=0;i

      if(s[k].num

      k=j;if(i!=k){

      t=s[k];

      s[k]=s[i];

      s[i]=t;} }

      第四篇:C語言程序設計——飛機訂票系統(tǒng)

      C語言程序設計——飛機訂票系統(tǒng)

      代碼如下:”

      #include“stdio.h” #include“stdlib.h” #include“string.h”

      #defineLENsizeof(structplane)#defineMAX 10;structplane { char destination[12];char num[10];char time[12];int price;int amount;};typedefstructplanePLANE;PLANE a[100];void menu();void input();void search();void preserve();void planeadd();void delplane();

      void main(){ system(“cls”);menu();} void menu(){ char *menu[] = { ************** 歡迎進入飛機訂票系統(tǒng)*************,“ a:輸入航線 ”,“ b:查詢航線 ”,“ c:退訂票系統(tǒng) ”,“ d:追加航線 ”,“ e:刪除航線 ”,“ f: 退出 ”,“****************************************************” };int i;char NO;int quit = 0;do

      {

      system(“cls”);

      for(i = 0;i<9;i++)

      printf(“n%s”, menu[i]);

      printf(“n請輸入服務代碼a,b,c,d,e或fn”);

      NO = getchar();

      switch(NO)

      {

      case'a': input();break;

      case'b': search();break;

      case'c': preserve();break;

      case'd': planeadd();break;

      case'e': delplane();break;

      case'f': quit = 1;break;

      } } while(!quit);}

      void input(){ int i, n;FILE *fp;system(“cls”);if((fp = fopen(“D:file”, “wb”))== NULL){

      printf(“error!n”);exit(0);} printf(“n請輸入航班總數(shù)n:”);scanf(“%d”, &n);printf(“n請按下面提示輸入航班信息:起點站:沈陽”);for(i = 0;i

      printf(“nt請輸入終點:”);

      scanf(“%s”, a[i].destination);

      printf(“t 航班班次:”);

      scanf(“%s”, a[i].num);

      printf(“t 時間:”);

      scanf(“%s”, a[i].time);

      printf(“t 票價:”);

      scanf(“%d”, &a[i].price);

      printf(“t機票總數(shù):”);

      scanf(“%d”, &a[i].amount);

      fwrite(&a[i], sizeof(PLANE), 1, fp);} fclose(fp);}

      void search(){ int i, j = 0, k = 101;char str[12];FILE *fp;PLANE b[5];if((fp = fopen(“D:file”, “rb”))== NULL){

      printf(“error!n”);

      exit(0);} printf(“n請輸入航班號:”);scanf(“%s”, str);while(fread(&b[j], LEN, 1, fp)!= 0)

      j++;for(i = 0;i

      if(strcmp(b[i].num, str)== 0)

      {

      printf(“沈陽至%s 航班號:%s 時間:%s 票價:%d 剩余票數(shù):%dn”, b[i].destination, b[i].num, b[i].time, b[i].price, b[i].amount);

      k = i;

      } if(k == 101)

      printf(“對不起,沒有您需要的航線?!?;fclose(fp);system(“pause”);}

      void preserve(){ int a = 0, i = 0, k, m, n, x;char str[12];PLANE preserve[10];FILE *fp;if((fp = fopen(“D:file”, “rb”))== NULL){

      printf(“error!n”);

      exit(0);} printf(“請輸入航班號:”);scanf(“%s”, str);while(fread(&preserve[i], LEN, 1, fp)!= 0){

      if(strcmp(preserve[i].num, str)== 0)

      printf(“沈陽至%s 航班號:%s 時間:%s 價格:%d 剩余票數(shù):%d”, preserve[i].destination, preserve[i].num, preserve[i].time, preserve[i].price, preserve[i].amount);

      k = i;

      i++;} fclose(fp);printf(“n請輸入訂退票代碼:0-訂票 1-退票”);scanf(“%d”, &m);if(m == 0){

      printf(“沈陽至%s 航班號:%s 時間:%s 價格:%d元剩余票數(shù):%d”, preserve[k].destination, preserve[k].num, preserve[k].time, preserve[k].price, preserve[k].amount);

      printf(“n請輸入訂票總數(shù)n:”);

      scanf(“%d”, &n);

      x = preserve[k].price*n;

      printf(“n應付款%d元”, x);

      preserve[k].amount = preserve[k].amount1;

      del = 1;

      printf(“n成功刪除信息!!”);} if(del == 0)

      { printf(“系統(tǒng)中不存在要刪除的信息!”);menu();} else { if((fp = fopen(“D:file”, “wb+”))== NULL);{printf(“文件有錯誤不能打開!”);

      exit(0);

      } } for(i = 0;i

      fwrite(&delplane[i], LEN, 1, fp);

      fclose(fp);} }

      第五篇:數(shù)據(jù)庫課程設計+飛機訂票系統(tǒng)

      飛機訂票系統(tǒng)

      1.概述(設計題目與可行性分析)

      1.1設計題目:飛機訂票系統(tǒng)

      1.2可行性分析

      飛機訂票系統(tǒng)是為機場工作人員和客戶提供訂票退票等與機票相關內(nèi)容的管理系統(tǒng),方便機場工作人員對機票的管理,以提高機場工作人員對機票管理工作的效率。當前飛機訂票問題:手工訂票所產(chǎn)生的客座率低。而我們的目標是:建立一個飛機訂票系統(tǒng)數(shù)據(jù)庫。

      1.2.1研究現(xiàn)有系統(tǒng),畫現(xiàn)有系統(tǒng)的流程圖

      了解當前系統(tǒng)能夠完成的功能及組成

      航班管理:票據(jù)管理

      售票點:直接面向用戶 航班管理

      票據(jù)管理

      票庫

      訂票庫

      訂票管理

      出售管理

      打印機票

      售票點1 售票點n

      現(xiàn)有系統(tǒng):票據(jù)都分布在各個售票點

      1.2.2導出新系統(tǒng)的高層邏輯結構

      數(shù)據(jù)流圖的基本符號:

      數(shù)據(jù)源/終點(人機界面):

      加工處理:

      文件名

      文件: 數(shù)據(jù)流名

      數(shù)據(jù)流: 票價信息

      機票

      查訂票號

      訂票處理

      客戶信息

      出票處理

      訂票記錄

      顧客

      訂票信息

      訂票號

      庫存信息

      票價信息

      票價管理

      航班管理

      航班信息

      操作員

      航班信息

      保存

      新系統(tǒng)的數(shù)據(jù)流圖:

      說明:流向文件的數(shù)據(jù)流的名可以省略

      1.2.3可行性分析報告

      隨著Internet的迅速發(fā)展和用戶數(shù)量的急劇增加,互聯(lián)網(wǎng)對于企業(yè)和事業(yè)單位的運營和發(fā)展日益重要,網(wǎng)上交易也逐漸被人們認可,并成為未來交易的發(fā)展方向。在這種情況下,很多原有的C/S模式的系統(tǒng)也逐步向B/S模式靠攏,飛機訂票系統(tǒng)也不例外。

      飛機訂票系統(tǒng)是飛機旅游服務信息系統(tǒng)的一個重要組成部分。為旅客提供優(yōu)質(zhì)便捷的服務,為了提高飛機客運的售票效率,豐富飛機客運的營銷手段,飛機售票總站的下屬代售點可以通過公用的互聯(lián)網(wǎng)資源,建立數(shù)據(jù)庫,實現(xiàn)網(wǎng)上的售票,查詢及管理工作。

      2.系統(tǒng)目標和設計原則

      2.1系統(tǒng)目標:

      建立一個飛機訂票系統(tǒng)數(shù)據(jù)庫。

      2.1.1系統(tǒng)簡介:

      本系統(tǒng)是專為乘坐飛機的旅客準備的,旅客只需把自己的信息(姓名.性別.工作單位.身份證號.旅行時間.旅行目的地)預先交給旅行社,旅行社就可以將信息輸入本系統(tǒng),系統(tǒng)就可以為旅客安排航班,打印出取票通知和帳單。旅客只要在飛機起飛的前一天憑取票通知單和帳單交款取單,系統(tǒng)校對無誤即印出機票給旅客。

      2.2設計原則

      2.2.1根據(jù)實際情況考慮三種可行性

      技術可行性、經(jīng)濟可行性、操作可行性

      2.2.2提出侯選方案、提出各種各樣的實現(xiàn)方案

      主機(純主機型、C/S型)、開發(fā)環(huán)境、網(wǎng)絡方案、對提出的每個方案進行成本估計

      硬件、軟件費用投資(根據(jù)各公司的報價)開發(fā)成本估計(任務估算法)

      運行費用、投資回收期

      純收入:通過本系統(tǒng)的運行、投資回收后的收入

      3、描述推薦理由:分別從技術、經(jīng)濟、用戶、投資方的不同角度考慮

      3.支撐環(huán)境規(guī)劃

      3.1整體系統(tǒng)運作圖

      3.2運行環(huán)境

      服務器:硬件配置:CPU Intel P4 1.2G以上

      內(nèi)存256 硬盤 80G以上

      軟件配置:Windows 2000/2003 SERVER SQL SERVER 2000 4.系統(tǒng)功能結構

      1、錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結構、具體數(shù)據(jù)自定)

      2、查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;

      3、訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結構自己設定)可以訂票,如果該航班已經(jīng)無票,可以提供相關可選擇航班;

      4、退票:可退票,退票后修改相關數(shù)據(jù)文件;

      客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。

      5、修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件。

      5.數(shù)據(jù)庫設計

      5.1概念結構設計

      E-R圖如下:

      5.2邏輯結構設計

      1.航空公司表:AIRLINE 2.客戶表CUSTOMER

      3、飛機表PLANE 4.航線表LINE 5.航班表FLIGHT 6.訂票表BOOKTICKET

      5.3實現(xiàn)設計

      實現(xiàn)以下操作:

      1、注冊航空公司:

      2、增加飛機:

      3、增加航線:

      4、增加航班:

      5、增加客戶:

      6、建立一個訂票的存儲過程,存儲過程名為Book_Ticket,請完成以下存儲過程,實現(xiàn)訂票的操作:

      a)指定要訂的航班號(HID)及客戶的編號(KID);

      b)先查看客戶是否為特殊客戶,如果不是,票價不打折扣;

      c)否則如果客戶航程超過5萬公里,票價7折,超過15萬公里,票價打5折;

      d)查看客戶訂票以后,所有乘客的票數(shù)是否超過總的座位數(shù),如果超過,回滾訂票操作;

      e)要求在操作過程中使用到事務技術。

      CREATE PROCEDURE Book_ticket @HID VARCHAR(20)

      @HID VARCHAR(20)

      AS DECLARE @TRANS_NAME VARCHAR(20)select @TRANS_NAME=’ ’

      BEGIN TRANSACTION DECLARE @Bookid int,@seats int,@IsSpec char(1)/*定義訂票里程DIST、折扣率discount、總的訂票里程distance、票價PRICE(實型)*/ select @Isspec=Isspec,@distance=Points FROM Customer where select @discount=1 IF @ BEGIN

      END /*選擇出票價*/ SELECT @PRICE=PRICE FROM FLIGHT WHERE /*加入客戶訂票信息*/

      /*將客戶新訂票里程的信息累計到用戶信息里面*/

      UPDATE SET WHERE /*查看客戶訂票后,是否超過可容納的座位數(shù)目,如果超過,取消所有操作*/ SELECT booked=count(*)FROM WHERE FID= /*查看額定座位容量*/ SELECT @seats=seatsnum FROM WHERE

      IF @BOOKED>@SEATS

      ELSE

      COMMIT TRANSACTION GO 7.運行這個訂票操作的存儲過程(自己設定客戶及航班)

      book_ticket , 8.事務運行成功后,再顯示各表的數(shù)據(jù),按表分別寫出來。

      6.總體實施計劃

      6.1可行性研究:

      研究現(xiàn)有系統(tǒng),畫現(xiàn)有系統(tǒng)的流程圖,編寫可行性分析報告

      6.2進行數(shù)據(jù)庫設計:

      概念結構設計,邏輯結構設計,實現(xiàn)設計

      6.3概要設計:

      從數(shù)據(jù)流圖導出初始結構圖,設計優(yōu)化 6.4詳細設計:

      結構化的程序設計,采用流程圖的形式

      6.5保密設計

      1.每個用戶需要注冊才能進入航空訂票信息系統(tǒng),并進行網(wǎng)上訂票的。用戶必須

      用自己真實的身份進行注冊。

      2.系統(tǒng)要另外在備一份數(shù)據(jù)庫,防止系統(tǒng)出現(xiàn)錯誤而使數(shù)據(jù)信息丟失的可能性。

      3.系統(tǒng)要安裝防火墻,防止黑客入侵破壞系統(tǒng)。還有就是安裝殺毒軟件,防止

      病毒入侵而導致系統(tǒng)癱瘓。

      6.6維護設計

      系統(tǒng)設置提供管理員操作頁面:

      1.提供管理員密碼,方便維護操作.2.固定時間對系統(tǒng)進行維護和檢測.3.若系統(tǒng)出現(xiàn)癱瘓時,可出動備用系統(tǒng)維持運轉.4.定期對系統(tǒng)進行更新整頓清空.7.總結

      這次數(shù)據(jù)庫課程設計的“飛機訂票系統(tǒng)”,通過近一周的上機操作,充分應用了所學的數(shù)據(jù)庫的知識,并去圖書館查閱了一些書集和上網(wǎng)搜索一部分相當資料,粗略設計出該系統(tǒng)??傮w上來說,這次課程設計還是比較成功的,充分運用了所學的軟件工程設計、數(shù)據(jù)庫的設計,設計出E-R圖、流程圖、數(shù)據(jù)庫基本表,從整體規(guī)劃出了系統(tǒng)的運行環(huán)境和系統(tǒng)實現(xiàn)的功能。

      當然,由于學藝不精,在課程設計的過程也碰到的一些問題。其中,畫E-R圖時,各實體中的關系的確定,由于對系統(tǒng)還不夠了解而找不到一個準確的詞來形容;總體規(guī)劃時,材料太多,不易整理;相關數(shù)據(jù)庫技術方面沒有多注意,這次課程設計的重點只在對整個系統(tǒng)的總體思路設計。

      其實這些通過最近的課程設計覺得最重要一點就是:我們一定要自己動手,這樣才能真正的學到東西。書本知識固然重要,但我們更要學會將書本知識應用到實際的工作中。實踐中才會發(fā)現(xiàn)錯誤,也才能改進,才能達到學習的最終目的。

      最后感謝在這次課程設計中幫助過我的老師,同學!8.參考文獻

      物流信息系統(tǒng)

      趙剛 四川大學人民出版社 2002/9 物流信息管理

      尹濤 東北財經(jīng)大學出版社

      2005/1 數(shù)據(jù)庫系統(tǒng)概論

      王珊 薩師煊 高等教育出版社 2006/5 數(shù)據(jù)庫技術與應用-Access2000篇 郭力平人民郵電出版社

      2002/8 軟件設計師教程 陳平禇華

      清華大學出版社 2006/6 文章引用自:

      下載數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》word格式文檔
      下載數(shù)據(jù)結構課程設計c語言版《飛機訂票系統(tǒng)》.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        飛機訂票系統(tǒng)課程設計(共五則)

        《銀行帳戶管理系統(tǒng)》設計報告 飛機航班訂票系統(tǒng)概要設計 根據(jù)需求分析中的描述,知道需要三個struct結構體類型和一個class的類 struct person //定義旅客信息結構體類型 {......

        圖書管理系統(tǒng)(含源代碼)c語言_數(shù)據(jù)結構課程設計報告

        數(shù)據(jù)結構大作業(yè) 121279044 伍楊 數(shù)據(jù)結構大作業(yè) 圖書管理系統(tǒng) 工程管理 121279044 伍楊 目錄 一、 二、 三、 題目要求 .......................................................

        飛機訂票系統(tǒng)風險評估

        飛機訂票系統(tǒng) —項目風險評估報告 本文檔的范圍和目的 本文主要針對飛機訂票系統(tǒng)軟件開發(fā)涉及到的風險,包括在軟件開發(fā)周期過程中可能出現(xiàn)的風險以及軟件實施過程中外部......

        C語言機票訂票管理系統(tǒng)源代碼

        #include //標準輸入、輸出頭文件 #include //包含字符串函數(shù)處理頭文件 #include //包含access函數(shù)的頭文件 #include #include #include #include #define N 9999 //定......

        1 飛機訂票系統(tǒng)可行性研究報告

        文檔編號: 版本號:v1.0 可行性研究報告 項目名稱 飛機訂票系統(tǒng) 項目負責人何柳青 文檔編寫者阿依古麗.麥麥提 項目開發(fā)者計算機081第二組 2010年9月26日 目錄 1.引言 ..........

        C語言課程設計火車票系統(tǒng)源代碼

        #include #include #include //火車票結構體類型// typedef struct Node {int num; //編號// char name[20]; //起點和終點// char time[5]; //出發(fā)時間// int price; /......

        C語言課程設計學生選課系統(tǒng)

        題目一、學生選課管理系統(tǒng) 第一部分:課程設計名稱、目的、要求 第二部分:程序總體設計思路 第三部分:程序功能劃分、圖示及流程圖 第四部分:程序設計數(shù)據(jù)、運行結果 第五部分:程......

        C語言課程設計 倉庫管理系統(tǒng)

        C語言課程設計 倉庫管理系統(tǒng) #include struct cangku { int num; char name[20]; char introdution[50]; float square; }; typedef struct cangku Cangku; int Input(......