數(shù)據(jù)結構報告_第1頁
數(shù)據(jù)結構報告_第2頁
數(shù)據(jù)結構報告_第3頁
數(shù)據(jù)結構報告_第4頁
數(shù)據(jù)結構報告_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、航空客運訂票系統(tǒng)基本要求 1.二、問題描述1.三、需求分析 1.四、概要設計2.1、系統(tǒng)的抽象數(shù)據(jù)類型2.2、程序中用到的庫函數(shù)3.3、程序的四大模塊3.4、函數(shù)間調用關系3.5、算法設計:(每個模塊的算法設計說明如下:)46、存儲結才設計:4.五、詳細設計6.1、主程序中需要的全程量 6.2.部分函數(shù)模塊以及流程圖: 61) 主函數(shù)模塊6.2) .錄入信息函數(shù)模塊: 8.3) .查詢航班信息函數(shù)模塊9.4) .訂票功能函數(shù)模塊:1.15) .退票功能函數(shù)模塊136)顯示信息函數(shù)模塊:15六、測試分析1.71 .數(shù)據(jù)測試1.72 .測試評價:213 .遇到的問題及解決方法 22七、數(shù)據(jù)

2、結構實習心得體會 22八、參考文獻:23九、附錄:源程序24、航空客運訂票系統(tǒng)基本要求1、每條航線所涉及的信息有:終點站名、航班號、飛機號、飛機周日(星期幾)、 乘員定額、余票量、訂定票的客戶名單(包括姓名、訂票量、艙位等級1, 2或3)以及等候替補的客戶名單(包括姓名、所需數(shù)量)。2、系統(tǒng)能實現(xiàn)的操作和功能如下:1)查詢航線:根據(jù)客戶提出的終點站名輸出如下信息:航班號、飛機號、 星期幾飛行,最近一天航班的日期和余票額;2) 承辦訂票業(yè)務:根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班 票額情況,若有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或 余票少余訂票額,則需重新詢問客戶要求。若

3、需要,可登記排隊候補;3)承辦退票業(yè)務:根據(jù)客戶提出的情況(日期、航班號),為客戶辦理退票 手續(xù),然后查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若 所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其它排隊 候補的客戶。實現(xiàn)提示:兩個客戶名單可分別由線性表和隊列實現(xiàn)。 為查找方便,已訂票客戶 的線性表應按客戶姓名有序,并且,為了插入和刪除方便,應以鏈表作為存儲結 構。由于預約人數(shù)無法預計,隊列也應以鏈表作為存儲結構。、問題描述設計一個航班信息查詢與訂票系統(tǒng)程序, 要求設計航班信息,訂票信息的存儲結 構,并實現(xiàn)以下功能:士 錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)

4、據(jù)結構、具 體數(shù)據(jù)自定)士 查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵 達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城 市,查詢飛機航班情況;$ 訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結構自己設定)可以訂票,如 果該航班已經無票,可以提供相關可選擇航班;$ 退票:可退票,退票后修改相關數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票 數(shù)量及航班情況,訂單要有編號。修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件三、需求分析1 .本程序以動態(tài)鏈表為存儲結構,有兩個鏈表,第一個鏈表:每個航班信息開 辟一個節(jié)點空間,在節(jié)點中存放航班信息,如航班號,起飛時間,出發(fā)地

5、, 目的地,總座位數(shù),折扣,票價等。第二個鏈表:每個乘客開辟一個節(jié)點, 存放乘客的記錄:姓名,證件號碼,預定的航班號,定單號碼及訂票的數(shù)量。2 .本程序有五大模塊組成,分別為基本信息輸入模塊(包括航班信息輸入和客 戶信息輸入),信息查詢模塊,訂票模塊,修改模塊(包括退票模塊及修改航 班信息模塊)。信息輸入模塊的功能是錄入各航班的基本信息;信息查詢模塊 的功能為提供各種信息查詢的操作;訂票模塊是錄入各訂票人的基本信息; 信息修改模塊是退票和修改航班信息。3 .程序執(zhí)行的命令:1.錄入信息 2. 查詢 3. 訂票 4.退票 5. 修改 6.顯示航班信息7.顯示客戶信息8. 退出4 .測試數(shù)據(jù):航班

6、數(shù)據(jù)庫中的數(shù)據(jù)。以xiaying.txt文件保存。(附在源程序四、概要設計1、系統(tǒng)的抽象數(shù)據(jù)類型設定民航航班信息查詢與客票發(fā)售服務系統(tǒng)的抽象數(shù)據(jù)類型定義:ADT hanban數(shù)據(jù)對象:D=ai|ai CharSet,i=1,2, ,n,n>=0數(shù)據(jù)關系:R= <c1,c2> cl c2 基本操作:creat() ;操作結果:錄入航班信息。search() ;操作結果:進入航班查詢系統(tǒng)。order() ;操作結果:進行訂票。quit() ;操作結果:進行退票。revise() ;操作結果:修改航班信息。print ();操作結果:顯示航班信息。print2();操作結果:顯示客

7、戶資料。Clear() ;操作結果:清除記錄。 ADT hanban2、程序中用到的庫函數(shù)#include <stdio.h>#include <string.h>#include <conio.h>#include <ctype.h>#include <math.h>#include <stdlib.h>#include <malloc.h>3、程序的四大模塊(1)主程序模塊:Void main()do接受命令;處理命令;while(命令!=退出);(2)信息輸入模塊一一完成基本信息的輸入和修改;(3)實現(xiàn)功

8、能模塊一一實現(xiàn)信息查詢、訂票和退票功能操作;(4)信息顯示模塊一一實現(xiàn)錄入信息的顯示。4、函數(shù)間調用關系主函數(shù)錄 入 信 息退航 班 號 查 詢起落地查詢修 改 信 息航 班 信 息客 戶 信 息圖1整體思想方框圖5、算法設計:(每個模塊的算法設計說明如下:)(1)錄入模塊:查找單鏈表的鏈尾,在鏈尾插入一個“航班信息”的新結點。(2)查詢模塊:提供兩種查方式:按航號和按航線查詢,1代表按航號查詢,2代表按航線查詢。0則表示退出查詢。順著單鏈表查找,如果與航班號(航線)一致,輸出相關信息,否則,查詢不成功。(3)訂票模塊:查找乘客要訂的航班號,判斷此航班是否有空位,有則輸入乘客有關信息,訂票 成

9、功,否則失敗。(4)退票模塊:輸入要退票的乘客姓名以及證件號碼,查找乘客資料的鏈表中是否有這位乘客,有則刪去此結點,并在空位加上1,無則退票失敗。(5)修改模塊:輸入密碼,確認是否有權限對航班信息進行修改,有則在航班信息鏈表中查找要修改的結點,進行修改,否則不能修改。6、存儲結構設計:(1)航班的信息:為了便于查找和修改,航班的情況存儲結構采用單鏈表, 每 個元素表示一個航班的情況,包括航班號、起飛達到的時間、余票和出發(fā) 地、目的地、票價以及總票數(shù)八個數(shù)據(jù)項:航班號起飛時問達到時問出發(fā)地目的地總票數(shù)余票票價單鏈表如下: D1 d D2 D3每個結點包括數(shù)據(jù)域和指針域:C語言描述如下:typed

10、ef struct Planechar planeNo10;char start30;char end_time30;char startplace30;char end_place30; int price;int discount;int total;int tamount;struct Plane *next;/*/*/*/*/*/*/*/*/*/*航班信息*/ 航班號*/起飛時間*/ 到達時間*/ 起飛城市*/ 到達城市*/ 機票價格*/ 折后價格*/ 機票總數(shù)*/ 剩余票數(shù)*/數(shù)據(jù)域指針域20Plane;(2)旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲結構,每個數(shù)據(jù)元素包

11、括姓名、證件號碼、航班號和座位號四個數(shù)據(jù)項:旅客姓名證件號碼航班號C語言描述如下:定義乘客資料結點*/typedef struct passengernode /* char name20;char ID_num20;char air_num20;struct passengernode *next;passengernode;五、詳細設計1、主程序中需要的全程量struct Plane/*char planeNo10;/*char start30;/*char end_time30;/*char startplace30;/*char end_place30;/*int price;/*in

12、t discount ;/*int total;/*int tamount/*struct Plane *next; Plane;struct customer/* char name30;/*char ID30;/*int tamount;/*char plane30;/*char no30;/*航班信息*/ 航班號*/ 起飛時間*/ 降落時間?*/ 起飛城市*/ 降落城市*/ 機票價格*/ 折后價格*/ 總機票數(shù)*/ 剩余機票數(shù)*/客戶資料*/ 客戶姓名*/ 證件號*/ 訂票數(shù)量*/ 航班號*/ 訂單編號*/struct customer *next;customer;Struct pla

13、ne *head=NULL;struct customer *glist=NULL;2.部分函數(shù)模塊以及流程圖1)主函數(shù)模塊main() int i;while(1) system( "cls ");printf("nt*定*票*系*統(tǒng)*11);printf("n");printf("nt*1.錄入信息 *");printf("n");printf("n");printf("nt *2.查詢*");printf("n");printf("

14、;nt *3.訂票*");printf("n");printf("nt *4.退票*");printf("n");printf("nt *5.修改*");printf("n");printf("nt *6.顯示航班信息*");printf("n");printf("nt *7.顯示客戶信息*");printf("n");printf("nt *8.退出*");printf("n

15、");printf("nn *");printf("n請選擇操作命令:");while(1)scanf("%d",&i);if(i>=1&&i<=8)break;else printf("n choose 1,2,3,4,5,6,7,8");switch(i)case 1:system(“cls ”);creat();break;case 2:system(“cls ”)search();break;case 3:system(cls )order();break;ca

16、se 4:system(cls )quit();break;case 5:system(cls )revise();break;case 6:system(cls )print();break;case 7:system(cls )print2();break;case 8:exit(0);default:break;主函數(shù)流程圖2) .錄入信息函數(shù)模塊:void *creat()Plane *info;while(1)建立新結點*/info=(Plane*)malloc(sizeof(Plane);/* if(!info)printf("EMS has been full!n&qu

17、ot;);return NULL;printf("n輸入航班號:");scanf("%s",info->planeNo);printf("輸入起飛時間:");scanf("%s",info->start);printf(" 輸入到達時間:");scanf("%s",info->end_time);printf("輸入起飛地點:");scanf("%s",info->startplace);printf("

18、; 輸入到達地點:");scanf("%s",info->end_place);printf("輸入機票后評 :");scanf("%d”,&info->price);printf("輸入折后價格:");scanf("%d”,&info->discount);printf("輸入總機票數(shù):");scanf("%d”,&info->total);printf("輸入剩余票數(shù):");scanf("%d”

19、,&info->tamount);info->next=head;head=info;system("cls");printf(" 是否繼續(xù)? y/n");if(getch()='n'|getch()='N') break;save1(head);輸入信息函數(shù)流程圖圖3輸入信息函數(shù)流程圖3) .查詢航班信息函數(shù)模塊void search()char s130,s230;Plane *p;int i=0,ch;while(1) p=head;printf("請選擇 n");printf

20、("1.按航班號查詢n");printf("2.按起落城市查詢n");printf("3.退出 n");scanf("%d",&ch);if(ch=1) printf("n 請輸入航班號n");scanf("%s",s1);/*讀如航班號 */while(p)if(!strcmp(s1,p->planeNo)printf("n起飛地點:%s",p->startplace);printf("n起飛時間:s",p->

21、;start);printf("n到達地點:s",p->end_place);printf("n到達時間:s",p->end_time);printf("n機票價格:d",p->price);printf("n折后價格:d",p->discount);printf("n總機票數(shù):d",p->total);printf("n剩余票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿

22、!n");/*提示此航班已滿 */p=p->next;i+;else p=p->next;if(!i) printf(" 無此航班 n"); i=0;if(ch=2)printf("輸入起飛地點:");scanf("%s",s1)/printf("n 輸入到達地點:");scanf("%s",s2);while(p)if(!strcmp(s1,p->startplace)&&!strcmp(s2,p->end_place)printf("

23、;起飛地點:%s",p->startplace);printf("n起飛時間:s",p->start);printf("n 到達地點:s",p->end_place);printf("n到達時間:s",p->end_time);printf("n機票價格:d",p->price);printf("n折后價格:d",p->discount);printf("n總機票數(shù):d",p->total);printf("n剩余

24、票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿!n");p=p->next;i+;else p=p->next;if(!i) printf("無此航班 n"); i=0;if(ch=3) break;查詢函數(shù)流程圖4) .訂票功能函數(shù)模塊:void order()customer *info;Plane *p,*q;char s30; int flag=0;while(1)p=q=head;printf("您想預定哪趟航班");scanf(&quo

25、t;%s",&s);if(strcmp(p->planeNo,s)!=0) /*判斷 */printf("無此航班");/* 出錯提示*/p=p->next;getch();break;if(p->tamount=0)printf("此航班已滿.n是否需要預定其他到達該城市的航班:y/n'n");if(getch()='n'|getch()='N') break;elsewhile(q)if(!strcmp(p->end_place,q->end_place)&

26、;&p!=q)printf("您可以預定s號航班到達該城市n",q->planeNo);flag=1;q=q->next;if(flag=0)printf("沒有到打該城市的其他航班");getch();break;elseprintf("目前此航班還有%d張票”,p->tamount);info=(customer*)malloc(sizeof(customer);if(!info)printf("EMS has been full!n");exit(0);printf("n姓名:&qu

27、ot;);scanf("%s",info->name);printf("n身份證號碼:");scanf("%s",info->ID);printf("n航班號:");scanf("%s",info->planeNo);printf("n訂票數(shù)量(<=%d):",p->tamount);scanf("%d”,&info->tamount);p->tamount=p->tamount-info->tamoun

28、t;info->no=num;printf("n您的訂單號是 dn",info->no);num+;info->next=glist;glist=info;printf("是否繼續(xù)? y/n");if('n'=getch()|'N'=getch() break; system( “cls ” );savel(head);save2(glist);訂票函數(shù)流程圖T圖5訂票函數(shù)流程圖5) .退票功能函數(shù)模塊 void quit()char s130,s230,s330;int m=0;Plane *p ;cu

29、stomer *q,*r;while(1) p=head;r=q=glist;printf("輸入姓名:n");scanf("%s",s2);if(strcmp(s2,q->name)!=0) /* 判斷 */printf("您沒有預定機票");getch(); break; /* 出錯提示*/ else printf("您想退訂哪趟航班:n");scanf("%s",s1);if(strcmp(s1,q->planeNo)!=0) /*判斷*/printf("您沒有預定此

30、航班n");getch();break; /*出錯提示*/ elseprintf("輸入身份證號:n");scanf("%s",s3);if(strcmp(s3,q->ID)!=0) /*判斷 */printf("n您輸入的身份證號碼有誤 n");getch();break; /*出錯提示*/ elseprintf("想退幾張機票:n");scanf("%d",&m);while(strcmp(p->planeNo,s1)p=p->next;p->tam

31、ount=p->tamount+m;while(strcmp(q->name,s2)q=q->next;printf("n姓名:s",q->name);/* 輸出原始定單 */printf("n身份證號碼:s",q->ID);printf("n航班號:%s",q->planeNo);printf("n訂票數(shù)量:d",q->tamount);printf("nn 真的要退訂嗎?(Y/N)n");if(getch()='y')q->ta

32、mount=q->tamount-m;printf("n姓名:s",q->name);/*打印新的定單 */printf("n身份證號碼:s",q->ID);printf("n航班號:%s",q->planeNo);printf("n訂票數(shù)量:d",q->tamount);if(!q->tamount) q=q->next;while(r!=q) r->no-;r=r->next;printf("nn退票成功!nn");printf(&quo

33、t; 是否繼續(xù)? y/n");if('n'=getch()|'N'=getch() break;savel(head);save2(glist);6)顯示信息函數(shù)模塊:print()struct Plane *p; p=head->next;system( “cls ” ); if(!p)puts("nNO any data.");printf("n請按任意鍵返回");getch();return;折扣printf("n 航班號起飛時間抵達時間 出發(fā)城市 目的地 價格總票數(shù)剩余票數(shù)n")

34、;for(;p!=NULL;p=p->next) printf("%s %s %s %s %s %d %s %d %dn",p->planeNo,p->start,p->end_time,p->startplace,p->end_place,p->price,p->discount,p->total,p->start);printf("n請按任意鍵返回");getch();顯示函數(shù)流程圖prlntH'n青痘白面強追回圖7顯示函數(shù)流程圖六、測試分析1.數(shù)據(jù)測試主菜單界面1)錄入信息QI &

35、#39;T:Oocurrients and EetzintMAdministrEcirQebLiQTCciE.exe"Gllell長上 fl V ! I ! s05 y- 0 M 6 4 128 6 2 2"點點數(shù)地番不 班飛達飛達IM后機排 爵到起亂機制 不入入A-入入入入入入 是 mlfi! i一| x2) 查詢B "二A口CKurr白nts wnd £ertirgs' Ac:nnrierriTct' PmbjgTCppLmxf"孽牖蠢3-息出請輸入航班號L1TG12200眇-Z海-5長10二11麻6421點問點何數(shù)世第香k

36、飛飛達端后機余 起起金至機折上心此沅孤已滿,請呼、 ,1 .發(fā)航班號查詢2 .法起營城市查詢3 一息出國'2:'Jocunert5 and Settnai' AdmniFtratcir. DebloCpr 1.exe"此航租已加:專航班笈查詢,強運落城市查詢.顯出IS人起飛地點,長沙3)訂票5 0 04 8 67 116 S 沙必京刈 箕1B北11達點間點間數(shù) 到地Br±*Br4J 香 k 人飛飛達達器機余因 C:Docunnent5 and 5ettinq5.AdmirrisUat&r'-,DebugCppl.exe您想預定哪趟航班

37、LVG1W2 且前此航班還者2B8張票 姓名;SUD身份證號招:220航班號:LYG12:2訂票數(shù)量”2曲”2酗您的訝單號是1 是否生續(xù)? y"4)退票S3 'C:'Documents and Settinos' Adrnristrator' DebuG2ppl.exe"BUD您想退訂哪趟航班工LYG122扁人身份記號?220想退幾張機票m 49處名=£UD異橋記號弼出白 再理手中設方 訂祟費量:20日真的濱返訂嗎7四力0 是否維維? iF/n-腔狗拼音舉:國,rC:!|,DDCjmant5 rind Settings' A

38、dmin stntor'.Dbugrpp 1.exe輸入姓名;BUD您想退訂班?巡航班,LVG122 輸入身份心號 221您輸入的身份證號犯有誤5)修改航班信息219 "C:Doajrrients and SettingslA dmiostratorXOeb u gCp n 1. exe0 01S .V4/ 000B1012長廣打46310n翌K咸叼, 飛達因四票后計余息縝 起到起招數(shù)心熟B信繼 Ar入入入入入入入:1改否18像是326)顯示客戶信息2 .測試評價:該測試結果完全符合預計的結果,載入航班數(shù)據(jù)庫信息,進而預訂機票, 仍后輸出預訂后航班信息。相應的信息應是原來的出

39、去被預訂的。由測試結 果來看,輸出結果完全真確。3 .遇到的問題及解決方法(1)在輸出數(shù)據(jù)時出現(xiàn)亂碼,后來發(fā)現(xiàn)輸出的參數(shù)個數(shù)與前面預想輸出個數(shù) 不同。保持個數(shù)一致就可以解決。(2)存盤時發(fā)現(xiàn)路徑錯誤,輸入真確的存盤路徑即可。(3)最初完成程序的時候功能里的錯誤提示功能很弱,輸入信息出錯時不能 很好的提示錯誤,在謹慎全面的考慮到出錯情況之后經反復修改終于達 到功能要求。七、數(shù)據(jù)結構實習心得體會經過短短兩個星期的上機實踐學習,使我對數(shù)據(jù)結構有了更進一步的認識和 了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它。這次實踐的三個任務我全部是用鏈表來完成的, 自己以前對鏈表和指針這部 分

40、的知識掌握不是很扎實,所以在實踐中給自己設定了一個很大的挑戰(zhàn)。 用連表 來實現(xiàn)功能方便又高效,但同時也復雜,更容易出錯,從函數(shù)結構體的定義到調 用,每個細節(jié)都要認真謹慎的編寫程序, 地址和數(shù)值的傳遞也非常重要,理解不 透,運用不好就會出現(xiàn)很多奇怪的問題, 無從下手。通過動手操作編程也確實讓 我對這部分的知識更深刻的理解、更好的掌握了。不在象以前那樣害怕接觸這方 面的程序了。由于這次的任務都是設計一些實用性很強的應用系統(tǒng),對各方面要求都比較 高,不僅是可以簡單的實現(xiàn)要求的功能, 同時要十分重要出錯提示,即輸入錯誤 信息或者不存在想要查詢的信息時候, 系統(tǒng)要能夠靈敏的報錯,并且提供相關參 考信息。

41、這在以前的編程實習中是沒有注意的強調的。 雖然錯誤提示只是簡單的 幾句控制語句和輸出語句,但是卻對系統(tǒng)的嚴密性非常重要,所以這次的實習還 讓我懂得要想讓程序更有生命力一定要在功能實現(xiàn)的同時更加完善,綜合全面的考慮各種可能的情況,并做出相應的提示信息和解決辦法,尤其是飛機定票系統(tǒng) 的定票功能,要求在滿航的時候給出其他參考航班, 這就提示我們不要滿足于可 以實現(xiàn)功能,而要追求全面和完善,編程與其他工作一樣要精益求精。通過實踐,還提高了我的自信心。從開始的害怕緊張到后來熟練應用程序, 我對C語言和數(shù)據(jù)結構知識的了解進一步加深了。 它使我認識到每個功能強大的系統(tǒng)都是由簡單的小程序、子函數(shù)構成的,只要把

42、層次關系弄清楚,調用關系弄 明白,系統(tǒng)的框架就清晰的展現(xiàn)出來了,層層分析,層層編寫,最后發(fā)現(xiàn)原來最 簡單的排序,輸入,輸出函數(shù)組合到一起就可以是功能強大的應用系統(tǒng)。 所以我 懂得了要用平和的心態(tài)去接受每個任務,自信可以完成,然后認真對待,是可以獲得自己滿意的結果的。在實踐中提高了自己的動手能力,以前總是看別人的程序,很少自己真的動 手去編程,所以在剛開始編程的時候經常犯一些不應該的錯誤,比如忘記;,輸入不加&,缺少等等。同時還增強了計算機方面的基礎知識,比如一些軟件操作 和使用。學習在于實踐,在學習過程中,我會更加注視實踐操作,將理論知識與 實踐相結合,使自己更好地學好編程語言,各方面

43、的知識都更加扎實和牢固。八、參考文獻:11嚴蔚敏、吳偉民數(shù)據(jù)結構2008.721嚴蔚敏數(shù)據(jù)結構題集2008.931王曙燕C語言程序設計2007.841耿國華數(shù)據(jù)結構一一C語言描述2008.10九、附錄:源程序#include <stdio.h>#include <string.h>#include <conio.h>#include<dos.h>#include <ctype.h>#include <math.h>#include <stdlib.h>#include <malloc.h>typed

44、ef struct Plane/*航班信息*/char planeNo10;/*航班號*/char start30;/*起飛時間 */char end_time30;/*到達時間*/char startplace30;/*char end_place30;/*int price;/*int discount;/*起飛城市*/到達城市*/機票價格*/折后價格*/int total;/*機票總數(shù)*/剩余票數(shù)*/printf("n保存n");int tamount;/*struct Plane *next;Plane;typedef struct customer/*客戶資料*/

45、char name30;/*客戶姓名*/char ID30;/*證件號碼*/int tamount;/*訂票數(shù)量*/char planeNo30;/*航班號*/int no;/*定單號*/struct customer *next;customer;Plane *head=NULL;customer *glist=NULL;int num=1;/*/*保存航班信息*/void save1(Plane *L) FILE *fp;Plane *p;if(fp=fopen("plane","wb")=NULL)printf("不能打開此文件!!n&q

46、uot;);exit(1);p=L;while(p!=NULL)fwrite(p,sizeof(Plane),1,fp);p=p->next;fclose(fp);printf("保存成功 n");/*/*保存客戶信息*/void save2(customer *L) FILE *fp;customer *p;if(fp=fopen("customer","wb")=NULL)printf("不能打開此文件!!n");exit(1);printf("nSaving'n");p=L;

47、while(p!=NULL)fwrite(p,sizeof(customer),1,fp);p=p->next;fclose(fp);printf("保存成功 n");*/*錄入航班信息*/void *creat()Plane *info;while(1)info=(Plane*)malloc(sizeof(Plane); /*創(chuàng)建新結點 */if(!info)printf("EMS has been full!n");return NULL;printf("n輸入航班號:");scanf("%s",info

48、->planeNo);printf("輸入起飛時間:");scanf("%s",info->start);printf("輸入到達時間:");scanf("%s",info->end_time);printf("輸入起飛地點:");scanf("%s",info->startplace);printf("輸入到達地點:”);scanf("%s",info->end_place);printf("輸入機票價格

49、:");scanf("%d",&info->price);printf("輸入折后價格:");scanf("%d",&info->discount);printf("輸入總機票數(shù):");scanf("%d",&info->total);printf("輸入剩余票數(shù):");scanf("%d",&info->tamount);info->next=head;head=info;syste

50、m("cls");printf("是否繼續(xù)? y/n");/*一個信息輸入結束,是否繼續(xù)輸入 */if(getchO='n'|getchO='N') break;savel(head);/*/*查詢航班信息*/void search()char s130,s230;Plane *p;int i=0,ch;while(1)p=head;printf("請選擇 n");printf("1.按航班號查詢n");printf("2.按起落城市查詢n");printf(&q

51、uot;3.退出 n");scanf("%d",&ch);if(ch=1) printf("n請輸入人班號n");scanf("%s",s1);while(p)if(!strcmp(s1,p->planeNo)printf("n起飛地點:%s",p->startplace);printf("n起飛時間:s",p->start);printf("n到達地點:s",p->end_place);printf("n到達時間:s&qu

52、ot;,p->end_time);printf("n機票價格:d",p->price);printf("n折后價格:d",p->discount);printf("n總機票數(shù):d",p->total);printf("n剩余票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿!n");/*滿航判定 */p=p->next;i+;else p=p->next;if(!i) printf("無此

53、航班 n"); i=0; /* 錯誤提示 */if(ch=2)printf("輸入起飛地點:");scanf("%s",s1);printf("n 輸入到達地點:");scanf("%s",s2);while(p) if(!strcmp(s1,p->startplace)&&!strcmp(s2,p->end_place)printf("起飛地點:%s",p->startplace);printf("n起飛時間:s",p->s

54、tart);printf("n 到達地點:s",p->end_place);printf("n到達時間:s",p->end_time);printf("n機票價格:d",p->price);printf("n折后價格:d",p->discount);printf("n總機票數(shù):%d",p->total);printf("n剩余票數(shù):%dnn",p->tamount);if(p->tamount=0)printf("n此航班已

55、滿!n");p=p->next;i+;else p=p->next;if(!i) printf("無此航班 n"); i=0;if(ch=3) break; /*/*訂票函數(shù)*/void order()customer *info;Plane *p,*q;char s30; int flag=0;while(1)p=q=head;printf("您想預定哪趟航班");scanf("%s",&s);if(strcmp(p->planeNo,s)!=0)printf("無此航班");

56、p=p->next;getch();break;if(p->tamount=0)printf("此航班已滿.n是否需要預定其他到達該城市的航班:y/nn");if(getch()='n'|getch()='N') break;elsewhile(q)if(!strcmp(p->end_place,q->end_place)&&p!=q)printf("您可以預定s號航班到達該城市n",q->planeNo);flag=1;q=q->next;if(flag=0)print

57、f("沒有到打該城市的其他航班");getch();break;elseprintf("目前此航班還有 %d張票",p->tamount);/* 訂票數(shù)量控制*/info=(customer*)malloc(sizeof(customer);if(!info)printf("EMS has been full!n");exit(0);姓名:"); printf("nscanf("%s",info->name);printf("n身份證號碼:");scanf("%s",info->ID);printf("n航班號:");scanf("%s",info->planeNo);printf("n訂票數(shù)量(<=%d):",p->tamount);scanf("%d",&info->tamount);if(info->tamount>p->tamount)printf("此航班剩余機票不夠");/* 出錯提示*/break;elsep->tamount=p->tamoun

溫馨提示

  • 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

提交評論