



付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、飛機訂票系統下載可編輯一、課程設計目的( 1)了解并掌握算法的設計方法,具備初步的獨立分析和設計能力;( 2)初步掌握軟件開發過程的問題分析、系統設計、程序編碼、測試等基本方法和技能;( 3)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;二、課程設計的內容和要求本程序主要用于機票的管理,甩以提供了以下功能,行班信息輸入輸出保存、航線查詢、訂票,退票,和修改航班信息。創建航班信息: 包括航班號、起飛時間、降落時間、起飛抵達城市、航班票價、及票價的折扣,票數等信息 . 錄入的信息應該保存在一個文件里。瀏覽航班信息 : 通過瀏覽系統,客戶可以根據自己時間、金錢等多方面的因素選擇適合自己的
2、航班。修改航班信息: 當航班信息改變可以修改航班數據文件。查詢航班信息: 可通過航班號查詢, 可通過飛機終點站查詢, 也可以按航線查詢 。刪除航班信息 : 可通過航班號刪除,也可以按航線刪除。添加航班信息: 按添加的航班數量依次添加航班信息訂票: 可以訂票,如果該航班已經無票,可以推薦相關航班退票: 不滿意所訂的票時可進行退票三、算法的基本思想1. 涉及到的數據結構typedef struct flightnode/定義結構體數組int num;/航班號char start20;/起始城市char over20;/終點城市char Stime10;/起始時間har Etime10;int Pr
3、ice;int Discount;/折扣int count;/機票數struct flightnode *next; NODE;.專業 .整理 .下載可編輯2. 基本功能模塊飛機票管理系統創瀏修查刪添建覽改找除加航航航航航航訂退班班班班班班票票信信信信信信息息息息息息主函數模塊。1)函數原形: void main();2)功能:調用 initlist(&h)函數和 menu()函數,初始化函數和顯示主界面創建航班信息模塊1)函數原形: void creat();2)功能:本模塊是對程序中的 create() 函數和 save()函數的詳細說明鏈表的存儲結構,對該創建的鏈表調用 save
4、()函數,存儲到數據文件中去瀏覽航班信息模塊1) 函數原形 : void print();2) 功能:輸出航班信息修改航班信息模塊1) 函數原形 : void change()2) 功能:當航班信息改變可以修改航班數據文件.專業 .整理 .下載可編輯20 查找航班信息模塊1)函數原形 :NODE *search() :查找航班信息數據2) 功能:由于航班的錄入和保存是由鏈表存儲結構進行的,所以此查詢就可通過鏈表對該文件進行查看或者查詢, 查詢我們可根據航班號和航班抵達的城市和航線匹配查詢,在查詢中將需要查詢的航班號no 和文件閱讀時指針所指的值num 進行比較,而按抵達城市查找則利用函數str
5、cmp(p->next->start,name1)若匹配則輸出;刪除航班信息模塊1)函數原形 :void del()2) 功能:選擇按什么方式刪除,然后按該方式刪除添加航班信息模塊1)函數原形 :void add();2) 功能:按添加的航班數量依次添加航班信息訂票信息模塊1)函數原形 : int book_tickets()2) 功能: 先根據 search() 函數查詢要訂票的航班,在訂票時應先按乘客想要定的航班號或者抵達城市或航線查詢, 并按乘客欲定的票的數目與查詢數目進行比較,若訂票的票數小于該航班票數,則輸出訂票成功,且在整個定票系統中,所有的定票都用鏈表進行存儲管理退票
6、信息模塊1)函數原形 : int tuipiao()2) 功能:在退票系統中即對航班票的數據文件進行管理,所以可先按照查詢航班票的方法, 若查詢到的票的信息和乘客此時要求退票的信息相匹配,則在該定票數據文件中刪除相應的該票的節點,再修改其航班信息。.專業 .整理 .下載可編輯3主要功能模塊流程圖開始輸出界面選擇操作選擇 1選擇 2選擇 3選擇 4選擇 5選擇 6選擇 7選擇 8選擇 0結束創建航班信息瀏覽航班信息修改航班信息查找航班信息刪除航班信息添加航班信息訂票信息退票信息退出按航班或終點站或航線按航班號或航線.專業 .整理 .下載可編輯四、系統測試1. 選擇 1,運行界面如下:2選擇 2,
7、運行界面如下:.專業 .整理 .下載可編輯3選擇 3,運行界面如下:4選擇 4,運行界面如下:.專業 .整理 .下載可編輯5選擇 5,運行界面如下:6. 選擇 6,運行界面如下:.專業 .整理 .下載可編輯7. 選擇 7,運行界面如下:8. 選擇 8,運行界面如下:.專業 .整理 .下載可編輯9. 選擇 0,運行界面如下:五結論本次程序設計主要用到了結構體、 調用函數、文件的保存、 輸入以及輸出等功能。使我對數據結構有了更深一層的認識, 特別是對動態鏈表和文件的運用得到了很大的提高。在本次實驗中程序曾多次編譯、 運行出錯,多虧了王帥老師的指導才將錯誤找出并改正,通過本次實驗,我認識到實踐和動手
8、的重要性。.專業 .整理 .下載可編輯六源程序及系統文件使用說明程序清單#include<stdio.h>/標準輸入、輸出頭文件#include<string.h>/包含字符串函數處理頭文件#include<stdlib.h>/包含動態存儲與釋放函數頭文件typedef struct flightnode/定義結構體數組int num;/航班號char start20;/起始城市char over20;/終點城市char Stime10;/起始時間char Etime10;int Price;float Discount;/折扣int count;/機票數s
9、truct flightnode *next; NODE;#define PRINT "%4d %9.6s%9.6s %9.6s %9.6s %9d%.1f%9dn",p->next->num,p->next->start,p->next->over,p->next->Stime,p->next->Etime,p->next->Price,p->next->Discount,p->next->count /定義輸出格式void creat();/創建航班信息文件void prin
10、t();/輸出航班信息void save();/保存航班信息int read();/讀取航班信息NODE *search();/查找航班信息void del();/刪除航班信息int book_tickets();/訂票信息int tuipiao();/退票信息void change();/修改信息void menu();/菜單void initlist(NODE *);/初始化函數void add();/添加信息函數NODE *h=NULL; / 建立全局變量,存鏈表頭指針int m=0;/航班數量void initlist(NODE *h)*h=(NODE *)malloc(sizeof(
11、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("信息文件已經存在,不必創建! 按任意鍵后回車返回 nnn");/打印出錯提示fclose(fp);fflush(stdin);getchar();return ;p=h;printf("請輸入
12、要輸入的航班數量:");fflush(stdin);/清除文件緩沖區scanf("%d",&flightnum);/讀取航班數system("cls");/清屏printf("請依次輸入航班信息 :nn");/打印提示信息printf("-n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;printf("航班號 :");fflush(stdi
13、n);scanf("%d",&p->next->num); / 讀取航班號 printf(" 起始站 :");fflush(stdin);scanf("%10s",&p->next->start);/ 讀取起飛城市 printf(" 終點站 :");fflush(stdin);scanf("%10s",&p->next->over);/ 讀取抵達城市 printf(" 起始時間 :");fflush(stdin);s
14、canf("%10s",&p->next->Stime);/ 讀取起飛時間 printf(" 抵達時間 :");fflush(stdin);scanf("%10s",&p->next->Etime);/讀取抵達時間printf("航班票價 :");fflush(stdin);scanf("%d",&p->next->Price);/讀取航班票價printf("票價折扣 :");.專業 .整理 .下載可編輯fflush
15、(stdin);scanf("%10f",&p->next->Discount);/讀取票價折扣printf("機票數 :",m);fflush(stdin);scanf("%d",&p->next->count);/讀取機票數printf("第%d個信息已經輸完 n",i+1);p=p->next;m+;printf("信息輸入完畢,是否存盤: 存盤按 0,不存盤按其他任意鍵 ");fflush(stdin);y=getchar();if(y=
16、39;0')save();/將結構體信息存盤print();/輸出輸入的航班信息void save()/保存模塊程序NODE *p=NULL;/定義移動指針FILE *fp,*fp1;/定義指向文件指針p=h;if(fp=fopen("air.dat","wb")=NULL)/打開文件并判斷是否出錯printf("創建文件失敗 !nnn");/打印出錯提示fflush(stdin);getchar();return;if(fp1=fopen("num.dat","wb")=NULL)/打
17、開文件并判斷是否出錯printf("創建文件失敗 !nnn");/打印出錯提示fflush(stdin);getchar();return;while(p->next!=NULL)if(fwrite(p->next,sizeof(NODE),1,fp)=0)/向文件寫入數據,并判斷是否出錯printf("向文件輸入數據失.專業 .整理 .下載可編輯敗 !nnn");break;else p=p->next;fprintf(fp1,"%d",m); / 按指定的格式輸出到 fp1 所指定的文件中 fclose(fp);
18、/ 關閉文件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");/打印出錯提示fflush(stdin);getchar();return 0;if(fp1=fopen("num.dat","
19、rb")=NULL)/打開文件并判斷是否出錯printf("創建文件失敗 !nnn");/打印出錯提示fflush(stdin);getchar();return 0;fscanf(fp1,"%d",&m); /從 fp1 所指定的文件中按給定的格式將輸入數據送內存中fclose(fp1);/關閉文件printf("n總共 %d個航班信息 n",m);for(i=0;i<m;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;fr
20、ead(p->next,sizeof(NODE),1,fp);/ 從文件中讀取信息 p=p->next;fclose(fp);/關閉文件.專業 .整理 .下載可編輯return 1;void print()/打印模塊NODE *p=NULL;if(read()=0)return;/調用讀取文件函數 , 并判斷是否文件存在。p=h;printf(" n");printf("航班號起始站終點站起始時間抵達時間航班票價票價折扣票數 n");while(p->next!=NULL)printf(PRINT);/打印信息p=p->next;
21、printf("");printf("nnnnnn 請按任意鍵后回車結束返回上層菜單 :n"); fflush(stdin);getchar();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"
22、);printf("1.按航班號查找 nn""2.按終點站查找 nn""3.按航線查找 nn""0.返回 nn");.專業 .整理 .下載可編輯printf("請在 0-3 中選擇: nn""按其他鍵后回車返回主菜單 :nnnnn"); fflush(stdin); scanf("%d",&n);/ 讀取查找方式 if(n=0)break;switch(n)case 1:printf("請輸入航班號: n");fflush(st
23、din);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",na
24、me2);/終點站break;default: printf("請選擇有效查詢方式 !nnn");while(p->next!=NULL)if(strcmp(p->next->start,name1)=0|strcmp(p->next->over,name2)=0) / 按終點站起始站判斷輸出條件printf("n查找航班信息成功 !nnn");printf("航班號起始站終點站起始時間抵達時間航班票價票價折扣票數 n");printf(PRINT);/打印信息x=p->next;flag=1;br
25、eak;.專業 .整理 .下載可編輯if(p->next->num=no)/按航班號判斷輸出條件printf("n查找航班信息成功 !nnn");printf("航班號起始站終點站起始時間抵達時間航班票價票價折扣票數 n");printf(PRINT);/打印信息x=p->next;flag=1;break;p=p->next;if(!flag) printf("查找失敗 ! :nnnnn");printf ( "nnn""是否重新查找 ?n""請鍵入 yes
26、或 non""后回車鍵結束 n""-nnnnn");no=0;/ 將航班號賦值為0p=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;i=read();if(i=0)return;p=h;while(p->next!=NULL)p=p->next;printf("請輸入要輸入的航班數量
27、:");fflush(stdin);scanf("%d",&flightnum);/讀取航班數system("cls");printf("請依次輸入航班信息 :nn"); /打印提示信息.專業 .整理 .下載可編輯printf("-n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;printf("航班號 :");fflush(stdin);s
28、canf("%d",&p->next->num);/讀取航班號printf("起飛城市 :");fflush(stdin);scanf("%10s",&p->next->start);/ 讀取起飛城市 printf(" 抵達城市 :");fflush(stdin);scanf("%10s",&p->next->over);/ 讀取抵達城市 printf(" 起飛時間 :");fflush(stdin);scanf(&
29、quot;%10s",&p->next->Stime);/ 讀取起飛時間 printf(" 抵達時間 :");fflush(stdin);scanf("%10s",&p->next->Etime);/讀取抵達時間printf("航班票價 :");fflush(stdin);scanf("%d",&p->next->Price);/讀取航班票價printf("票價折扣 :");fflush(stdin);scanf("
30、%10f",&p->next->Discount);/讀取票價折扣printf("機票數 :",m);fflush(stdin);scanf("%d",&p->next->count);/讀取機票數printf("第%d個信息已經輸完 n",i+1);p=p->next;m+;printf(" 信息輸入完畢,是否存盤 : 存盤按 0,不存盤按其他任意鍵后回車 "); fflush(stdin);scanf("%d",&y);if(y
31、=0)save();/將結構體信息存盤print();/輸出輸入的航班信息void del()/刪除模塊.專業 .整理 .下載可編輯NODE *p=NULL;NODE *temp=NULL;char name120;char name220;char ii10;int no,n;int flag=0;if(read()=0)return;/調用讀取函數doprintf("請選擇刪除以方式回車鍵結束:nn");printf("*1.按航班號刪除 nn""*2.按航線刪除 nn""*0.返回 nn");printf(&
32、quot;請在0-2中選擇以回車鍵結束:nnn");fflush(stdin);scanf("%d",&n);/讀取刪除方式if(n=0)break;/跳出循環switch(n)case 1:printf("航班號: n");fflush(stdin);scanf("%d",&no);/讀取航班號p=h;break;/跳出循環case 2:printf("起始站名稱: n");fflush(stdin);scanf("%10s",name1);/讀取起始站printf(
33、"終點站名稱: n");fflush(stdin);scanf("%10s",name2);/讀取終點站p=h;break;/跳出循環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)./判斷輸入信息是否存在temp=
34、p->next->next;p->next=temp;m-;flag=1;printf("刪 除 成 功 ! 剩 余 %d 條 信 息nnnnn",m);break;p= p->next;if(!flag)printf("沒有這個信息 !nnnnn");printf("是否繼續刪除 n""請鍵入yes 或 no 以回車鍵結束n");fflush(stdin);scanf("%10s",ii);/讀取是否繼續信息save(); /調用存儲函數if(!strcmp(ii,&q
35、uot;yes") /判斷是否繼續刪除printf("請按任意鍵后回車結束返回上層菜單 :nnnnnn");break;while(1); /判斷結束int book_tickets()/訂票模塊int n;char a10;NODE *x=NULL;NODE *p=NULL;doprintf("查找要訂票的航班: n");x = search();/調用查詢模塊if(x!=NULL)printf(" 請輸入您要訂的機票數以回車鍵結束: n"); fflush(stdin);scanf("%d",&
36、;n);/讀取所訂機票數else return (0);if(n<0).專業 .整理 .下載可編輯printf("請輸入有效的機票數!nnnnnn");/判斷機票數是否出錯break;if(x->count!=0&&x->count>=n)/判斷是否出錯x->count=x->count-n;save();/調用保存函數printf("訂票成功 !nn");break;if(x->count<n)/判斷是否出錯printf(" 該航班機票已被定完,請預定其他航班: nnnnnn&q
37、uot;); break;printf(" 是否繼續?請輸入 yes 或 no 以回車鍵結束 :nnnnnn");/ 判斷是否繼續訂票fflush(stdin);scanf("%10s",a);while(!strcmp(a,"yes"); / 判斷結束 return(1);int tuipiao()/退票模塊int n;char a10;NODE *p=NULL;NODE *x=NULL;doprintf("查找要退票的航班 n");x= search();/調用查詢模塊if(x!=NULL)printf(&qu
38、ot;請輸入您要退的機票數目:n");fflush(stdin);scanf("%d",&n);/輸入所退票數else return (0);while(n<0)/判斷票數是否有效printf("請輸入有效的機票數! nnnnnn");.專業 .整理 .下載可編輯fflush(stdin);scanf("%d",&n);x->count= x->count+n;save();/調用保存模塊printf("退票成功 !nnnnn");printf("是否繼續退票?
39、請鍵入yes 或 no 以回車鍵結束 :nnn");/判斷是否繼續退票fflush(stdin);scanf("%10s",a);while(!strcmp(a,"yes");/判斷并跳出循環return (1);fflush(stdin);getchar();void change()/修改模塊char j10;NODE *x=NULL;NODE *p=NULL;if(read()=0)return;dox=search();if(x!=NULL)printf( "請重新輸入本條信息nnnnn");printf("
40、;航班號 :n");fflush(stdin);scanf("%d",&x->num);/讀取航班號printf("起始站 :n");fflush(stdin);scanf("%10s",&x->start);/讀取起始站printf("終點站 :n");fflush(stdin);scanf("%10s",&x->over);/讀取終點站printf("起始時間 :n");fflush(stdin);scanf("%10s",&x->Stime);/讀取起始時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45815-2025物流信息服務提供方之間的數據交換要求
- 核酸核苷酸行業深度研究分析報告(2024-2030版)
- 2025-2030年中國瓶裝氧氣行業深度研究分析報告
- 2025-2030年中國五金機械塑料行業深度研究分析報告
- 餐飲協會培訓課件
- 2025年中國農用金屬配件行業市場發展前景及發展趨勢與投資戰略研究報告
- 中國蔬菜基地行業市場發展現狀及前景趨勢與投資分析研究報告(2024-2030)
- 2025年抖音沖鋒衣行業趨勢洞察報告
- 2025年 朝陽師范學院高校招聘考試筆試試題附答案
- 2025-2030年中國參茸滋補品行業市場供需態勢及前景戰略研判報告
- 7數滬科版期末考試卷-2024-2025學年七年級(初一)數學下冊期末考試模擬卷02
- 人教版(2024)2025年春季學期七年級下冊地理期末復習模擬試卷(原卷)
- 2025年全國普通高校招生全國統一考試數學試卷(新高考Ⅰ卷)含答案
- 生物●廣東卷丨2024年廣東省普通高中學業水平選擇性考試生物試卷及答案
- 2025年河南省豫地科技集團有限公司社會招聘169人筆試參考題庫附帶答案詳解析集合
- 2025年中國電風扇行業市場現狀、進出口貿易、市場規模預測報告
- 智能建造技術概述
- 重慶市渝北區名校2025屆生物七下期末復習檢測模擬試題含解析
- 揚州印象城市介紹旅游宣傳
- 歷史明清時期的科技與文化課件-2024-2025學年統編版七年級歷史下冊
- 初三道法補考試卷及答案
評論
0/150
提交評論