數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 湖南工業(yè)大學課 程 設(shè) 計資 料 袋 計算機與通信 學院(系、部) 2009 2010 學年第 二 學期 課程名稱 數(shù)據(jù)結(jié)構(gòu) 指導(dǎo)教師 職稱 教授 學生姓名 專業(yè)班級 學號 題 目 航空客運訂票系統(tǒng) 成 績 起止日期 2010年6 月 28日 2010年 7 月 日目 錄 清 單序號材 料 名 稱資料數(shù)量備 注1課程設(shè)計任務(wù)書12課程設(shè)計說明書13課程設(shè)計圖紙1張456 湖南工業(yè)大學課程設(shè)計任務(wù)書2009 2010 學年第 二 學期 計算機與通信 學院(系、部) 專業(yè) 班級課程名稱: 數(shù)據(jù)結(jié)構(gòu) 設(shè)計題目: 航空客運訂票系統(tǒng) 完成期限:自 2010 年 6 月 28日至 2010 年7 月 日

2、共 1 周內(nèi)容及任務(wù)一、設(shè)計的主要技術(shù)參數(shù)使用隊列讓預(yù)定客戶排隊等候已定客戶退票后再實現(xiàn)買票功能二、設(shè)計任務(wù)使用c語言實現(xiàn)各個模塊的功能.三、設(shè)計工作量 本人獨自完成這些基本要求,完成了航班信息的輸入,查詢航線的功能以及訂票和退票等功能的實現(xiàn)!進度安排起止日期工作內(nèi)容2010-6-27設(shè)計本程序思路2010-6-28實現(xiàn)子程序模塊函數(shù)2010-6-29將子程序和主程序構(gòu)建成完整的c源程序,并且進行相關(guān)編譯調(diào)試2010-6-30數(shù)據(jù)測試、形成文檔主要參考資料指導(dǎo)教師(簽字): 年 月 日系(教研室)主任(簽字): 年 月 日2數(shù)據(jù)結(jié)構(gòu)設(shè)計說明書數(shù)據(jù)結(jié)構(gòu)課程設(shè)計航空客運訂票系統(tǒng)起止日期: 2010

3、 年 6 月 28日 至 2010年 7 月 日學生姓名班級學號成績指導(dǎo)教師(簽字)計算機與通信學院(部)年 月 日湖南工業(yè)大學課程設(shè)計情況分析表課程設(shè)計名稱數(shù)據(jù)結(jié)構(gòu)設(shè)計周數(shù)17周學院(部)計算機與通信學院系(教研室)通信工程系指導(dǎo)教師文志誠學生專業(yè)、班級通信工程0903選題航空客運訂票系統(tǒng)成績分布優(yōu)良中及格不及格學生數(shù)百分比學生課程設(shè)計存在的主要問題改進措施及建議指導(dǎo)教師(簽字): 年 月 日系(教研室)主任(簽字): 年 月 日備注:本表在課程設(shè)計完成后由指導(dǎo)教師填寫,與課程設(shè)計資料一起存檔。 目錄1. 題目及需求分析 vi2. 概要設(shè)計 vii3. 詳細設(shè)計 x4. 調(diào)試分析 xix5.

4、 用戶手冊 xxi6. 測試結(jié)果 xxiii7. 附錄 程序清單 xxv題目:航空客運訂票系統(tǒng)擴展:增加了運行面板的顏色;增加添加了進入要密碼輸入功能;顯示功能比要求的多了些,意在增加程序的智能化一 . 需求分析( 1 ) 以線性表存儲航班信息,以隊列存儲預(yù)定客戶的名單。( 2 ) 設(shè)計交互界面 , 用戶只需輸入選擇就可做想做的事情.( 3 ) 用戶可以自己輸入航班信息的多少 , 然后由程序自動打印出航班信息.( 4 ) 一切操作都有向?qū)?二 . 概要設(shè)計1. 設(shè)定線性表的抽象數(shù)據(jù)類型定義 :adt list 數(shù)據(jù)對象 : d=ai|aiint, i = 0,1,2n , n0數(shù)據(jù)關(guān)系 : r

5、1= | ai-1,ai d,i=2,n 基本操作 :initlist(&l)操作結(jié)果 : 構(gòu)造一個空的線性表l.destroylist(&l)初始條件 : 線性表l已存在。操作結(jié)果 : 銷毀線性表l。clearlist(&l)初始條件 : 線性表l已存在。操作結(jié)果 : 將l重新置為空表。listempty(l)初始條件 : 線性表l已存在。操作結(jié)果 : 判斷線性表是否為空 adt list;2. 設(shè)定隊列的抽象數(shù)據(jù)類型adt queue數(shù)據(jù)對象 : d=ai|aiint,i=1,2,3,4,,n,n=0數(shù)據(jù)關(guān)系 : r1= | ai-1,ai d,i=2,n 基本操作 :initqueue(

6、&q)操作結(jié)果: 構(gòu)造一個空隊列q.destoryqueue(&q)初始條件: 隊列q已存在。操作結(jié)果: 隊列q被摧毀,不再存在。clearempty(q)初始條件: 隊列q已存在。操作結(jié)果: 將隊列q清為空隊列。enqueue(&q,e)初始條件: 隊列q已存在。操作結(jié)果: 插入元素e為q的新的隊尾元素。dequeue(&q,&e)初始條件: q為非空隊列。操作結(jié)果: 刪除q的隊頭元素,并用e返回其值。adt queue;3. 本程序包含3個模塊1) 主程序模塊:int main()主菜單函數(shù), 實現(xiàn)主要操作界面.return 0;/主函數(shù)2) 線性表模塊-實現(xiàn)線性表抽象數(shù)據(jù)類型3) 隊列模

7、塊-實現(xiàn)隊列抽象數(shù)據(jù)類型各模塊之間的調(diào)用如下: 主函數(shù)模塊主程序模塊隊列模塊線性表模塊 4. 求解預(yù)定票實現(xiàn)的偽碼算法:設(shè)定當前訂票的情況;do若與票數(shù)足夠,則則為客戶訂票;否則若客戶愿意等候買票則辦理預(yù)定票手術(shù)否則推出訂票功能while (票數(shù)存在); 三. 詳細設(shè)計工程文件視圖: 類視圖:-頭文件設(shè)計(部分)-1.源程序頭文件#include stdafx.h#include malloc.h#include math.h#include stdio.h#include stdlib.h#include string.h#include conio.h#include process.ht

8、ypedef struct yidingkehuint name;int dingpiaoliang;int chuangweidengji;struct yidingkehu *next1;yiding,*link;typedef struct denghoukehuint name;int piaoshu;int chuangweidengji;struct denghoukehu *next2;denghou,*qptr;typedef struct hangxianint zhongdianzhan;int hangbanhao;int feijihao;int feixingzhou

9、ri;int chengyuanzongshu;int yupiaoliang;struct hangxian *next;struct yidingkehu *yiding;struct denghoukehu *denghou;hangxian,*linklist;typedef structqptr front;qptr rear;linkqueue;struct hangxian *l=null;struct yidingkehu *h;linkqueue q;-實現(xiàn)文件(部分)-1. void hangbanxinxi()int i=1; while(i=1)if(!insertli

10、nklist(linklist) l) printf(不能再輸入航班信息!n);exit(0);printf(是否輸入航班信息?n);printf( 1:是n);printf( 2:否n);scanf(%d,&i);printf(n);2.int insertlinklist(linklist &l)linklist p;p=(linklist)malloc(sizeof(hangxian);if(!p) exit(0);printf(t請依次輸入下面幾項內(nèi)容:nn);printf(航班號n);scanf(%d,&p-hangbanhao);printf(飛機號n);scanf(%d,&p-f

11、eijihao);printf(終點站n);scanf(%d,&p-zhongdianzhan);printf(飛行周日n);scanf(%d,&p-feixingzhouri);printf(乘客總數(shù)n);scanf(%d,&p-chengyuanzongshu);printf(余票數(shù)n);scanf(%d,&p-yupiaoliang);p-yiding=(yidingkehu*)malloc(sizeof(yidingkehu);p-denghou=q.front=q.rear=(qptr)malloc(sizeof(denghoukehu);p-next=l-next;l-next=p

12、;return 1;3. void dingpiaoyewu() linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1; linkqueue q=q;int i,j,k,piao,yudingpiao=0,yidingpiao=0;if(!p-next )printf(沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入終點站:);scanf(%d,&i);printf(n);p=l-next;if(p)doif(!p)printf(對不起!沒有你要查詢的航班!nnn);break;j=p-zhongd

13、ianzhan-i;if(j=0)printf(t航班信息:n);printf(t航班號:%dn,p-hangbanhao);printf(t飛機號:%dn,p-feijihao);printf(t乘客總數(shù):%dn,p-chengyuanzongshu);printf(t飛行時間:周%dn,p-feixingzhouri);printf(t余票量:%dn,p-yupiaoliang);elsep=p-next;while(j!=0);if(j=0)doprintf(n請輸入你要定的票數(shù):);scanf(%d,&piao);printf(n);if(piaoyupiaoliang)h=p-yid

14、ing;if(h)h1=h;h=h-next1;h=(yiding*)malloc(sizeof(yiding);printf(t請輸入你的名字:);scanf(%d,&h-name);printf(n);printf(t你要的窗位等級:);scanf(%d,&h-chuangweidengji);printf(n);if(h-chuangweidengji =1)&(h-chuangweidengji dingpiaoliang=piao;h-next1 =h1-next1 ;h1-next1 =h;p-yupiaoliang=p-yupiaoliang -piao;printf(訂票成功!

15、n);j=2;elseprintf(沒有這等窗位!n);break;elseprintf(余票量:%dn,p-yupiaoliang);printf(余票量%d張不能滿足你的訂票量nnn,p-yupiaoliang );printf(是否要訂票?);printf(1:需要2:不需要3:預(yù)定);scanf(%d,&j);printf(n);if(j=3)struct denghoukehu *q1;printf(航班的票已經(jīng)售完!n);q.front =p-denghou;if(q.front =q.rear )printf(沒有人預(yù)定,是否預(yù)定?n);elseprintf(有人預(yù)定,是否預(yù)定?

16、n);printf(1預(yù)定:2:不預(yù)定n);scanf(%d,&k);printf(n);if(k=1)q1=(qptr)malloc(sizeof(denghou);printf(請輸入你的名字:);scanf(%d,&q1-name);printf(n);printf(請輸入你要預(yù)定的票數(shù):);scanf(%d,&q1-piaoshu);printf(n);printf(請輸入你要預(yù)定的窗位等級:);scanf(%d,&q1-chuangweidengji);if(q1-chuangweidengji 3)|(q1-chuangweidengji next2 =null;q.rear -n

17、ext2 =q1;q.rear =q1;printf(預(yù)定成功!n);while(j=1); else if(!p) struct denghoukehu *q1; printf(航班的票已經(jīng)售完!n); q.front =p-denghou; if(q.front =q.rear ) printf(沒有人預(yù)定,是否預(yù)定?n); else printf(有人預(yù)定,是否預(yù)定?n); printf(1預(yù)定:2:不預(yù)定n); scanf(%d,&k); printf(n); if(k=1) q1=(qptr)malloc(sizeof(denghou); printf(請輸入你的名字:); scan

18、f(%d,&q1-name); printf(n); printf(請輸入你要預(yù)定的票數(shù):); scanf(%d,&q1-piaoshu); printf(n); q1-next2 =null; q.rear -next2 =q1; q.rear =q1; printf(預(yù)定成功!n); 4. void chaxunhangxian()int i;printf(1:特定查詢2:全部查詢3:最近一天航班信息n);printf(請選擇功能:);scanf(%d,&i);printf(n);switch(i)case 1:tdcx();break;case 2:qbcx();break;case 3

19、:zjyt();break;5. void tdcx()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入終點站名字:);scanf(%d,&i);printf(n);dop=p-next ;if(p)j=p-zhongdianzhan-i;if(j=0)printf(t航班信息%d如下:n,k);printf(t航班號:%dn,p-hangbanhao);printf(t飛機號:%dn,p-feijihao

20、 );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;elseprintf(t沒有你要查詢的航班號!nn);break;while(j!=0);6.void qbcx()int k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elsedop=p-next ;if(p)printf(t航班信息%d如下:n,k);printf(t航班號:%dn,p-hangban

21、hao);printf(t飛機號:%dn,p-feijihao );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;while(p);7.void zjyt()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入特定某天的航班信息的日期!n);scanf(%d,&i);printf(t%d號最近一天的航班信息如下所示:n

22、n,i);dop=p-next ;j=p-feixingzhouri -i;if(fabs(j)hangbanhao);printf(t飛機號:%dn,p-feijihao );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;else if(p-next=null)printf(t沒有航班信息!n);while(p-next );8. void tuipiaoyewu()linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)pr

23、intf(還沒有訂票!nn);elseprintf(t按航班號查詢n);hbh();9. void hbh()linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1,*h2;linkqueue q=q;int i,j,k,m,piao;printf(請輸入航班號:);scanf(%d,&i);printf(n);if(p)doif(!p)printf(沒有你要退票的飛機!n);break;j=p-hangbanhao -i;if(j=0)printf(t航班信息如下:n);printf(t航班號:%dn,p-hangba

24、nhao);printf(t飛機號:%dn,p-feijihao);printf(t飛行周日:周%dn,p-feixingzhouri);printf(t余票量:%dnnn,p-yupiaoliang);elsep=p-next ;while(j!=0);if(j=0)doh=p-yiding ;if(h)printf(請輸入你的名字:);scanf(%d,&m );printf(n);printf(請輸入你定的票數(shù):);scanf(%d,&piao);printf(n);h1=h;h=h-next1 ;if(h-name -m=0)&(h-dingpiaoliang =piao)p-yupi

25、aoliang =p-yupiaoliang +h-dingpiaoliang ;h2=h;h1-next1 =h-next1 ;free(h2);printf(您退票成功!nn);struct denghoukehu *q1;q.front =p-denghou ;if(q.front =q.rear=null )printf(沒有人預(yù)訂票!nnn);break;if(p-yupiaoliang )=(q.front -next2 -piaoshu )h2=(yiding*)malloc(sizeof(yiding);h2-name =q.front -next2 -name ;h2-din

26、gpiaoliang =q.front -next2 -piaoshu ;k=p-yupiaoliang -q.front -next2 -piaoshu ;p-yupiaoliang =k;q1=q.front -next2 ;printf(%d號訂到票了,離開隊列!n,q1-name );printf(“%d號定的窗位等級是%dn,q1-name ,q1-chuangweidengji );q.front =q1-next2 ;if(q.rear =q1)q.rear =q.front ;free(q1);h2-next1 =h-next1 ;h-next1 =h2;printf(為客戶預(yù)

27、定票成功!n);else printf(余票數(shù)不足,不能為客戶提供訂票服務(wù)!n);elseprintf(該航班沒有人預(yù)訂票或者是你沒有定票!n);printf(是否重新查找?1:是2:否n);scanf(%d,&j);printf(n);while(j=1);10. linklist initlinklist()l=(linklist)malloc(sizeof(hangxian);if(!l)exit(0);l-next=null;return (l);四: 調(diào)試分析1. 本次作業(yè)有點難度 , 特別是后期在原來的程序上做了些擴展, 如生成底色,添加密碼功能,還有過多的提示更顯得智能,剛開始很

28、難做好,經(jīng)過調(diào)試終于做好了。2. 在退票功能區(qū)域中,開始時用h-dingpiaoliang piao=0時不管有沒有人入隊列,總是提示沒有人如隊列,后來調(diào)試用h-dingpiaoliang =piao后就行了,因為后面的需要不能改變h-dingpiaoliang3. 在調(diào)試過程中使用scanf(“%dn”,&n);總是不能得出想要的結(jié)果,后來老師調(diào)試后才知道是scanf(“%d”,&n);所以編程時要持著嚴謹?shù)膽B(tài)度,不斷調(diào)試。4. 程序源代碼中仍有部分重復(fù)代碼,可以模塊化,實現(xiàn)代碼重用.5. 在運行時屏幕不能拉動,這是個缺陷。五.用戶手冊1.本程序的運行環(huán)境為 dos 操作系統(tǒng), 執(zhí)行文件為h

29、angkongxitong.exe.2.進入演示程序后 , 即顯示文本方式的用戶界面:要是連續(xù)三次沒有輸入正確的密碼就顯示出如下界面:3. 輸入正確的密碼后顯示出主界面的提示信息.如下圖:4. 進入 “航班信息” 命令后, 程序 立即顯示如下圖:5.進入 “訂票業(yè)務(wù)” 命令后, 程序進入如下界面:6.進入“查詢功能”后,程序進入如下界面:7.進入“退票功能”后進入如下界面:六. 測試結(jié)果1. 輸入不正確時會分別顯示如下信息:2. 輸入如下正確數(shù)據(jù):3. 查詢航線的幾種方法:4. 訂票業(yè)務(wù):5. 退票業(yè)務(wù):6. 推出界面:七 附錄 程序清單:#include stdafx.h#include m

30、alloc.h#include math.h#include stdio.h#include stdlib.h#include string.h#include conio.h#include process.htypedef struct yidingkehuint name;int dingpiaoliang;int chuangweidengji;struct yidingkehu *next1;yiding,*link;typedef struct denghoukehuint name;int piaoshu;int chuangweidengji;struct denghoukeh

31、u *next2;denghou,*qptr;typedef struct hangxianint zhongdianzhan;int hangbanhao;int feijihao;int feixingzhouri;int chengyuanzongshu;int yupiaoliang;struct hangxian *next;struct yidingkehu *yiding;struct denghoukehu *denghou;hangxian,*linklist;typedef structqptr front;qptr rear;linkqueue;struct hangxi

32、an *l=null;struct yidingkehu *h;linkqueue q;linklist initlinklist()l=(linklist)malloc(sizeof(hangxian);if(!l)exit(0);l-next=null;return (l);int insertlinklist(linklist &l)linklist p;p=(linklist)malloc(sizeof(hangxian);if(!p) exit(0);printf(t請依次輸入下面幾項內(nèi)容:nn);printf(航班號n);scanf(%d,&p-hangbanhao);printf

33、(飛機號n);scanf(%d,&p-feijihao);printf(終點站n);scanf(%d,&p-zhongdianzhan);printf(飛行周日n);scanf(%d,&p-feixingzhouri);printf(乘客總數(shù)n);scanf(%d,&p-chengyuanzongshu);printf(余票數(shù)n);scanf(%d,&p-yupiaoliang);p-yiding=(yidingkehu*)malloc(sizeof(yidingkehu);p-denghou=q.front=q.rear=(qptr)malloc(sizeof(denghoukehu);p-

34、next=l-next;l-next=p;return 1;void tdcx()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入終點站名字:);scanf(%d,&i);printf(n);dop=p-next ;if(p)j=p-zhongdianzhan-i;if(j=0)printf(t航班信息%d如下:n,k);printf(t航班號:%dn,p-hangbanhao);printf(t飛機號:%

35、dn,p-feijihao );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;elseprintf(t沒有你要查詢的航班號!nn);break;while(j!=0);void qbcx()int k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elsedop=p-next ;if(p)printf(t航班信息%d如下:n,k);printf(t航班號:%d

36、n,p-hangbanhao);printf(t飛機號:%dn,p-feijihao );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;while(p);void zjyt()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(還沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入特定某天的航班信息的日期!n);scanf(%d,&i);printf(t%d號最近一天的航

37、班信息如下所示:nn,i);dop=p-next ;j=p-feixingzhouri -i;if(fabs(j)hangbanhao);printf(t飛機號:%dn,p-feijihao );printf(t飛行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;else if(p-next=null)printf(t沒有航班信息!n);while(p-next );void chaxunhangxian()int i;printf(1:特定查詢2:全部查詢3:最近一天航班信息n);printf(請選擇功能:);scanf

38、(%d,&i);printf(n);switch(i)case 1:tdcx();break;case 2:qbcx();break;case 3:zjyt();break;void dingpiaoyewu() linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1; linkqueue q=q;int i,j,k,piao,yudingpiao=0,yidingpiao=0;if(!p-next )printf(沒有航班信息!n請輸入航班信息!nn);elseprintf(請輸入終點站:);scanf(%d,&i);printf(n);p=l-next;if(p)doif(!p)printf(對不起!沒有你要查詢的航班!nnn);break;j=p-z

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論