



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設計報告一、訂票系統(tǒng)【需求分析】本訂票系統(tǒng)要能夠?qū)崿F(xiàn)航班情況的錄入功能、航班的查詢功能、訂票功能、退票功能以及管理本系統(tǒng)的功能即能夠修改航班信息。具體分析如下:1 、錄入功能可以錄入航班信息,如錄入航班號,到達城市,起飛時間,飛機票數(shù),票價。2 、查詢功能可以查詢航班的各項信息,如可以查詢起降時間, 起飛抵達城市, 航班票價,確定航班是否滿倉,航班號。3 、訂票功能可以訂票并且記錄下乘客的相關(guān)信息如記錄下乘客姓名,身份證號碼, 所訂航班的航班號以及所訂的票數(shù)。4 、退票功能可以退票并且記錄乘客的相關(guān)信息以及退票信息。5 、修改功能可以根據(jù)需要由管理員對航班信息進行修改更正?!靖乓O
2、計】1、算法設計 :每個模塊的算法設計說明如下:( 1)錄入模塊:查找單鏈表的鏈尾,在鏈尾插入一個“航班信息”的新結(jié)點。( 2)查詢模塊:提供兩種查方式:按航號和按航線查詢, 1 代表按航號查詢, 2 代表按航線查詢。 0 則表示退出查詢。順著單鏈表查找,如果與航班號(航線)一致,輸出相關(guān)信息,否則,查詢不成功。( 3)訂票模塊:查找乘客要訂的航班號, 判斷此航班是否有空位, 有則輸入乘客有關(guān)信息, 訂票成功, 否則失敗。( 4)退票模塊:輸入要退票的乘客姓名以及證件號碼, 查找乘客資料的鏈表中是否有這位乘客, 有則刪去此結(jié)點,并在空位加上 1,無則退票失敗。( 5)修改模塊:輸入密碼,確認是
3、否有權(quán)限對航班信息進行修改,有則 在航班信息鏈表中查找要修改的結(jié)點,進行修改,否則不能修改。2. 存儲結(jié)構(gòu)設計:( 1) 航班的信息:為了便于查找和修改,航班的情況存儲結(jié)構(gòu)采用單鏈表,每個元素表示一個航班的情況,包括航班號、起飛達到的時間、空座和目的的、票價以及限座七個數(shù)據(jù)項:航班號起飛時間達到時間目的地限座空座票價單鏈表如下:hD1D2D3每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C 語言描述如下:typedef struct flightnodechar air_num10;/* 航班號 */char start_time15;/* 起飛時間 */char end_time15;/* 到達時
4、間 */char end_place30;/* 目的地 */inttotal;/* 限座 */intleft;/* 空座 */int price;/* 票價 */struct flightnode *next;/* 指向個結(jié)點 */flightnode;( 2) 旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲結(jié)構(gòu),每個數(shù)據(jù)元素包括姓名、證件號碼、航班號和座位號四個數(shù)據(jù)項:旅客姓名證件號碼航班號座位號每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C 語言描述如下:typedef struct passengernode/* 定義乘客資料結(jié)點*/char name20;char ID_num20
5、;char air_num20;intseat_num;struct passengernode *next;passengernode;【詳細設計】本系統(tǒng)源程序如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef struct flightnode/* 定義航班信息結(jié)點 */char air_num10;char start_time15;char end_time15;char end_place30;inttotal;intleft;int price;struct fli
6、ghtnode *next;flightnode;typedef struct passengernode/* 定義乘客資料結(jié)點 */char name20;char ID_num20;char air_num20;intseat_num;struct passengernode *next;passengernode;flightnode *head_flight();/* 生成航班信息的頭結(jié)點 */passengernode *head_passenger(); /* 生成乘客資料的頭結(jié)點 */int CreatFlight(flightnode *l);/* 生成航班信息鏈表 */int
7、 CreatPassenger(passengernode *l); /* 生成乘客資料鏈表 */int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,intprice); /* 插入航班信息的結(jié)點*/intInsertPassenger(passengernode *p,char *name,char*ID_num,char *air_num,int seat_num);/* 插入乘客資料的結(jié)點*/flightnode *modefy_airline(f
8、lightnode *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); /*查詢航班信息函數(shù)*/int SearchPassenger(passengernode
9、*head); /*查詢乘客信息函數(shù)*/void main()/* 主函數(shù) */int p=2;/*p=1 時進入主菜單,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);CreatPassenger(&cus);while(p=2)printf("
10、nwelcome to theairline system!nnplease choose the serves below andpress the number:nn");printf("=nn");printf("1-> Book Ticketn");printf("2-> Cancel Ticketn");printf("3-> Search Informationn");printf("4-> Exitnn");printf("=n"
11、;);switch(ch=getch()case '1':printf("n*-Booking Ticket-*n"); /*進入訂票功能*/printf("Please input a airline number and press enter for OK:");scanf("%s",air_num);printf("Please input your name and press enter for OK:");scanf("%s",name);printf("
12、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"); /*進入退票功能printf("Please input the cancel name for booking ticket:");scanf("%s"
13、,name);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"); /*進入信息查詢功能printf("1-> flight information n" );printf("2-> passenger information
14、n ");printf("other -> exitn");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(strcm
15、p(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;flightnode *head_flight()flightnode *a;a=(flightnode *)malloc(sizeof(flightnode);if(a=NULL)a->next=NULL;r
16、eturn 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_num3="flight01","flight02","flight03"char *start_time3=" 08:00
17、"," 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;i<3;i+)InsertFlight(&p,air_numi,start_timei,end_placei,totali,lefti,pricei);/* 插入航班信息
18、return OK;*/int 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",&
19、quot;flight03"int seat_num3=12,5,8;for(i=0;i<3;i+)InsertPassenger(&p,namei,ID_numi,air_numi,seat_numi);/* 插入乘客資料*/return OK;int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price)flightnode *q;q=(flightnode*)malloc(sizeof(flightnode);st
20、rcpy(q->air_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;int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,
21、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 OK;flightnode *modefy_airline(flightnode *l,
22、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;intBookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num)flightnode *p=a;passengernode *q=c->next;p=a-&
23、gt;next;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->next)if(strcmp(p->air_num,air_num)=0)if(p->left>0)printf("nSuccessful forBookingticket.nnYour flight:%snYour seatnumber:%d",p->air_num,(p->total-p->left+1);printf("n*-*");InsertPassenger(&q,nam
24、e,ID_num,air_num,p->total-p->left+1);p->left-; return OK;elseprintf("seat is full");return 0;/*if(strcmp)*/ printf("Sorry,thereisn'ttheplane,pleasechecktheairlinenumber!");printf("n*-*");int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_nu
25、m)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 isn't the customer!");printf("n*-*");return ERROR;int SearchFlight(flightnode *head)flightnode *p=head->next;printf(" FlightStart_timeArrival_placePriceTotalLeft_seatnn");for(;p!=NULL;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45211.3-2025小麥抗病蟲性評價技術(shù)規(guī)程第3部分:稈銹病
- 工程采購合同(31篇)
- 項目執(zhí)行過程中遇到問題的解析與應對方案
- 電信行業(yè)網(wǎng)絡優(yōu)化與數(shù)據(jù)安全保障方案
- 塑料產(chǎn)品買賣合同書
- 股份制企業(yè)合同審查與管理文書
- 物流運輸承包合同
- 房地產(chǎn)合作銷售開發(fā)協(xié)議書
- 管樁施工勞務合同
- 能源行業(yè)資源整合合作協(xié)議
- 《不一樣的物體作業(yè)設計方案-2023-2024學年科學大象版》
- (2024年)發(fā)生輸液反應時應急預案及處理流程
- 能源經(jīng)濟學導論
- 《社區(qū)康復》課件-第七章 腦癱患兒的社區(qū)康復實踐
- 白酒包裝盒工藝
- 水痘預防課件
- 《管理統(tǒng)計學》教學課件
- 新人教版小學二年級下冊美術(shù)電子教案(全)
- 公司人事招聘面試技巧培訓完整版課件兩篇
- 第1課《立足時代+志存高遠》第1框《時代為我搭舞臺》【中職專用】《心理健康與職業(yè)生涯》(高教版2023基礎(chǔ)模塊)
- 出國勞務派遣合同(專業(yè)版)電子版正規(guī)范本(通用版)
評論
0/150
提交評論