版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、飛機訂票系統(tǒng)、課程設計目的( 1)了解并掌握算法的設計方法,具備初步的獨立分析和設計能力;(2)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方 法和技能;(3)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;二、課程設計的內容和要求本程序主要用于機票的管理,甩以提供了以下功能,行班信息輸入輸出保 存、航線查詢、訂票,退票,和修改航班信息。創(chuàng)建航班信息: 包括航班號、起飛時間、降落時間、起飛抵達城市、航班票價、 及票價的折扣,票數等信息 . 錄入的信息應該保存在一個文件里。瀏覽航班信息 : 通過瀏覽系統(tǒng),客戶可以根據自己時間、金錢等多方面的因素選 擇適合自己的航班。修
2、改航班信息: 當航班信息改變可以修改航班數據文件。 查詢航班信息:可通過航班號查詢,可通過飛機終點站查詢, 也可以按航線查詢 。 刪除航班信息 : 可通過航班號刪除,也可以按航線刪除。添加航班信息: 按添加的航班數量依次添加航班信息訂票: 可以訂票,如果該航班已經無票,可以推薦相關航班退票: 不滿意所訂的票時可進行退票三、算法的基本思想1. 涉及到的數據結構typedef struct flightnode /f定義結構體數組int num; /航班號char start20; /起始城市char over20; /終點城市char Stime10; /起始時間har Etime10;int
3、Price;int Discount; /折扣int count; /機票數struct flightnode *next; NODE;2.基本功能模塊主函數模塊。1) 函數原形:void mai n();2) 功能:調用initlist(&h)函數和menu()函數,初始化函數和顯示主界面創(chuàng)建航班信息模塊1) 函數原形:void creat();2) 功能:本模塊是對程序中的create()函數和save()函數的詳細說明鏈表的存儲結構,對該創(chuàng)建的鏈表調用save ()函數,存儲到數據文件中去瀏覽航班信息模塊1) 函數原形:void print();2) 功能:輸出航班信息修改航班信
4、息模塊1) 函數原形:void change()2) 功能:當航班信息改變可以修改航班數據文件20 查找航班信息模塊1)函數原形 : NODE *search() :查找航班信息數據2) 功能:由于航班的錄入和保存是由鏈表存儲結構進行的,所以此查詢就可通 過鏈表對該文件進行查看或者查詢, 查詢我們可根據航班號和航班抵達的城市和 航線匹配查詢,在查詢中將需要查詢的航班號 no 和文件閱讀時指針所指的值 num 進行比較,而按抵達城市查找則利用函數 strcmp(p->next->start,name1) 若匹配則輸出;刪除航班信息模塊1)函數原形 : void del()2) 功能:
5、選擇按什么方式刪除,然后按該方式刪除添加航班信息模塊1)函數原形 : void add() ;2) 功能:按添加的航班數量依次添加航班信息訂票信息模塊1)函數原形 : int book_tickets()2) 功能: 先根據 search() 函數查詢要訂票的航班, 在訂票時應先按乘客想要定的 航班號或者抵達城市或航線查詢,并按乘客欲定的票的數目與查詢數目進行比 較,若訂票的票數小于該航班票數,則輸出訂票成功,且在整個定票系統(tǒng)中, 所有的定票都用鏈表進行存儲管理退票信息模塊1)函數原形 : int tuipiao()2) 功能:在退票系統(tǒng)中即對航班票的數據文件進行管理,所以可先按照查詢航 班票
6、的方法, 若查詢到的票的信息和乘客此時要求退票的信息相匹配, 則在該定 票數據文件中刪除相應的該票的節(jié)點,再修改其航班信息253.主要功能模塊流程圖歡迎進入中國民航管理系統(tǒng)件文 自心自心自心息自心 亠呂亠一士 _兇"亠=卻_ J. - J- /. J 7HZHZS.四、系統(tǒng)測試1.選擇1,運行界面如下:班班班息息 a.-B.r-.T- Ir.-r.' L- JI 建養(yǎng)找除加WW屯 創(chuàng)瀏修查刪添訂退退123456780請在0-9中選擇以回車犍結束:請輸入要輸入的航班數量汚0 7 9 5 7 U-18 0 5 £! 4 冋蠱:3 Ir票藝 乞班理示第M個信息已經輸完第4
7、個信息己經輸完巴匕:8:3 月 Tr i :s-s:6' 口廷站饗 璉點始達示 終00:39 415 0 450B004 島蘇1518口廷站氧11-/1-己_轟盂仍礬魏箕他任意犍2選擇2,運行界面如下:請在中選擇以回車犍結東:總共5個航班信息航班萬2102112丄2213214站始肥艮肥島 起合黃武合青起始時間9:B09:000 0 二 b1抵達時間11 :Q013:00is:e»19:0018 :OB航班示價8971200877543986票價折扣0.90.80.?0.00.?票數654B76345 £543463選擇3,運行界面如下:請重新輸入本航班號:215起
8、始站:江蘇趙始時間=15:10抵達時間:1S:30航班票價:QOC票價折扣=P.9恥票數:是否繼續(xù)修改?請錐入夫呑或rw以回車犍結東:no4. 選擇4,運行界面如下:請輸入航班號;1E13k找航班信息成珈肌班號213起始站終點站起始時間 抵達時間航班票價票價折扣票 合肥 淮北 18:001?:005430.0694是否重新查找?5. 選擇5,運行界面如下:請在0“中選擇以回車鍵結東;敘按航班號刪除池按航線刪除 ««.返回請在中選擇以回車犍結束:航班號;刪除成功*乘0余4條信息6. 選擇6,運行界面如下:2需用齋:1號城城19示暫班飛達飛迖眷示0 0 枚京: 缶北¥
9、 2 6 1 2 4 SB B信0,個按一-口總共5個肌班信息號hyQIl 2 3 &11111、一幾 2 2 2 2 2站始肥山漢肥漢 起合黃武合武起始時間9:S09:0814:0018:6019:0U抵達時間11:0013:0015:0019:00航班票價89712808?754310BS票價折扣0_9Q-B0.90-0票數£5呂8763456541237. 選擇7,運行界面如下:請輸入航班號:216查找航班信息成功辛亢班號 起始站線趣占起始時間抵達時間航班票價票價折扣票數216武漢北京 19:0022:601000Q.Q123是否重新爭? 請犍入或no 后回車犍結東請輸
10、入您要訂的機票數以回車槌結束:'訂票成功¥8. 選擇8,運行界面如下:16杳找航班信息成功學慍班號 越始站 絳體占起始時間扌氐達時間航班票價崇價折扣 票數211黃山北京?:0013:001200B.8876眉回棄鍵結東no請輸入您要退的機票數目;退票咸功字請鍵入y眉或rw以回車鍵結東:9. 選擇0,運行界面如下:件丈 自心自心自心自心自心自心 直信fj.B.信豈 班班班班班班息息 亠幾二幾 機冗二幾 耳=口_口 TFdTl.rHrdl JaJJTP;F*lAar-a* 建齧找除加IgBHa 創(chuàng)瀏修查刪添訂退退 123456780請在吐y中選擇以回車犍結東;'謝謝使用,
11、再見!*ress any kwy to continue五.結論本次程序設計主要用到了結構體、 調用函數、文件的保存、輸入以及輸出等 功能。使我對數據結構有了更深一層的認識,特別是對動態(tài)鏈表和文件的運用得 到了很大的提高。在本次實驗中程序曾多次編譯、 運行出錯, 多虧了王帥老師的指導才將錯誤找出 并改正,通過本次實驗,我認識到實踐和動手的重要性。六源程序及系統(tǒng)文件使用說明/標準輸入、輸出頭文件/包含字符串函數處理頭文件/包含動態(tài)存儲與釋放函數頭文件 /定義結構體數組/航班號/起始城市/終點城市/起始時間/折扣/機票數程序清單#include<stdio.h>#include<
12、string.h>#include<stdlib.h> typedef struct flightnodeint num;char start20;char over20;char Stime10;char Etime10;int Price; float Discount;int count;struct flightnode *next; NODE;%.1f %9d#define PRINT "%4d %9.6s %9.6s %9.6s %9.6s %9d n",p->next->num,p->next->start,p->
13、;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 ch
14、ange();/修改信息void menu();/菜單void initlist(NODE *);/ 初始化函數void add();/添加信息函數NODE *h=NULL; / 建立全局變量,存鏈表頭指針int m=0;/航班數量 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",&q
15、uot;rb")!=NULL)/ 打開文件,并判斷是否出錯printf(" 信息文件已經存在,不必創(chuàng)建 ! 按任意鍵后回 車返回 nnn");/ 打印出錯提示fclose(fp);fflush(stdin);getchar();return ;p=h;printf(" 請輸入要輸入的航班數量 :");fflush(stdin);/清除文件緩沖區(qū)scanf("%d",&flightnum);/讀取航班數system("cls");/ 清屏printf(" 請依次輸入航班信息 :nn&quo
16、t;);/打印提示信息printf("n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL; printf(" 航班號 :"); fflush(stdin);scanf("%d",&p->next->num);/讀取航班號printf(" 起始站 :");fflush(stdin);scan f("%10s",&p-> next-
17、>start); 讀取起飛城市 printf(" 終點站 :"); fflush(stdin);scan f("%10s",&p->n ext->over); 讀取抵達城市 printf(" 起始時間 :");fflush(stdin);scan f("%10s",&p->n ext->Stime); 讀取起飛時間 printf(" 抵達時間 :");fflush(stdin);scan f("%10s",&p->n
18、 ext->Etime); 讀取抵達時間 printf(" 航班票價 :");fflush(stdin);scan f("%d",&p->n ext->Price); 讀取航班票價printf(" 票價折扣 :"); fflush(stdin);scanf("%10f",&p->next->Discount);/ 讀取票價折扣 printf(" 機票數 :",m);fflush(stdin);scanf("%d",&p-&
19、gt;next->count);/ 讀取機票數printf("第%d個信息已經輸完n",i+1);p=p->next;m+;printf(" 信息輸入完畢,是否存盤 :存盤按 0,不存盤按其他任意鍵 "); fflush(stdin);y=getchar(); if(y='0')save();/Z將結構體信息存盤prin t();/輸出輸入的航班信息void save()保存模塊程序NODE *p=NULL;/ 定義移動指針FILE *fp,*fp1;/ 定義指向文件指針p=h;if(fp=fopen("air.da
20、t","wb")=NULL)/ 打開文件并判斷是否出錯printf("創(chuàng)建文件失?。nn");打印出錯提示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(NO
21、DE),1,fp)=0)/ 向文件寫入數據,并判斷是否出 錯printf("向文件輸入數據失敗 !nnn");break; else p=p->next; fprintf(fp1,"%d",m); / 按指定的格式輸出到 fp1 所指定的文件中 fclose(fp);/ 關閉文件fclose(fpl);/ 關閉文件in t read()/從文件讀取信息模塊FILE *fp,*fp1;/ 定義文件指針 NODE *p=NULL;int i; initlist(&h);p=h;if(fp=fopen("air.dat",&q
22、uot;rb")=NULL)/ 打開文件,并判斷是否出錯 printf(" 出錯,請檢查信息文件是否存在,按任意鍵后回車返回住菜單 nnn");打印出錯提示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)
23、; /從 fp1 所指定的文件中按給定的格式將輸入數據送內 存中fclose(fpl);/ 關閉文件 printf("n總共 %d 個航班信息 n",m);for(i=0;i<m;i+) p->next=(NODE *)malloc(sizeof(NODE); p->next->next=NULL;fread(p-> next,sizeof(NODE),1,fp); 從文件中讀取信息 p=p->next;fclose(fp);/ 關閉文件return 1;void print()/ 打印模塊NODE *p=NULL; if(read()=
24、0)return;/ 調用讀取文件函數 ,并判斷是否文件存在。 p=h;printf("n");printf(" 航班號 起始站終點站 起始時間 抵達時間票價折扣 票數 n");while(p->next!=NULL)printf(PRINT);/ 打印信息p=p->next;printf("");printf("nnnnnn 請按任意鍵后回車結束返回上層菜單 :n"); fflush(stdin);getchar();NODE *search()/ 查詢模塊NODE *p=NULL;NODE *x=N
25、ULL; /* 用于記錄查詢到的記錄 */ char name120;char name220;char ii10;int n,no;int flag=0;if(read()=0)return 0;p=h;doprintf("請選擇查找方式:nn");打印查詢方式菜單printf("printf("1.按航班號查找 nn""2.按終點站查找 nn""3.按航線查找 nn""0.返回 nn");printf("請在 0-3 中選擇: nn"" 按其他鍵后回車
26、返回主菜單航班票價/n");:nnnnn");fflush(stdin);scanf("%d",&n);/ 讀取查找方式if(n=0)break;switch(n)case 1:printf("fflush(stdin);scanf("%d",&no);/ 航班號 break;case 2:printf("fflush(stdin);sea nf("%10s" ,n ame2);/讀取終點站 break;ease 3:printf("fflush(stdin);sea
27、nf("%10s", namel);/讀 取起始站 printf("fflush(stdin);sea nf("%10s" ,n ame2);/終點站 break;default: printf("while(p->next!=NULL)請輸入航班號: n");請輸入終點站名稱: n");請輸入起始站名稱: n");請輸入終點站名稱: n");請選擇有效查詢方式 !nnn");if(stremp(p->next->start,name1)=0|stremp(p->
28、;next->over,name2)=0)/按終點站起始站判斷輸出條件printf("n 查找航班信息成功 !nnn");printf(" 航班號 起始站 終點站 起始時間 抵達時間 航班票價 票價折扣 票數 n");printf(PRINT);/ 打印信息x=p->next;flag=1;break;if(p-> next-> num=no)/按航班號判斷輸出條件printf("n 查找航班信息成功 !nnn");printf(" 航班號 起始站 終點站 起始時間 抵達時間 航班票價 票價折扣票數
29、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;/將航班號賦值為0p=h;flag=0;fflush(stdin); scanf("%10s",ii);while(strc
30、mp(ii,"yes")=0);/ 判斷結束return(x);void add()int flightnum;int i,y;NODE*p=NULL;i=read();if(i=0)return;p=h;while(p->next!=NULL)p=p->next;printf(" 請輸入要輸入的航班數量 :");fflush(stdin);scanf("%d",&flightnum);/讀取航班數system("cls");printf("請依次輸入航班信息 :nn");/
31、打印提示信息printf("n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE); p->next->next=NULL;printf("航班號:");fflush(stdin);scanf("%d",&p->next->num);/讀取航班號printf(" 起飛城市 :");fflush(stdin);scan f("%10s",&p-> next->sta
32、rt); 讀取起飛城市printf(" 抵達城市 :");fflush(stdin);scan f("%10s",&p->n ext->over); 讀取抵達城市printf(" 起飛時間 :");fflush(stdin);scan f("%10s",&p->n ext->Stime); 讀取起飛時間printf(" 抵達時間 :");fflush(stdin);scan f("%10s",&p->n ext->E
33、time); 讀取抵達時間printf(" 航班票價 :");fflush(stdin);scan f("%d",&p->n ext->Price); 讀取航班票價printf(" 票價折扣 :");fflush(stdin);scanf("%10f",&p->next->Discount);/ 讀取票價折扣printf(" 機票數 :",m);fflush(stdin);scan f("%d",&p->n ext->
34、;co un t); 讀取機票數printf("第%d個信息已經輸完n",i+1);p=p->next;m+;printf(" 信息輸入完畢,是否存盤 :存盤按 0,不存盤按其他任意鍵后回車 "); fflush(stdin);scanf("%d",&y);if(y=0)save();/將結構體信息存盤 prin t();/輸出輸入的航班信息void del()刪除模塊NODE *p=NULL;NODE *temp=NULL;char name120;char name220;char ii10;int no,n;int
35、 flag=0;if(read()=0)return;/ 調用讀取函數doprintf(" printf("II請選擇刪除以方式回車鍵結束: nn");*1.按航班號刪除 nn"*2.按航線刪除 nn"" *0.返回 nn"); printf("請在 0-2 中選擇以回車鍵結束: nnn")fflush(stdin);if(n=0)break;/跳出循環(huán)switch(n)case 1:printf("fflush(stdin); scanf("%d",&no); p=
36、h;break;case 2:printf("fflush(stdin);scan f("%10s", namel);/讀 取起始站 printf(" fflush(stdin); scanf("%10s",name2);p=h;break;default: printf(" 請選擇有效的選項: continue;航班號: n");/讀取航班號/跳出循環(huán)起始站名稱: n");終點站名稱: n");/讀取終點站/跳出循環(huán)n");scanf("%d",&n);/
37、 讀取刪除方式刪除成功!剩余%d條信息nnnnn",m);沒有這個信息 !nnnnn");是否繼續(xù)刪除 n"while(p->next!=NULL) if(p->next->num=no|(strcmp(p->next->start,name1)=0&&strcmp(p->nex t->over,name2)=0)./判斷輸入信息是否存在temp= p->next->next;p->next=temp; m-;flag=1; printf(" break;p= p->nex
38、t;if(!flag)printf("printf("" 請鍵入 yes 或 no 以回車鍵結束 n"); fflush(stdin);scanf("%10s",ii);/讀取是否繼續(xù)信息save(); /調用存儲函數if(!strcmp(ii,"yes") / 判斷是否繼續(xù)刪除printf(" 請按任意鍵后回車結束返回上層菜單 :nnnnnn"); break;while(1);/判斷結束int book_tickets()/ 訂票模塊int n;char a10;NODE *x=NULL;N
39、ODE *p=NULL;do printf(" 查找要訂票的航班: n");x = search();調用查詢模塊if(x!=NULL) printf(" 請輸入您要訂的機票數以回車鍵結束: n"); fflush(stdin);scanf("%d",&n);/讀取所訂機票數else return (0);if(n<0) printf(" 請輸入有效的機票數! nnnnnn") ; /判斷機票數是否出錯 break; if(x->count!=0&&x->count>
40、=n)/ 判斷是否出錯 x->count=x->count-n; save();調用保存函數 printf(" 訂票成功 !nn"); break;if(x->cou nt< n)判斷是否出錯printf(" 該航班機票已被定完,請預定其他航班: nnnnnn"); break;printf("是否繼續(xù)?請輸入 yes或no以回車鍵結束:nnnnnn");判斷是 否繼續(xù)訂票fflush(stdin); scanf("%10s",a);while(!strcmp(a,"yes&quo
41、t;); /判斷結束return(1);int tuipiao()/ 退票模塊int n;char a10;NODE *p=NULL;NODE *x=NULL;doprintf(" 查找要退票的航班 n");x= search();/調用查詢模塊if(x!=NULL)printf(" 請輸入您要退的機票數目: n");fflush(stdin);scanf("%d",&n);/輸入所退票數else return (0);while(n<0)/ 判斷票數是否有效printf(" 請輸入有效的機票數! nnnnnn
42、");fflush(stdin);scanf("%d",&n);x->count= 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();v
43、oid 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("%10s&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版科技公司股東股權分割與轉讓及管理層激勵協(xié)議3篇
- 2025版二手房公積金貸款買賣合同(含稅費支付)4篇
- 二零二五年度施工現(xiàn)場大氣污染防治協(xié)議2篇
- 鍋爐課程設計與體會
- 鍋爐課程設計excel計算軟件
- 二零二五年駕校場地租賃與交通疏導服務合同2篇
- 2025年增資協(xié)議法規(guī)解釋說明
- 二零二五年科技型中小企業(yè)貸款抵押擔保協(xié)議3篇
- 二零二五年度自然災害現(xiàn)場錄像采集合同2篇
- 施工方案明細
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當行業(yè)發(fā)展前景預測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學年北師大版高二上學期期末英語試題及解答參考
- 動物醫(yī)學類專業(yè)生涯發(fā)展展示
- 批發(fā)面包采購合同范本
- 乘風化麟 蛇我其誰 2025XX集團年終總結暨頒獎盛典
- 2024年大數據分析公司與中國政府合作協(xié)議
- 一年級數學(上)計算題專項練習匯編
評論
0/150
提交評論