飛機訂票系統(tǒng) C語言編的_第1頁
飛機訂票系統(tǒng) C語言編的_第2頁
飛機訂票系統(tǒng) C語言編的_第3頁
飛機訂票系統(tǒng) C語言編的_第4頁
飛機訂票系統(tǒng) C語言編的_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、淮北師范大學計算機學院c程序設計報告淮北師范大學程序設計課程設計 飛機票訂票系統(tǒng)學生姓名: 葛 麗 學 號: 20091202014 所在院(系): 計算機科學與技術學院 專 業(yè): 計算機科學與技術 非師指 導 教 師: 王 帥 2011年04月14日一、課程設計目的(1)了解并掌握算法的設計方法,具備初步的獨立分析和設計能力;(2)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;(3)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;二、課程設計的內容和要求本程序主要用于機票的管理,甩以提供了以下功能,行班信息輸入輸出保存、航線查詢、訂票,退票,和修改航班信

2、息。創(chuàng)建航班信息:包括航班號、起飛時間、降落時間、起飛抵達城市、航班票價、及票價的折扣,票數(shù)等信息.錄入的信息應該保存在一個文件里。 瀏覽航班信息:通過瀏覽系統(tǒng),客戶可以根據自己時間、金錢等多方面的因素選擇適合自己的航班。修改航班信息:當航班信息改變可以修改航班數(shù)據文件。查詢航班信息:可通過航班號查詢,可通過飛機終點站查詢,也可以按航線查詢。刪除航班信息:可通過航班號刪除,也可以按航線刪除。添加航班信息:按添加的航班數(shù)量依次添加航班信息訂票:可以訂票,如果該航班已經無票,可以推薦相關航班退票:不滿意所訂的票時可進行退票三、算法的基本思想1.涉及到的數(shù)據結構typedef struct flig

3、htnode /定義結構體數(shù)組int num; /航班號char start20; /起始城市char over20; /終點城市 char stime10; /起始時間 har etime10;int price; int discount; /折扣int count; /機票數(shù)struct flightnode *next; node;2.基本功能模塊飛機票管理系統(tǒng)修改航班信息訂票退票添加航班信息刪除航班信息查找航班信息瀏覽航班信息創(chuàng)建航班信息主函數(shù)模塊。1) 函數(shù)原形:void main();2) 功能:調用initlist(&h) 函數(shù)和menu()函數(shù),初始化函數(shù)和顯示主界面創(chuàng)建航班

4、信息模塊1) 函數(shù)原形:void creat();2) 功能:本模塊是對程序中的create()函數(shù)和save()函數(shù)的詳細說明鏈表的存儲結構,對該創(chuàng)建的鏈表調用save()函數(shù),存儲到數(shù)據文件中去瀏覽航班信息模塊1) 函數(shù)原形: void print();2) 功能:輸出航班信息修改航班信息模塊1)函數(shù)原形: void change() 2) 功能:當航班信息改變可以修改航班數(shù)據文件20查找航班信息模塊1)函數(shù)原形: node *search():查找航班信息數(shù)據2) 功能:由于航班的錄入和保存是由鏈表存儲結構進行的,所以此查詢就可通過鏈表對該文件進行查看或者查詢,查詢我們可根據航班號和航班

5、抵達的城市和航線匹配查詢,在查詢中將需要查詢的航班號 no和文件閱讀時指針所指的值num進行比較,而按抵達城市查找則利用函數(shù)strcmp(p-next-start,name1)若匹配則輸出;刪除航班信息模塊1)函數(shù)原形: void del()2) 功能:選擇按什么方式刪除,然后按該方式刪除添加航班信息模塊1)函數(shù)原形: void add();2) 功能:按添加的航班數(shù)量依次添加航班信息訂票信息模塊1)函數(shù)原形: int book_tickets()2) 功能:先根據search()函數(shù)查詢要訂票的航班,在訂票時應先按乘客想要定的航班號或者抵達城市或航線查詢,并按乘客欲定的票的數(shù)目與查詢數(shù)目進行

6、比較,若訂票的票數(shù)小于該航班票數(shù),則輸出訂票成功,且在整個定票系統(tǒng)中,所有的定票都用鏈表進行存儲管理退票信息模塊1)函數(shù)原形: int tuipiao()2) 功能:在退票系統(tǒng)中即對航班票的數(shù)據文件進行管理,所以可先按照查詢航班票的方法,若查詢到的票的信息和乘客此時要求退票的信息相匹配,則在該定票數(shù)據文件中刪除相應的該票的節(jié)點,再修改其航班信息。3主要功能模塊流程圖輸出界面開始 選擇操作 結束按航班號或航線退票信息退出選擇0選擇8選擇7訂票信息添加航班信息刪除航班信息查找航班信息選擇6選擇5選擇4選擇3修改航班信息瀏覽航班信息選擇2選擇1創(chuàng)建航班信息按航班或終點站或航線四、系統(tǒng)測試1.選擇1,

7、運行界面如下:2選擇2,運行界面如下:3選擇3,運行界面如下:4選擇4,運行界面如下:5選擇5,運行界面如下:6.選擇6,運行界面如下:7.選擇7,運行界面如下: 8.選擇8,運行界面如下:9.選擇0,運行界面如下:五結論本次程序設計主要用到了結構體、調用函數(shù)、文件的保存、輸入以及輸出等功能。使我對數(shù)據結構有了更深一層的認識,特別是對動態(tài)鏈表和文件的運用得到了很大的提高。在本次實驗中程序曾多次編譯、運行出錯,多虧了王帥老師的指導才將錯誤找出并改正,通過本次實驗,我認識到實踐和動手的重要性。六源程序及系統(tǒng)文件使用說明程序清單#include /標準輸入、輸出頭文件#include /包含字符串函

8、數(shù)處理頭文件#include /包含動態(tài)存儲與釋放函數(shù)頭文件typedef struct flightnode /定義結構體數(shù)組int num; /航班號char start20; /起始城市char over20; /終點城市 char stime10; /起始時間 char etime10;int price; float discount; /折扣int count; /機票數(shù)struct flightnode *next; node;#define print %4d %9.6s %9.6s %9.6s %9.6s %9d %.1f %9d n,p-next-num,p-next-st

9、art,p-next-over,p-next-stime,p-next-etime,p-next-price,p-next-discount,p-next-count /定義輸出格式void creat(); /創(chuàng)建航班信息文件void print(); /輸出航班信息void save(); /保存航班信息 int read(); /讀取航班信息node *search(); /查找航班信息void del(); /刪除航班信息int book_tickets(); /訂票信息int tuipiao(); /退票信息void change(); /修改信息void menu(); /菜單vo

10、id initlist(node *); /初始化函數(shù)void add(); /添加信息函數(shù)node *h=null; /建立全局變量,存鏈表頭指針int m=0; /航班數(shù)量void initlist(node *h) *h=(node *)malloc(sizeof(node);(*h)-next=null;void creat() /打印模塊程序 file *fp;node *p=null; /定義移動指針 int i,flightnum;char y;p=h;if(fp=fopen(air.dat,rb)!=null)/打開文件,并判斷是否出錯printf( 信息文件已經存在,不必創(chuàng)建

11、!按任意鍵后回車返回nnn);/打印出錯提示fclose(fp);fflush(stdin);getchar();return ;p=h; printf(請輸入要輸入的航班數(shù)量:); fflush(stdin); /清除文件緩沖區(qū)scanf(%d,&flightnum); /讀取航班數(shù)system(cls); /清屏printf( 請依次輸入航班信息:nn); /打印提示信息printf(-n);for(i=0;inext=(node *)malloc(sizeof(node);p-next-next=null;printf(航班號:); fflush(stdin);scanf(%d,&p-n

12、ext-num); /讀取航班號printf(起始站:);fflush(stdin);scanf(%10s,&p-next-start);/讀取起飛城市printf(終點站:);fflush(stdin);scanf(%10s,&p-next-over);/讀取抵達城市printf(起始時間:);fflush(stdin);scanf(%10s,&p-next-stime);/讀取起飛時間printf(抵達時間:);fflush(stdin);scanf(%10s,&p-next-etime);/讀取抵達時間 printf(航班票價:);fflush(stdin);scanf(%d,&p-ne

13、xt-price);/讀取航班票價printf(票價折扣:);fflush(stdin);scanf(%10f,&p-next-discount);/讀取票價折扣printf(機票數(shù):,m);fflush(stdin);scanf(%d,&p-next-count);/讀取機票數(shù) printf( 第%d個信息已經輸完n,i+1);p=p-next;m+;printf(信息輸入完畢,是否存盤:存盤按0,不存盤按其他任意鍵);fflush(stdin);y=getchar();if(y=0)save();/將結構體信息存盤print();/輸出輸入的航班信息void save()/保存模塊程序 n

14、ode *p=null;/定義移動指針file *fp,*fp1;/定義指向文件指針p=h;if(fp=fopen(air.dat,wb)=null)/打開文件并判斷是否出錯 printf( 創(chuàng)建文件失敗!nnn);/打印出錯提示fflush(stdin);getchar();return;if(fp1=fopen(num.dat,wb)=null)/打開文件并判斷是否出錯 printf( 創(chuàng)建文件失敗!nnn);/打印出錯提示fflush(stdin);getchar();return;while(p-next!=null)if(fwrite(p-next,sizeof(node),1,fp

15、)=0)/向文件寫入數(shù)據,并判斷是否出錯printf( 向文件輸入數(shù)據失敗!nnn);break;else p=p-next;fprintf(fp1,%d,m); /按指定的格式輸出到fp1所指定的文件中fclose(fp);/關閉文件 fclose(fp1);/關閉文件int read()/從文件讀取信息模塊 file *fp,*fp1;/定義文件指針node *p=null;int i;initlist(&h);p=h;if(fp=fopen(air.dat,rb)=null)/打開文件,并判斷是否出錯printf(出錯,請檢查信息文件是否存在,按任意鍵后回車返回住菜單nnn);/打印出錯

16、提示fflush(stdin);getchar();return 0;if(fp1=fopen(num.dat,rb)=null)/打開文件并判斷是否出錯 printf( 創(chuàng)建文件失敗!nnn);/打印出錯提示fflush(stdin);getchar();return 0;fscanf(fp1,%d,&m); /從fp1所指定的文件中按給定的格式將輸入數(shù)據送內存中fclose(fp1);/關閉文件printf(n 總共%d個航班信息n,m);for(i=0;inext=(node *)malloc(sizeof(node); p-next-next=null;fread(p-next,siz

17、eof(node),1,fp);/從文件中讀取信息p=p-next;fclose(fp);/關閉文件return 1; void print()/打印模塊node *p=null;if(read()=0)return;/調用讀取文件函數(shù),并判斷是否文件存在。p=h;printf(n); printf(航班號 起始站 終點站 起始時間 抵達時間 航班票價 票價折扣 票數(shù) n); while(p-next!=null)printf(print);/打印信息p=p-next;printf(); printf(nnnnnn請按任意鍵后回車結束返回上層菜單:n);fflush(stdin);getcha

18、r();node *search()/查詢模塊node *p=null;node *x=null; /*用于記錄查詢到的記錄*/char name120;char name220;char ii10;int n,no;int flag=0;if(read()=0)return 0;p=h;doprintf( 請選擇查找方式:nn); /打印查詢方式菜單 printf(-n);printf( 1.按航班號查找nn 2.按終點站查找nn 3.按航線查找nn 0.返回nn);printf( 請在0-3中選擇:nn 按其他鍵后回車返回主菜單:nnnnn);fflush(stdin);scanf(%d,

19、&n);/讀取查找方式if(n=0)break;switch(n)case 1:printf( 請輸入航班號:n);fflush(stdin);scanf(%d,&no);/航班號break;case 2:printf( 請輸入終點站名稱:n);fflush(stdin);scanf(%10s,name2);/讀取終點站break;case 3:printf( 請輸入起始站名稱:n);fflush(stdin);scanf(%10s,name1);/讀取起始站printf( 請輸入終點站名稱:n);fflush(stdin);scanf(%10s,name2);/終點站break;defaul

20、t: printf( 請選擇有效查詢方式!nnn);while(p-next!=null) if(strcmp(p-next-start,name1)=0|strcmp(p-next-over,name2)=0) /按終點站起始站判斷輸出條件printf( n查找航班信息成功!nnn);printf(航班號 起始站 終點站 起始時間 抵達時間 航班票價 票價折扣 票數(shù)n);printf(print);/打印信息x=p-next;flag=1;break;if(p-next-num=no)/按航班號判斷輸出條件 printf( n查找航班信息成功!nnn);printf(航班號 起始站 終點站

21、起始時間 抵達時間 航班票價 票價折扣 票數(shù)n);printf(print);/打印信息x=p-next;flag=1;break; p=p-next;if(!flag) printf(查找失敗!:nnnnn); printf ( nnn 是否重新查找?n 請鍵入yes或non 后回車鍵結束 n - nnnnn); no=0;/將航班號賦值為0 p=h; flag=0; fflush(stdin); scanf(%10s,ii);while(strcmp(ii,yes)=0);/判斷結束return(x);void add()int flightnum;int i,y;node*p=null;

22、i=read();if(i=0)return;p=h;while(p-next!=null)p=p-next;printf(請輸入要輸入的航班數(shù)量:);fflush(stdin);scanf(%d,&flightnum); /讀取航班數(shù)system(cls);printf( 請依次輸入航班信息:nn); /打印提示信息printf(-n);for(i=0;inext=(node *)malloc(sizeof(node);p-next-next=null;printf(航班號:); fflush(stdin);scanf(%d,&p-next-num); /讀取航班號printf(起飛城市:)

23、;fflush(stdin);scanf(%10s,&p-next-start);/讀取起飛城市printf(抵達城市:);fflush(stdin);scanf(%10s,&p-next-over);/讀取抵達城市printf(起飛時間:);fflush(stdin);scanf(%10s,&p-next-stime);/讀取起飛時間printf(抵達時間:);fflush(stdin);scanf(%10s,&p-next-etime);/讀取抵達時間 printf(航班票價:);fflush(stdin);scanf(%d,&p-next-price);/讀取航班票價printf(票價折

24、扣:);fflush(stdin);scanf(%10f,&p-next-discount);/讀取票價折扣 printf(機票數(shù):,m);fflush(stdin);scanf(%d,&p-next-count);/讀取機票數(shù)printf( 第%d個信息已經輸完n,i+1);p=p-next;m+;printf(信息輸入完畢,是否存盤:存盤按0,不存盤按其他任意鍵后回車);fflush(stdin);scanf(%d,&y);if(y=0)save();/將結構體信息存盤print();/輸出輸入的航班信息void del()/刪除模塊node *p=null;node *temp=null

25、;char name120;char name220;char ii10;int no,n; int flag=0;if(read()=0)return;/調用讀取函數(shù)do printf( 請選擇刪除以方式回車鍵結束:nn); printf( *1.按航班號刪除nn *2.按航線刪除nn *0.返回nn);printf( 請在0-2中選擇以回車鍵結束:nnn);fflush(stdin);scanf(%d,&n);/讀取刪除方式if(n=0)break; /跳出循環(huán)switch(n)case 1:printf( 航班號:n);fflush(stdin);scanf(%d,&no); /讀取航班

26、號p=h;break; /跳出循環(huán)case 2:printf( 起始站名稱:n);fflush(stdin);scanf(%10s,name1);/讀取起始站printf( 終點站名稱:n);fflush(stdin);scanf(%10s,name2); /讀取終點站p=h;break; /跳出循環(huán)default: printf( 請選擇有效的選項:n);continue;while(p-next!=null) if(p-next-num=no|(strcmp(p-next-start,name1)=0&strcmp(p-next-over,name2)=0) ./判斷輸入信息是否存在 te

27、mp= p-next-next;p-next=temp;m-;flag=1;printf( 刪除成功!剩余%d條信息nnnnn,m);break;p= p-next;if(!flag)printf( 沒有這個信息!nnnnn);printf( 是否繼續(xù)刪除n 請鍵入yes或no以回車鍵結束n);fflush(stdin);scanf(%10s,ii); /讀取是否繼續(xù)信息save(); /調用存儲函數(shù)if(!strcmp(ii,yes) /判斷是否繼續(xù)刪除 printf( 請按任意鍵后回車結束返回上層菜單:nnnnnn);break;while(1); /判斷結束int book_ticket

28、s()/訂票模塊int n;char a10;node *x=null; node *p=null;doprintf(查找要訂票的航班:n);x = search();/調用查詢模塊if(x!=null)printf(請輸入您要訂的機票數(shù)以回車鍵結束:n);fflush(stdin);scanf(%d,&n); /讀取所訂機票數(shù)else return (0);if(ncount!=0&x-count=n)/判斷是否出錯x-count=x-count-n;save();/調用保存函數(shù)printf( 訂票成功!nn);break;if(x-countn)/判斷是否出錯printf(該航班機票已被定

29、完,請預定其他航班:nnnnnn);break; printf(是否繼續(xù)?請輸入yes或no以回車鍵結束:nnnnnn);/判斷是否繼續(xù)訂票fflush(stdin);scanf(%10s,a);while(!strcmp(a,yes); /判斷結束return(1);int tuipiao() /退票模塊int n;char a10;node *p=null;node *x=null;do printf( 查找要退票的航班n);x= search(); /調用查詢模塊if(x!=null)printf( 請輸入您要退的機票數(shù)目:n);fflush(stdin);scanf(%d,&n); /

30、輸入所退票數(shù)else return (0);while(ncount= x-count+n;save(); /調用保存模塊printf(退票成功!nnnnn);printf(是否繼續(xù)退票?請鍵入yes或no以回車鍵結束:nnn);/判斷是否繼續(xù)退票fflush(stdin);scanf(%10s,a);while(!strcmp(a,yes);/判斷并跳出循環(huán)return (1);fflush(stdin);getchar();void change() /修改模塊char j10;node *x=null;node *p=null;if(read()=0)return;do x=search();if(x!=null)printf( 請重新輸入本條信息nnnnn);printf(航班號:n); fflush(stdin);scanf(%d,&x-num); /讀取航班號printf(起始站:n);fflush(stdin);scanf(%10s,&x-start);/讀取起始站printf(終點站:n);fflush(stdin);scanf(

溫馨提示

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

評論

0/150

提交評論