




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一、 訂票系統(tǒng)【需求分析】本訂票系統(tǒng)要能夠?qū)崿F(xiàn)航班情況的錄入功能、航班的查 詢功能、訂票功能、退票功能以及管理本系統(tǒng)的功能即能夠 修改航班信息。具體分析如下:1、錄入功能可以錄入航班信息,如錄入航班號,到達(dá)城市,起飛時間, 飛機(jī)票數(shù),票價。2、查詢功能 可以查詢航班的各項信息,如可以查詢起降時間,起飛抵達(dá) 城市,航班票價,確定航班是否滿倉,航班號。3、訂票功能 可以訂票并且記錄下乘客的相關(guān)信息如記錄下乘客姓名,身 份證號碼,所訂航班的航班號以及所訂的票數(shù)。4、退票功能可以退票并且記錄乘客的相關(guān)信息以及退票信息。5、修改功能可以根據(jù)需要由管理員對航班信息進(jìn)行修改更正?!靖乓O(shè)
2、計】1、算法設(shè)計 :每個模塊的算法設(shè)計說明如下:Word 資料1)錄入模塊:查找單鏈表的鏈尾,在鏈尾插入一個 “航班信息” 的新結(jié) 點。(2)查詢模塊: 提供兩種查方式:按航號和按航線查詢, 1 代表按航號查 詢,2 代表按航線查詢。 0 則表示退出查詢。順著單鏈表查找,如果與航班號(航線)一致,輸出相關(guān) 信息,否則,查詢不成功。(3)訂票模塊: 查找乘客要訂的航班號,判斷此航班是否有空位,有則輸入 乘客有關(guān)信息,訂票成功,否則失敗。(4)退票模塊:輸入要退票的乘客姓名以及證件號碼, 查找乘客資料的鏈 表中是否有這位乘客,有則刪去此結(jié)點,并在空位加上1,無則退票失敗。(5)修改模塊: 輸入密碼
3、,確認(rèn)是否有權(quán)限對航班信息進(jìn)行修改,有則 在航班信息鏈表中查找要修改的結(jié)點,進(jìn)行修改,否則不能 修改。2. 存儲結(jié)構(gòu)設(shè)計:(1) 航班的信息:為了便于查找和修改,航班的情況存儲Word 資料單h鏈 表 h如下D1D2D3結(jié)構(gòu)采用單鏈表, 每個元素表示一個航班的情況, 包括 航班號、起飛達(dá)到的時間、空座和目的的、票價以及限 座七個數(shù)據(jù)項:航班號起飛時間達(dá)到時間目的地限座空座票價每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C 語言描述如下: typedef struct flightnode char air_num10;/* 航班號 */char start_time15;/* 起飛時間 */cha
4、r end_time15;/* 到達(dá)時間 */char end_place30; /* 目的地 */ int total; /* 限座 */ int left;/* 空座 */int price;/* 票價 */struct flightnode *next;/* 指向個結(jié)點 */flightnode;Word 資料2) 旅客的資料:為了便于插入、刪除和修改,其采用單 鏈表存儲結(jié)構(gòu),每個數(shù)據(jù)元素包括姓名、證件號碼、航 班號和座位號四個數(shù)據(jù)項:旅客姓名證件號碼航班號座位號每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域/* 定義乘客資料結(jié)點 */C 語言描述如下: typedef struct pass
5、engernode char name20;char ID_num20;char air_num20;int seat_num; struct passengernode *next; passengernode;【詳細(xì)設(shè)計】 本系統(tǒng)源程序如下: #includeWord 資料#include#define OK 1#define ERROR 0 typedef struct flightnode char air_num10;char start_time15;char end_time15;char end_place30;int total;int left;int price;stru
6、ct flightnode *next;flightnode;typedef struct passengernode char name20;char ID_num20;char air_num20;int seat_num;struct passengernode *next; passengernode;/* 定義航班信息結(jié)點 */* 定義乘客資料結(jié)點 */Word 資料 flightnode *head_flight(); /* 生成航班信息的頭結(jié)點 */ passengernode *head_passenger(); /* 生成乘客資料 的頭結(jié)點 */int CreatFlight
7、(flightnode *l); /* 生成航班信息鏈表 */ int CreatPassenger(passengernode *l); /* 生成乘客資 料鏈表 */int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price);/* 插入航班信息的結(jié)點 */int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /*
8、 插入乘客資料的結(jié)點 */flightnode *modefy_airline(flightnode *l,char *air_num); /* 修改航班信息的函數(shù) */int BookTicket(flightnode*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); /*
9、 查詢航班信息函數(shù) */Word 資料 int SearchPassenger(passengernode *head); /* 查詢乘 客信息函數(shù) */void main() /* 主函數(shù) */int p=2; /*p=1 時進(jìn)入主菜單, p=0 時退出系統(tǒng) */ passengernode *cus=head_passenger();flightnode *air=head_flight();char name20,air_num20,ID_num30,mima20,ch;char t20=zhengjianze; /* 管理員密碼 */ clrscr();CreatFlight(&air
10、);CreatPassenger(&cus);while(p=2)printf(n welcome to the airline system!nn please choose the serves below and press the number:nn);printf(nn);Word 資料printf( 1 - Book Ticket n);printf( 2 - Cancel Ticket n);printf( 3 - Search Information n);printf( 4 - Exit nn); printf(n);switch(ch=getch()Bookingcase
11、1:printf(n printf(Please input a airline number and press enter for OK:);Ticket*n); /* 進(jìn)入訂票功能 */scanf(%s,air_num);printf(Please input your name and press enter for OK:);scanf(%s,name);printf(Please input your ID number and press enter for OK:);Word 資料scanf(%s,ID_num);BookTicket(air,air_num,cus,name,
12、ID_num);getch(); ;break;Cancelingcase 2:printf( ticket:);Ticket*n); /* 進(jìn)入退票功能 */printf(Pleaseinput the cancelname for bookingscanf(%s,name);printf(Please input the ID for booking ticket:);scanf(%s,ID_num);CancelTicket(cus,air,name,ID_num);break;case 3:printf(*SearchInformation*n); /* 進(jìn)入信息查詢功能 */prin
13、tf( 1 - flight information n );printf( 2 - passenger informationn );printf( other - exit n);Word 資料printf(*n);if(ch=getch()=1) /* 航班信息查詢 */printf(* 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
14、*passengerinformation *nn);SearchPassenger(cus);else printf(sorry,the key is wrong);getch();break;case 4:getch(); /* 退出系統(tǒng) */ p=0;break; flightnode *head_flight()Word 資料 flightnode *a;a=(flightnode *)malloc(sizeof(flightnode); if(a=NULL)a-next=NULL;return a;passengernode *head_passenger()passengernod
15、e *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_num3=flight01,flight02,flight03; char *start_time3= 08:00, 12:00, 16:30;Word 資料char *end_place3=Guangzhou,Shenzhen,Shantou; /* 初始化航班信息 */int total3=10
16、0,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,tot ali,lefti,pricei); /* 插入航班信息 */ return OK;int CreatPassenger(passengernode *l) passengernode *p=*l;int i=0;char *name3=liming,Ximing,Chongliang;char*ID_num3=3105006052,3105006054,310
17、5006051; /* 初始化乘客資料 */char *air_num3=flight01,flight02,flight03;Word 資料 int seat_num3=12,5,8; for(i=0;iair_num,air_num); strcpy(q-start_time,start_time); strcpy(q-end_place,end_place);q-total=total; q-left=left;q-price=price; q-next=NULL;(*p)-next=q;(*p)=(*p)-next; /* 航班信息鏈的尾插法 */ return OK;Word 資料i
18、nt InsertPassenger(passengernode*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,ID_num); strcpy(q-air_num,air_num); q-seat_num=seat_num; q-next=NULL;(*p)-next=q;(*p)=(*p)-next; /* 乘客資料鏈表的尾插法 */ return
19、 OK;flightnode *modefy_airline(flightnode *air_num)flightnode *p; p=l-next;for(;p!=NULL;p=p-next)*p,char*l,charWord 資料if(strcmp(air_num,p-air_num)=0)p-left+;return l;printf(NO the airline!);return 0; int BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num)flightnode *p=a;
20、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 : %d ,p-air_num,(p-total-p-left+1);printf(nWord 資料InsertPassenger(&q,name,ID_num,air_num,p-total
21、-p-left+1);p-left-; return OK;else printf(seat is full);return 0;/*if(strcmp)*/ theprintf(Sorry,there isnt the plane,please check airline number!);printf(n int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_num)passengernode *p,*pr;char air_num20;pr=c;p=pr-next; while(p!=NULL)Word 資
22、料if(strcmp(p-name,name)=0&strcmp(p-ID_num,I D_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(nreturn OK; pr=pr-next; p=pr-next;printf(Sorry,there isnt the customer!); printf(nreturn ERROR; Word 資料int SearchFlight(flightnode *head)flightnode *p=head-next;printf( Flight Start_time Arrival_place Price Total Left_seatnn);for(;p!=NULL;p=p-next)printf( %s %-10s %-9s %-7d%-6d %-6dn,p-ai r_nu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古建彩繪采購合同范本
- 公司出租地合同范本
- 合伙人結(jié)算合同范本
- 個人住房借款合同范本
- 臺州網(wǎng)絡(luò)推廣合同范本
- 校園超市承包合同范本
- 廚藝加盟合同范本
- 單位資產(chǎn)轉(zhuǎn)讓合同范本
- 發(fā)電機(jī)維修合同范本
- 合同范本模板學(xué)校
- 2025年天翼云解決方案架構(gòu)師認(rèn)證考試指導(dǎo)題庫-下(多選、判斷題)
- 礦山機(jī)械傷害安全培訓(xùn)
- 《走進(jìn)汽車》課件
- 2025貴州省黔東南州直屬事業(yè)單位招聘202人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年語文高考復(fù)習(xí)計劃解析
- 新生兒腸道病毒感染
- 2025年度專業(yè)酒店裝修承攬合同
- 2025年度5G基站建設(shè)勞務(wù)合同范本
- (完整版)班主任量化考核細(xì)則
- 2025年中國鐵路鄭州局集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025年上半年永春縣農(nóng)文旅發(fā)展集團(tuán)限公司公開招聘若干名工作人員易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論