C語言課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)說明書_第1頁
C語言課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)說明書_第2頁
C語言課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)說明書_第3頁
C語言課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)說明書_第4頁
C語言課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)說明書_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄設(shè)計(jì)目的1總體設(shè)計(jì)1詳細(xì)設(shè)計(jì)3調(diào)試及測(cè)試4源程序代碼4程序運(yùn)行截圖16仍存在的問題18心得體會(huì)18設(shè)計(jì)進(jìn)度表19參考文獻(xiàn)20一、正文(一)設(shè)計(jì)目的:假定民航機(jī)場(chǎng)共有n個(gè)航班,每個(gè)航班有一航班號(hào)、確定的航線(起始站、終點(diǎn) 站)、確定的飛行時(shí)間(星期兒)和一定的成員訂額。設(shè)計(jì)一飛機(jī)訂票系統(tǒng),使之能提 供下列服務(wù):1、航班信息錄入功能(航班信息用文件保存)包括航班號(hào)、起始站、終點(diǎn)站、機(jī)票總數(shù)、已售機(jī)票數(shù);2、航班信息瀏覽功能3、查詢航線:按航班號(hào)查詢、按終點(diǎn)站查詢、按航線查詢4、承辦訂票和退票業(yè)務(wù)(可選項(xiàng))5、修改航班信息6、刪除航班信息(二)總體設(shè)計(jì):編寫一個(gè)飛機(jī)訂票系統(tǒng)的程序,使該系統(tǒng)能夠?qū)?/p>

2、現(xiàn)對(duì)航班信息的錄入、瀏覽、查 詢、修改、刪除以及訂票、退票的功能。根據(jù)題目要求,首先要制作一個(gè)主菜單顯示 出各個(gè)操作的提示可供用戶選擇,進(jìn)而一步步地深入操作。根據(jù)主菜單的內(nèi)容再進(jìn)一 步編制具體操作的函數(shù),各個(gè)功能均用專門編制的函數(shù)來完成。這就是看到題目后的 最初的思路。因?yàn)轱w機(jī)票管理系統(tǒng)含有各航班的各項(xiàng)信息,如航班號(hào)、航線、飛行時(shí)間、機(jī)票 數(shù)目等必要信息,綜合考慮決定用結(jié)構(gòu)體數(shù)組比較合適,根據(jù)題目要求定義如下結(jié)構(gòu) 體類型:頭文件包含、全局變量定義和結(jié)構(gòu)體定義源代碼:#includestdio. h標(biāo)準(zhǔn)輸入、輸出頭文件ftinclude包含字符串函數(shù)處理頭文件#includettdefine n

3、 1000 定義最多的航班數(shù)prt#definez,%-d%12s %12s%10s%12d%12dnz,, s i. num, s i. start, s i. over, s i.time, si. count, si. selled /定義輸出格式ttdefine lb 航班號(hào)起始站終點(diǎn)站時(shí)間機(jī)票總數(shù)已售票數(shù)n定義打印列表格式struct air int num; char start20; char over20; char time10; int count;機(jī)票總數(shù) int selled;已預(yù)定機(jī)票總數(shù) sn; int i,m=0;定義全局變量,記錄下航班信息的數(shù)量char ii1

4、0;用來選擇是否繼續(xù)的變量大概思路就是這樣!詳細(xì)設(shè)計(jì)(定義的每個(gè)函數(shù)均作介紹):1)初始化界面函數(shù)(face函數(shù))在程序開始執(zhí)行時(shí)調(diào)用該函數(shù),在屏幕上打印出初始界面!并選擇要執(zhí)行的操作! 2)信息輸入函數(shù)(input函數(shù))該函數(shù)里面調(diào)用for循環(huán)控制,該函數(shù)中用到一個(gè)全局變量k,用來控制該函 數(shù)被再次調(diào)用時(shí)可以在已存放信息結(jié)構(gòu)體后面繼續(xù)輸入數(shù)據(jù),每當(dāng)一個(gè)完整的航班信 息輸入完畢后,會(huì)提示是否輸入下一個(gè)信息!按0j結(jié)束輸入!然后調(diào)用下面要介紹 的信息保存函數(shù)(save函數(shù))!保存完畢后退回到主菜單!3)信息保存函數(shù)(save函數(shù))由于本程序設(shè)計(jì)時(shí)當(dāng)輸入機(jī)票總數(shù)不是正數(shù)時(shí)就會(huì)結(jié)束保存航班信息,所以

5、進(jìn)入save 函數(shù)時(shí)首先判斷機(jī)票總數(shù)是否大于0,大于0時(shí)候開始進(jìn)入主體部分執(zhí)行!主要過程 是先打開文件,文件打開成功后調(diào)用文件格式輸出函數(shù)(fprinf函數(shù))將信息保存到 文件中區(qū)!4)文件讀取函數(shù)(read函數(shù)) 該函數(shù)首先打開保存飛機(jī)票信息的文件,然后將保存的信息寫到飛機(jī)信息的結(jié)構(gòu)體數(shù) 組里面去(調(diào)用格式輸入函數(shù)fscanf),并將航班信息輸出到屏幕上!輸入完畢后關(guān) 閉文件!5)信息打印函數(shù)(print函數(shù))該函數(shù)只是負(fù)責(zé)把調(diào)用read函數(shù),并打印出航班信息輸出事的一些輔助信息!6)航班信息查找函數(shù)本函數(shù)用dowhile循環(huán)控制結(jié)構(gòu),進(jìn)入函數(shù)后選擇查詢方式(可以按航班號(hào)、終點(diǎn)站、航線查詢)

6、,方式選擇后用switch語句飛機(jī)的航班號(hào)(或者起始站、終點(diǎn)站)! 從switch語句出來后,首先調(diào)用文件讀取函數(shù)(read函數(shù)),輸出所有航班信息到屏 幕上,然后在if語句中判斷剛才所輸入飛機(jī)的航班號(hào)(或者起始站、終點(diǎn)站)及數(shù)組 中那個(gè)航班信息符合,找到后打印出來!循環(huán)結(jié)束后,輸入“yes”(“n?!保瑆hile判 斷輸入的條件繼續(xù)(終止查找)!選擇終止查找后返回主菜單!7)航班信息刪除函數(shù)(delete)航班刪除模塊及查找函數(shù)類似,也是用的dowhile循環(huán)控制結(jié)構(gòu),不同時(shí)要先輸入密碼才能進(jìn)入函數(shù)!進(jìn)入函數(shù)后要選擇刪除方式(按航班號(hào)、航線)刪除,輸入 要?jiǎng)h除的航班號(hào)(航線)后,比如說選擇

7、按航班號(hào)刪除,找到要?jiǎng)h除的航班數(shù)組下標(biāo) i 后,用 for(int j=i ; jm; j+) sj=sj+l ; 方式實(shí)現(xiàn)刪除,刪除完畢后打印出刪除過的航班信息列表,然后選擇“no”結(jié)束該函數(shù),返回到主菜 單!8)訂票函數(shù)(book函數(shù))首先調(diào)用查詢函數(shù)(search函數(shù)),找到要預(yù)訂機(jī)票的航班,然后輸入要頂?shù)臋C(jī)票數(shù) 目,根據(jù)輸入的機(jī)票書修改已售機(jī)票書數(shù)值!然后保存信息!9)退票函數(shù)(refund。函數(shù)及訂票函數(shù)類似,首先調(diào)用查詢函數(shù)(search函數(shù)),找到要預(yù)訂機(jī)票的航班,然后 輸入要退的機(jī)票數(shù)目,根據(jù)輸入的機(jī)票書修改已售機(jī)票書數(shù)值!然后保存信息!10)修改函數(shù)(modify函數(shù))該函數(shù)

8、及輸入函數(shù)類似,把數(shù)組里面的信息重新輸入一遍達(dá)到修改航班信息的功能!11) main 函數(shù)輸入密碼后進(jìn)入main函數(shù),然后main函數(shù)負(fù)責(zé)調(diào)用以上程序就行了!源程序代碼:#include#include#include*define n 200 struct air (int num;char start20;char over20;char time10;int count;機(jī)票總數(shù)int sei led; 已預(yù)定機(jī)票總數(shù)sn;ttdef ineprt,%-d%12s %12s%10s%12d%12dn, s i. num, s ei. start, s i. over, s i.time,

9、 si. count, si. selled /定義輸出格式ttdefine lb 航班號(hào)起始站 終點(diǎn)站 時(shí)間機(jī)票總數(shù)已售票數(shù)n定義打印列表格式 void face ();void input ();void print ();void search ();void delete ();void booking ();void modify ();void refund ();void save ();void read ();int i, m=0, k=0;void face ()system(z,color 0e);puts ( );putsc*飛機(jī)票管理系統(tǒng)歡迎您*);puts cwxr

10、wklr1.iputsc*你可以選擇下面的操作:*);putsc*1.輸入航班信息*);puts(2.瀏覽航班信息*);puts( *);puts c *);puts ( *);puts c *);puts( *);puts ( *);3 .查詢航班信息4 .刪除航班信息5 .訂票信息6 .修改信息7 .退票信息0.退出puts(putsc*制作人:附#學(xué)號(hào):111111111111*);puts( );) void main ()/delay(1000);system (color a0); 設(shè)置背景和字體顏色/system(color 100,/) ;/yanseint j;char f口

11、二iniinii/;設(shè)置密碼int y;printf (飛機(jī)票管理系統(tǒng)nn);while(1) printf c請(qǐng)輸入密碼進(jìn)入系統(tǒng):n );scanfc%sz/,f);讀取密碼if (strcmp(f,,1111111111,)=0)(while (1)(system(cls);face();printf (請(qǐng)?jiān)?-7中選擇以回車鍵結(jié)束:);scanf (%d,&j);system(,cls,9 ;switch (j)case 1 : input ();調(diào)用輸入模塊break;case 2:print();調(diào)用打印模塊break;case 3: search ();調(diào)用查詢模塊break;ca

12、se 4:delete();調(diào)用刪除模塊break;case 5: booking ();調(diào)用訂票模塊break;case 6:modify();調(diào)用修改模塊break;case 7:refund();調(diào)用退票模塊break;case 0:goto end;printf (n按任意鍵繼續(xù));)else(int yy;printf c輸入密碼錯(cuò)誤!請(qǐng)檢查您的密碼是否正確!nn);printf(,/是否繼續(xù)輸密碼?按任意鍵繼續(xù),0結(jié)束! rt,m);scanf (機(jī)l,&y);在此需輸入任意一個(gè)整數(shù)值數(shù)值,程序才能繼續(xù)執(zhí)行if(y=0)break;)end:printfc(二八三)歡迎再 次回來(

13、二一pn);printf c任意鍵退出系統(tǒng)! n);int hp2;scanf&hp2);)void input ()(system(color 8f);printf (請(qǐng)依次輸入航班信息(機(jī)票總數(shù)為0結(jié)束輸入):完成輸入信息請(qǐng)鍵入w以回車鍵結(jié)束n);打印提示信息printf(n);int y;for(i=k;i0)(system(color 78);file *fp; 定義文件指針if (fp二fopen(d:飛機(jī)票系統(tǒng)數(shù)據(jù)保存.txt,w+)=二null)打開文件并判斷是 否出錯(cuò)printf (文件打開失??! );打印出錯(cuò)提示)else(fprintf( fp, lb);fprintf (

14、 fp, /=n );for(i=0;i0;i+)( fprintf(fp, prt);)fclose (fp);關(guān)閉文件int hp;printfc信息保存到文件成功!任意鍵返回主菜單!nn);scanf(%d”, &hp);)else( int k;printf (飛機(jī)票總數(shù)為零!輸入結(jié)束! n);printff任意鍵返回主菜單! nn);scanf &k);)void read ()從文件讀取信息模塊system(color e0);file *fp; 定義文件指針if (fp二fopen(d:飛機(jī)票系統(tǒng)數(shù)據(jù)保存.txt,r)=null)打開文件,并判斷是否出錯(cuò)printf (創(chuàng)建文件失

15、?。?);打印出錯(cuò)提示elsefor(i=0;im;i+)(fscanf (fp, z/%-d%12s%12s%10s%12d%12(ln,&si. num, si. start, si. over, si. time, &si. count,&si.selled );printf(prt);)fclose(fp);關(guān)閉文件)void print ()打印模塊(system(color 97);char w10;printf (,zn所有航班信息如下n);printf(lb);read。;調(diào)用讀取文件函數(shù)-13-/36printf(nn按任意鍵回車鍵結(jié)束返回上層菜單:nn);scanf (%s

16、, w);)void search()查詢模塊(system(color 5e);char namel20;char name220;char ii10;int n, no, f lag=0;do(printf (請(qǐng)選擇查找方式:n );打印查詢方式菜單printf (1.按航班號(hào)查找n 2.按終點(diǎn)站查找n 3.按航線查找n 0.返回 n);printf (請(qǐng)?jiān)?-3中選擇:n /znn按其他鍵以回車鍵結(jié)束返回主菜單:n );scanf (%d, &n); 讀取查找方式-15-/36if (n=0)break;switch(n)(case 1:printf (請(qǐng)輸入航班號(hào):);scanf &n

17、o) ; /航班號(hào)break;case 2:printf (請(qǐng)輸入終點(diǎn)站名稱:);scanfname2); 讀取終點(diǎn)站break;case 3:printf (請(qǐng)輸入起始站名稱:);scanf (%s, namel); 讀取起始站printf (請(qǐng)輸入終點(diǎn)站名稱:);scanfname2);終點(diǎn)站break;default:break;)printf (z,n已經(jīng)存在的航班如下nn);printf(lb);read ();調(diào)用讀取函數(shù)for(i=0;im;i+)(if (strcmp (s i. over, namel) =0&strcmp (s i. over, name2) =0)按終點(diǎn)站

18、起始站判斷輸出條件(/printf (z,n查找航班信息成功! nn);printf cn下面是你要查找的航班信息nn );flag=l;printf (lb);printf (prt);打印信息break;)if (strcmp (si. over, name2) =0)(printf (,zn下面是你要查找的航班信息nn );flag=l;printf(lb);printf (prt);打印信息break;)ifnum=no)按航班號(hào)判斷輸出條件printf (n下面是你要查找的航班信息nn);flag=l;printf (lb);printf (prt);打印信息break;)no=0;

19、將航班號(hào)賦值為0if(flag)printf cn您需要的信息查找完畢:n 是否繼續(xù)查找?請(qǐng)鍵入yes或no以回車鍵結(jié)束n );scanf(s,ii);)else(printf cn沒有您需要的信息:n 是否繼續(xù)查找?請(qǐng)鍵入yes或no以回車鍵結(jié)束n );scanf(s,ii);)while(strcmp(ii,,yes,/)=0);判斷結(jié)束while (strcmp(ii, no/o-o)break;)void delete ()刪除模塊(system(/zcolor 1e);char namel20;char name220;char ii10;char f二2010146104;設(shè)置密碼

20、int no, n, f lag=0;printf(請(qǐng)輸入密碼并以回車鍵結(jié)束:n);scanf (級(jí)s,f); 讀取密碼if (strcmp(f,,2010146104,)=0) 判斷密碼是否正確(do(printf (請(qǐng)選擇刪除以方式回車鍵結(jié)束:n );打印刪除方式菜單printf(*l.按航班號(hào)刪除n *2.按航線刪除n ” *0.返回n );-38-/36printf(nnscanf (飛d,&n); 讀取刪除方式if (n=0)break; 跳出循環(huán)switch(n)(case 1:printf (請(qǐng)輸入航班號(hào):);scanf (%d, &no);讀取航班號(hào)printf (nread。

21、;調(diào)用讀取函數(shù)break; 跳出循環(huán)case 2:printf(請(qǐng)輸入起始站名稱:);scanfname 1); 讀取起始站printf (請(qǐng)輸入終點(diǎn)站名稱:);scanfname2); 讀取終點(diǎn)站printf(nread ();調(diào)用讀取函數(shù)break; 跳出循環(huán))printf (n請(qǐng)?jiān)?-2中選擇以回車鍵結(jié)束:n);已經(jīng)存在的航班如下nn);已經(jīng)存在的航班如下nn);刪除后的航班如下nn);for(i=0;im;i+)if (si. num二二no)按航班號(hào)刪除(printf(lb);flag=l;for(int j=i;jm;j+)m;for(int i=0;im;i+)(printf (

22、prt);)if(strcmp(si. start, namel)=0&strcmp(si. over, name2)=0)(flag=l;printf(lb);for (int k=i;km;k+)(sk=sk+l;m;for(int i=0;im;i+)printf (prt);)if(flag)printf (,zn您需要的信息查找完畢:n 是否繼續(xù)查找?請(qǐng)鍵入yes或no以回車鍵結(jié)束n );scanf(/s,ii);)else(printf (,zn沒有您需要的信息:n 是否繼續(xù)查找?請(qǐng)鍵入yes或no以回車鍵結(jié)束n );scanf (%s,ii);)while(strcmp(ii,,

23、yes,)=0); 判斷結(jié)束while (strcmp (ii,,no,)=0) break;elseprintf(z,n對(duì)不起密碼錯(cuò)誤!您不是管理員,不能使用此項(xiàng)功能! n );int q;scanf (,%d,, &q);)void booking ()訂票模塊(system(color 0e);int n;char a10;dosearch。;調(diào)用查詢模塊printf (請(qǐng)輸入您要訂的機(jī)票數(shù)以回車鍵結(jié)束:n );scanf (猊l,&n); 讀取所訂機(jī)票數(shù)if (n0 i si. count=n)判斷是否出錯(cuò)si. selled=si. selled+n;save。;調(diào)用保存函數(shù)prin

24、tf (訂票成功! nn );)printfc是否繼續(xù)?請(qǐng)輸入yes或no以回車鍵結(jié)束:n);判斷是否繼續(xù)訂票scanf (/s, a);while(!strcmp(a,,yes,/);判斷結(jié)束while(!strcmp(a, no)break; 判斷結(jié)束)void refund ()退票模塊(system(color f0);int n;char a10;dosearch。;調(diào)用查詢模塊printf (請(qǐng)輸入您要退的機(jī)票數(shù)目:);scanf (機(jī)t, &n);輸入所退票數(shù)if(n0) 判斷票數(shù)是否有效printf (請(qǐng)輸入有效的機(jī)票數(shù)! );else (si. selled=si. sell

25、ed-n;save(); 調(diào)用保存模塊printf (退票成功! );)printf (是否繼續(xù)?請(qǐng)鍵入yes或no以回車鍵結(jié)束:);判斷是否繼續(xù)退票scanf (%s, a);while(!strcmp(a,,yes,/);判斷并跳出循環(huán)) void modify () 修改模塊(system(color 4e);struct modify 定義結(jié)構(gòu)體(int mo;char startl20;char overlf20;char timel20;int count1;int selledl;char j10;char f 二2010146104;設(shè)置密碼int n;printf(請(qǐng)輸入密碼

26、并以回車鍵結(jié)束:);scanf (刎,f); 讀取密碼if(strcmp(f, ”2010146104)=0)判斷是否出錯(cuò)(printf(lb);read。;調(diào)用讀取模塊do(printf (請(qǐng)選擇修改方式:n *1:按航班號(hào)修改:n *2:按航線修改:n );printf (請(qǐng)?jiān)?2中修改以回車鍵結(jié)束:n);scanf (/d, &n); 讀取修改方式switch(n)case 1 :printf (請(qǐng)輸入航班號(hào):);scanf (%d,mo) ; /讀取航班號(hào)break;case 2:printf (請(qǐng)輸入起始站:);scanf m0. startl);讀取起始站printf (請(qǐng)輸入終點(diǎn)

27、站:);scanf (%s, m0. overl); 讀取終點(diǎn)站break;)for(int i=0;iq. q,q.q.*7,r7,*7,7,*7 q,q,q,*7 *? *? (4,嚀,g*嚀.*g*g*7*4、q.q,q,*? *7*1*?* * * * * * * *你可以選擇下面的操作:1 .輸入航班信息2 .瀏覽航班信息3 .查詢航班信息4 .刪除航班信息5 .訂票信息6 .修改信息7 .退票信息0 .退出* *i*wa* 4, . - k* k*#上.:, | :,* * ? j* j * * * * * * * * * * t* i 1 1 :. ? ? jj j * * 1

28、* * * * * * * * * * *t j j t ? i :,:.制作人:張星學(xué)號(hào):2010146104* 清在0-7中選擇以叵車鍵結(jié)束:圖表1 一主菜單界面2)航班信息的瀏覽退到主菜單后在提示中輸入“2” f瀏覽航班信息。輸出如下航班信息(如圖表2)!所有航班信息如下航班號(hào)20101461201014622010146320101464鈿肥錫安海視臺(tái)無西上融漢每昌漢q武上宣武時(shí)間機(jī)票總數(shù)星期三187星期二200星期五205星期日186己售票數(shù)145148174124按任意鍵回車鍵結(jié)束返回上層菜單:圖表2一顯示航班信息3)查詢航班信息在主菜單界面輸入3f選擇查詢方式1-輸入一顯示出所查

29、找的信息(如圖表3)按其他鍵以回車維結(jié)束返回主菜單: 1請(qǐng)輸入航班號(hào):20101461已經(jīng)存在的航班如下航班號(hào)20101461201014622010146320101464知肥錫安海卻合無西上漢海昌漢武上宜武時(shí)星星星星三二五 期期期期機(jī)票總數(shù)187200205186已售票數(shù)145148174124下可是你要查找的航班信息航班號(hào)20101461起始站終點(diǎn)站時(shí)間合肥武漢星期三機(jī)票總數(shù)187已售票145您需要的信息查找完畢:是否繼續(xù)查找?請(qǐng)?zhí)崛難es或no以回車鍵結(jié)束圖表3一查詢航班信息4)航班刪除在主菜單界面輸入4f按照提示輸入“2(按航班號(hào)從大到小排序)f顯示出排序后的航班信息(如圖表4)請(qǐng)?jiān)?-2中選擇以叵車鍵結(jié)束:1請(qǐng)輸入航班號(hào),20101461己經(jīng)存在的航班如下20101461201014622010146320101464肥錫安海合無西上漢海昌漢育上宜由星期三 星期二 星期五 星期日187200205186145148174124刪除后的航班如下航班號(hào)201014622010146320101464金錫安海望西上終點(diǎn)站jl海宜昌武漢司二五日同期期期

溫馨提示

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

評(píng)論

0/150

提交評(píng)論