數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)實(shí)驗(yàn)報(bào)告_飛機(jī)訂票系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)實(shí)驗(yàn)報(bào)告_飛機(jī)訂票系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)實(shí)驗(yàn)報(bào)告_飛機(jī)訂票系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)實(shí)驗(yàn)報(bào)告_飛機(jī)訂票系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)實(shí)驗(yàn)報(bào)告_飛機(jī)訂票系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一、 訂票系統(tǒng)【需求分析】本訂票系統(tǒng)要能夠?qū)崿F(xiàn)航班情況的錄入功能、航班的查詢功能、訂票功能、退票功能以及管理本系統(tǒng)的功能即能夠修改航班信息。具體分析如下:1、錄入功能可以錄入航班信息,如錄入航班號(hào),到達(dá)城市,起飛時(shí)間,飛機(jī)票數(shù),票價(jià)。2、查詢功能可以查詢航班的各項(xiàng)信息,如可以查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),確定航班是否滿倉(cāng),航班號(hào)。3、訂票功能可以訂票并且記錄下乘客的相關(guān)信息如記錄下乘客姓名,身份證號(hào)碼,所訂航班的航班號(hào)以及所訂的票數(shù)。4、退票功能可以退票并且記錄乘客的相關(guān)信息以及退票信息。5、修改功能可以根據(jù)需要由管理員對(duì)航班信息進(jìn)行修改更正?!靖乓O(shè)計(jì)】1、算法設(shè)

2、計(jì):每個(gè)模塊的算法設(shè)計(jì)說(shuō)明如下:(1)錄入模塊: 查找單鏈表的鏈尾,在鏈尾插入一個(gè)“航班信息”的新結(jié)點(diǎn)。(2)查詢模塊:提供兩種查方式:按航號(hào)和按航線查詢,1代表按航號(hào)查詢,2代表按航線查詢。0則表示退出查詢。順著單鏈表查找,如果與航班號(hào)(航線)一致,輸出相關(guān)信息,否則,查詢不成功。(3)訂票模塊:查找乘客要訂的航班號(hào),判斷此航班是否有空位,有則輸入乘客有關(guān)信息,訂票成功,否則失敗。(4)退票模塊:輸入要退票的乘客姓名以及證件號(hào)碼,查找乘客資料的鏈表中是否有這位乘客,有則刪去此結(jié)點(diǎn),并在空位加上1,無(wú)則退票失敗。(5)修改模塊: 輸入密碼,確認(rèn)是否有權(quán)限對(duì)航班信息進(jìn)行修改,有則在航班信息鏈表中

3、查找要修改的結(jié)點(diǎn),進(jìn)行修改,否則不能修改。2.存儲(chǔ)結(jié)構(gòu)設(shè)計(jì):(1) 航班的信息:為了便于查找和修改,航班的情況存儲(chǔ)結(jié)構(gòu)采用單鏈表,每個(gè)元素表示一個(gè)航班的情況,包括航班號(hào)、起飛達(dá)到的時(shí)間、空座和目的的、票價(jià)以及限座七個(gè)數(shù)據(jù)項(xiàng):航班號(hào)起飛時(shí)間達(dá)到時(shí)間目的地限座空座票價(jià)hD1D2D3單鏈表如下:每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C語(yǔ)言描述如下:typedef struct flightnode char air_num10; /*航班號(hào)*/char start_time15; /*起飛時(shí)間*/char end_time15; /*到達(dá)時(shí)間*/char end_place30; /*目的地*/i

4、nt total; /*限座*/int left; /*空座*/int price; /*票價(jià)*/struct flightnode *next; /*指向個(gè)結(jié)點(diǎn)*/flightnode;(2) 旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲(chǔ)結(jié)構(gòu),每個(gè)數(shù)據(jù)元素包括姓名、證件號(hào)碼、航班號(hào)和座位號(hào)四個(gè)數(shù)據(jù)項(xiàng):旅客姓名證件號(hào)碼航班號(hào)座位號(hào)每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域 C語(yǔ)言描述如下:typedef struct passengernode /*定義乘客資料結(jié)點(diǎn)*/char name20;char ID_num20;char air_num20;int seat_num;struc

5、t passengernode *next;passengernode;【詳細(xì)設(shè)計(jì)】本系統(tǒng)源程序如下:#include#include#define OK 1#define ERROR 0typedef struct flightnode /*定義航班信息結(jié)點(diǎn)*/char air_num10;char start_time15;char end_time15;char end_place30;int total;int left;int price;struct flightnode *next;flightnode;typedef struct passengernode /*定義乘客資料結(jié)

6、點(diǎn)*/char name20;char ID_num20;char air_num20;int seat_num;struct passengernode *next;passengernode;flightnode *head_flight(); /*生成航班信息的頭結(jié)點(diǎn)*/passengernode *head_passenger(); /*生成乘客資料的頭結(jié)點(diǎn)*/int CreatFlight(flightnode *l); /*生成航班信息鏈表*/int CreatPassenger(passengernode *l); /*生成乘客資料鏈表*/int InsertFlight(fli

7、ghtnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /*插入航班信息的結(jié)點(diǎn)*/int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /*插入乘客資料的結(jié)點(diǎn)*/flightnode *modefy_airline(flightnode *l,char *air_num); /*修改航班信息的函數(shù)*/int BookTicket(flightnode

8、*a,char *air_num,passengernode *c,char *name,char *ID_num); /*訂票函數(shù)*/int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /*退票函數(shù)*/int SearchFlight(flightnode*head); /*查詢航班信息函數(shù)*/int SearchPassenger(passengernode *head); /*查詢乘客信息函數(shù)*/void main() /*主函數(shù)*/int p=2; /*p=1時(shí)進(jìn)入主菜單,p=0時(shí)退出系統(tǒng)*/

9、passengernode *cus=head_passenger(); flightnode *air=head_flight();char name20,air_num20,ID_num30,mima20,ch; char t20=zhengjianze; /*管理員密碼*/clrscr();CreatFlight(&air); CreatPassenger(&cus);while(p=2) printf(n welcome to the airline system!nn please choose the serves below and press the number:nn);pr

10、intf( =nn);printf( 1 - Book Ticket n);printf( 2 - Cancel Ticket n);printf( 3 - Search Information n);printf( 4 - Exit nn);printf( =n);switch(ch=getch()case 1:printf(n *-Booking Ticket-*n); /*進(jìn)入訂票功能*/printf(Please input a airline number and press enter for OK:);scanf(%s,air_num);printf(Please input y

11、our name and press enter for OK:);scanf(%s,name);printf(Please input your ID number and press enter for OK:);scanf(%s,ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();break;case 2:printf( *-Canceling Ticket-*n); /*進(jìn)入退票功能*/printf(Please input the cancel name for booking ticket:);scanf(%s,name)

12、;printf(Please input the ID for booking ticket:);scanf(%s,ID_num);CancelTicket(cus,air,name,ID_num);break;case 3:printf(*-Search Information-*n); /*進(jìn)入信息查詢功能*/ printf( 1 - flight information n ); printf( 2 - passenger informationn ); printf( other - exit n); printf(*-*n); if(ch=getch()=1) /*航班信息查詢*/p

13、rintf(*- flight information -*n); SearchFlight(air);else if(ch=2) /*乘客資料查詢*/printf(n please input the key:);scanf(%s,mima); /*輸入管理員密碼*/if(strcmp(mima,t)=0)printf(n*-passenger information -*nn);SearchPassenger(cus);else printf(sorry,the key is wrong);getch();break;case 4:getch(); /*退出系統(tǒng)*/p=0;break;fl

14、ightnode *head_flight()flightnode *a;a=(flightnode *)malloc(sizeof(flightnode);if(a=NULL)a-next=NULL;return a;passengernode *head_passenger()passengernode *c;c=(passengernode*)malloc(sizeof(passengernode);if(c=NULL)c-next=NULL;return c;int CreatFlight(flightnode *l)flightnode *p=*l;int i=0;char *air

15、_num3=flight01,flight02,flight03;char *start_time3= 08:00, 12:00, 16:30;char *end_place3=Guangzhou,Shenzhen,Shantou; /*初始化航班信息*/int total3=100,100,100;int price3=300,200,250;int left3=23,54,76; for(i=0;i3;i+)InsertFlight(&p,air_numi,start_timei,end_placei,totali,lefti,pricei); /*插入航班信息*/return OK;in

16、t CreatPassenger(passengernode *l)passengernode *p=*l;int i=0;char *name3=liming,Ximing,Chongliang;char *ID_num3=3105006052,3105006054,3105006051; /*初始化乘客資料*/char *air_num3=flight01,flight02,flight03;int seat_num3=12,5,8;for(i=0;iair_num,air_num);strcpy(q-start_time,start_time);strcpy(q-end_place,en

17、d_place);q-total=total;q-left=left;q-price=price;q-next=NULL;(*p)-next=q;(*p)=(*p)-next; /*航班信息鏈的尾插法*/return OK;int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num)passengernode *q;q=(passengernode*)malloc(sizeof(passengernode);strcpy(q-name,name);strcpy(q-ID_num,

18、ID_num);strcpy(q-air_num,air_num);q-seat_num=seat_num;q-next=NULL;(*p)-next=q;(*p)=(*p)-next; /*乘客資料鏈表的尾插法*/return OK;flightnode *modefy_airline(flightnode *l,char *air_num)flightnode *p;p=l-next;for(;p!=NULL;p=p-next)if(strcmp(air_num,p-air_num)=0)p-left+;return l;printf(NO the airline!);return 0;i

19、nt BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num)flightnode *p=a;passengernode *q=c-next;p=a-next;for(;q-next!=NULL;q=q-next);for(;p!=NULL;p=p-next)if(strcmp(p-air_num,air_num)=0)if(p-left0)printf( nSuccessful for Booking ticket.nn Your flight: %sn Your seat number

20、: %d ,p-air_num,(p-total-p-left+1);printf(n *-*);InsertPassenger(&q,name,ID_num,air_num,p-total-p-left+1);p-left-; return OK;elseprintf(seat is full);return 0;/*if(strcmp)*/ printf(Sorry,there isnt the plane,please check the airline number!);printf(n *-*);int CancelTicket(passengernode *c,flightnode

21、 *l,char *name,char *ID_num)passengernode *p,*pr;char air_num20;pr=c;p=pr-next;while(p!=NULL)if(strcmp(p-name,name)=0&strcmp(p-ID_num,ID_num)=0)strcpy(air_num,p-air_num);l=modefy_airline(l,air_num);pr-next=p-next;p=pr-next;printf(successful for canceling ticket.);printf(n *-*);return OK;pr=pr-next;p=pr-next;printf(Sorry,there isnt the customer!);printf(n *-*);return ERROR;int SearchFlight(flightnode *head)flightnode *p=head-next;printf( Flight Start_time Arrival_place Price Total Left_seatnn);for(;p!=NULL;p=p-n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論