




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 說 明 書課程名稱 題 目 航空客運訂票系統的設計與實現 院 系 電子信息工程學院 班 級 計算機科學與技術 學生姓名 指導教師 日 期 2011.12.19-2011.12.30 數據結構課程設計任務書課程設計題目航空客運訂票系統的設計與實現1 / 20姓名學號專業班級計算機科學與技術組別組長同組成員 指導教師課程設計目的設計一個航班訂票系統,提高對信息管理、信息查找和排序算法的應用能力。課程設計環境386以上的微機上進行,運行環境為TurboC課程設計任務和要求1、承辦訂票業務:根據客戶提出的要求(飛機抵達城市、起降時間、訂票數量)查新該航班信息(包括票價、折扣和剩余位置)
2、,若滿足要求,則為客戶辦理訂票手續,輸出座位號。2、承辦退票業務:根據客戶提供的情況(航班號、訂票數量),為客戶辦理退票手續。3、 查詢功能:a) 查詢航線信息:根據飛機降落地點,輸入下列信息:航班號、飛機號、起降時間、航班票價、票價折扣和剩余位置。b) 查詢客戶預訂信息:根據客戶證件號,輸出下列信息:航班號、飛機號和座位號。參考文獻1、楊秀金等. 數據結構(C語言版). 西安電子科技大學出版社20042、譚浩強. C語言程序設計. 清華大學出版社. 20023、李春保. 數據結構教程上機實驗指導. 清華大學出版社. 2005 時 間 進 度 安 排序號起止日期工 作 內 容12011.12.
3、192011.12.22下達課程設計任務、查閱資料、確定方案 22011.12.232011.12.28編寫程序、調試、運行 32011.12.29驗收、撰寫課程設計報告 42011.12.30驗收、撰寫課程設計報告、提交文檔 指導教師: 時間: 2011.12.8航空客運訂票系統的設計與實現 一、簡介1設計目的:1 數據結構課程設計是綜合運用數據結構課程中學到的幾種典型數據結構,以及程序設計語言(C語言),自行實現一個較為完整的應用系統的設計與開發2 通過課程設計,自己通過系統分析、系統設計、編程調試,寫實驗報告等環節,進一步掌握應用系統設計的方法和步驟,靈活運用并深刻理解典型數據結構在軟件
4、開發中的應用 。3 學會將知識應用于實際的方法,提高分析和解決問題的能力,增加綜合能力。 航空空訂票系統:(1)熟練掌握鏈表存儲結構及其建立過程和常用操作;(2)熟練掌握隊列的建立過程和常用操作;(3)學會自己調試程序的方法并掌握一定的技巧。2問題的描述:航空客運訂票的業務包括查詢航線和客票預定的信、客票預定和辦理退票等,設計一個程序以使上述任務借助計算機完成。 二、數據結構的設計:(1)航班信息:飛機抵達城市、航班號、飛機號、起降時間、航班票價、票價折扣、總位置和剩余位置、以訂票的客戶名單。(2)客戶信息:客戶姓名、證件號、座位號。三、功能(函數)設計: 1 每條航線所涉及的信息有:終點站名
5、、航班號、飛機號、飛行日(星期幾)、載客量、余票量、票價格,折扣,已訂票的客戶名單(包括姓名、訂票量、艙位等級1,2或3)以及等候替補的客戶名單(包括姓名、所需票量); 2 全部數據可以只放在內存中; 3 系統能實現的操作和功能如下: a) 查詢航線: 根據旅客提出的終點站名輸出下列信息:航班號、飛機號、星期幾飛行,最近一天航班的日期和余票額; b) 承辦訂票業務: 根據客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續, 輸出座位號;若已滿員或余票額少于定票額,則需重新詢問客戶要求。若需要,可登記排隊候補; c) 退票業務: 根據客戶提供的情況(日期、航班
6、),為客戶辦理退票手續,然后查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊候補的客戶。系統結構圖(功能模塊圖)功能模塊說明(1)顯示已初始化的全部航線信息(2)瀏覽已訂票客戶信息(3)根據客戶提出的終點站名,調用find()函數尋找航線信息,調用list()函數輸出航線信息(4)辦理訂票業務:根據客戶提供的航班號進行查詢航線信息,若客戶訂票額超過乘員定票總額,退出,若客戶訂票額末超過余票量,訂票成功并登記信息,在訂票乘員名單域中添加客戶信息;如果暫時沒有票,詢問客戶是否要排隊等侯,如果是,則在等候隊列增加該客戶的訂票信息。
7、(5)辦理退票業務:調用查詢函數,根據客戶提供的航線進行搜索根據客戶提供的姓名到訂票客戶名單域進行查詢。退票成功后,重新將航線名單域指向訂票單鏈表的頭指針。根據隊列中從出的客戶信息判斷是否滿足要求,如果滿足,則將該客戶的信息插入到乘客信息鏈表中。(6)退出本系統四、界面設計: 界面簡潔易懂,包括1.瀏覽航線信息;2.瀏覽已訂票客戶信息;3.查詢航線;4.辦理訂票業務;5.辦理退票業務;6.查看剩余票數并排序。五、程序設計:六、運行與測試:1、測試的數據及其結果:(1)通過按鍵“1”瀏覽航線信息,結果輸出五行事先輸入的數據。(2)通過按鍵“3”查詢航線,輸入終點站名后,結果輸出相關航線信息。(3
8、)通過按鍵“4”辦理訂票業務,依次輸入航班號,訂票數量,客戶姓名,證件號后,結果輸出客戶的座位號,訂票成功。(4)通過按鍵“2”瀏覽已定票客戶信息,輸入航班號后,結果顯示客戶信息。(5)通過按鍵“5”辦理退票業務,輸入航班號,客戶名后,結果退票成功。(6)通過按鍵“6”查看剩余票數并排序,結果正確。(7)通過按鍵“0”退出系統,結果正確。2、運行與測試期間遇到的問題及其解決辦法。(1)因本人能力有限,在編寫的時候只使用了相對較為簡單的基礎語言 ,代替了相對較為復雜的語言,降低了運行效率。(2)程序在起初設計的時候,經常出現溢出錯誤,而且不只一處。為了修正這些溢出錯誤,耗費了大量的時間,修正解釋
9、之后再看源程序,才發現原來只是因為開始的函數定義的數據類型出現了問題,對函數的定義不清楚,字符的不正確定義造成了后期大量的糾錯工作, (3)由于忘記了一些c語言的規范使得在調試過程中一些錯誤沒有發現。例如,調用函數時,數組只需要傳遞數組名即可;字符0和整形的0是不同的文明不可以直接對其畫等號。(4)測試用例具有一定的廣泛性。運行程序時輸入了多種不同字符信息,經過多次修改結果達到了預期效果。說明程序具有一定的可靠性和穩定性。七、設計后的思考:經過這次課程設計,我對調試掌握的更加熟練了,改變了過去只調試不知道如何對照程序語言修改程序的壞習慣,對調試也有了新的認識,意識到了程序語言的規范性以及我們在
10、編程時要有嚴謹的態度,同時在寫程序時如果加一定量的注釋,既增加了程序的可讀性,也可以使自己在讀程序時更容易。代碼:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXSIZE 5typedef struct wat_ros char name10; int req_amt; struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front; qptr rear;li
11、nkqueue;typedef struct ord_ros char name10; int ord_amt; int grade; struct ord_ros *next;linklist;struct airline char ter_name10; char air_num10; char plane_num10; char date7; int tkt_amt; int tkt_sur;int tkt_pri; int tkt_reb; linklist *order; linkqueue wait;lineinfo;struct airline *start;struct air
12、line airMAXSIZE="北京","1","A1401","星期日",3,1,800,9, "上海","2","H1102","星期一",2,5,600,6, "洛陽","3","L1003","星期五",1,3,100,4,"杭州","4","H1035","星期三",
13、5,4,700,5,"呼和浩特","5","F1100","星期六",6,3,800,5;void display(struct airline *info)printf("%8st%3st%st%7st%7dt%10dt%5dt%3dn",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->t
14、kt_reb);void list() struct airline *info; int i=0; info=start; printf("終點站tt航班號t飛機號t飛行日期t載客量t余票量t票價格t折扣n"); while(i<MAXSIZE) display(info); info+; i+; printf("nn");void search() struct airline *info,*find(); char name10; int i=0; info=start; printf("請輸入終點站名:"); scanf
15、("%s",name); while(i<MAXSIZE) if(!strcmp(name,info->ter_name) break; info+; i+; if(i>=MAXSIZE) printf("對不起,該航線未找到!n"); else printf("終點站tt航班號t飛機號t飛行日期t載客量t余票量t票價格t折扣n"); display(info); struct airline *find() struct airline *info; char number10; int i=0; info=sta
16、rt; printf("請輸入航班號:"); scanf("%s",number); while(i<MAXSIZE) if(!strcmp(number,info->air_num) return info; info+; i+; printf("對不起,該航線末找到!n"); return NULL;void prtlink() linklist *p; struct airline *info; info=find(); p=info->order; if(p!=NULL) printf("客戶姓名
17、訂票數額 客戶證件號n"); while(p) printf("%stt%dt%dn",p->name,p->ord_amt,p->grade); p=p->next; else printf("該航線沒有客戶信息!n");linklist *insertlink(linklist *head,int amount,char name,int grade) linklist *p1,*new1; p1=head; new1=(linklist *)malloc(sizeof(linklist); if(!new1) pr
18、intf("nOut of memory!n");return NULL; strcpy(new1->name,name); new1->ord_amt=amount; new1->grade=grade; new1->next=NULL; if(head=NULL) head=new1;new1->next=NULL; else head=new1; new1->next=p1; return head;linkqueue appendqueue(linkqueue q,char name,int amount) qptr new1;n
19、ew1=(qptr)malloc(sizeof(qnode);strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front=NULL) q.front=new1;else q.rear->next=new1;q.rear=new1;return q;void order() struct airline *info; int amount,grade; char name10; info=start; if(!(info=find() return; printf("請輸入你訂票
20、所需要的數量:"); scanf("%d",&amount); if(amount>info->tkt_amt) printf("n對不起,您輸入的票的數量已經超過乘員定額!"); return; if(amount<=info->tkt_sur) int i; printf("請輸入您的姓名(訂票客戶):"); scanf("%s",name); printf("請輸入%s票的證件號:",name); scanf("%d",&
21、;grade); info->order=insertlink(info->order,amount,name,grade); for(i=0;i<amount;i+) printf("%s的座位號是:%dn",name,info->tkt_amt-info->tkt_sur+i+1); info->tkt_sur-=amount; printf("n祝您乘坐愉快!n"); else char r; printf("n已經沒有更多的票,您需要排隊等候嗎?(Y/N)"); r=getch(); pri
22、ntf("%c",r); if(r='Y'|r='y') printf("n請輸入您的姓名(排隊訂票客戶):"); scanf("%s",name); info->wait=appendqueue(info->wait,name,amount); printf("n注冊成功!n"); else printf("n歡迎您下次再次訂購!n"); void return_tkt() struct airline *info; qnode *t,*back,*
23、f,*r; int grade; linklist *p1,*p2,*head; char cusname10; if(!(info=find() return; head=info->order; p1=head; printf("請輸入你的姓名(退票客戶):"); scanf("%s",cusname); while(p1!=NULL) if(!strcmp(cusname,p1->name) break; p2=p1;p1=p1->next; if(p1=NULL) printf("對不起,你沒有訂過票!n")
24、;return; else if(p1=head) head=p1->next; else p2->next=p1->next; info->tkt_sur+=p1->ord_amt; grade=p1->grade; printf("%s成功退票!n",p1->name); free(p1); info->order=head; f=(info->wait).front; r=(info->wait).rear; t=f; while(t) if(info->tkt_sur=info->wait.fr
25、ont->req_amt) int i; info->wait.front=t->next; printf("%s訂票成功!n",t->name); for(i=0;i<t->req_amt;i+) printf("%s的座位號是:%dn",t->name,(info->tkt_sur)-i); info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade);
26、free(t); break; back=t;t=t->next; if(info->tkt_sur)>=(t->req_amt)&&t!=NULL) int i; back->next=t->next; printf("%s訂票成功!n",t->name); for(i=0;i<t->req_amt;i+) printf("<%s>'s seat number is:%dn",t->name,(info->tkt_sur)-i); info->t
27、kt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break; if(f=r) break; void sort_tkt() int j; struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p+) for(q=p+1;q->tkt_sur;q+) if(p->tkt_sur<q->tkt_sur) t=*p; *p=*q; *q=t; printf("終點站tt航班號t飛機號t飛行日期t載客量t余票量t票價格t折扣n"); for(j=0;j<MAXSIZE;j+) display(info); info+; int menu_select() i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025員工住房協議合同樣本
- 2025授權印刷加工合同范本
- 2025標準版網約車服務承包合同范本
- 2025建筑工程合同模板詳解
- 七年級生物上冊 第二單元 第2章 第1節 細胞通過分裂產生新細胞教學設計 (新版)新人教版
- 2025室內裝修施工合同樣本
- 2025汽車銷售中介服務合同范文
- 《上海市場營銷策略》課件
- 2025版技術咨詢服務合同模板下載
- 《神秘宇宙探索》課件
- 書信作文(滿分范文)專練-上海新高考英語一輪總復習(解析版)
- DBJ04T 289-2020 建筑工程施工安全資料管理標準
- 機械精度設計基礎 課件 第六章 典型零件精度設計與檢測-3-螺紋
- 宏觀經濟學完整課件
- 2002版《水利工程施工機械臺時費定額》
- 人工智能賦能教師數字素養提升
- 學習方法教育分享模板
- 新能源設備安裝承攬合同三篇
- 中國船舶金融租賃行業深度分析、投資前景、趨勢預測報告(智研咨詢)
- 《EPS處理表面氧化鐵皮技術要求 》
- MCN機構運營流程優化與管理方案
評論
0/150
提交評論