![基于C語言的飛機(jī)訂票系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/d77dec3a-5de7-44e0-8ad8-90f14ee831c1/d77dec3a-5de7-44e0-8ad8-90f14ee831c11.gif)
![基于C語言的飛機(jī)訂票系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/d77dec3a-5de7-44e0-8ad8-90f14ee831c1/d77dec3a-5de7-44e0-8ad8-90f14ee831c12.gif)
![基于C語言的飛機(jī)訂票系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/d77dec3a-5de7-44e0-8ad8-90f14ee831c1/d77dec3a-5de7-44e0-8ad8-90f14ee831c13.gif)
![基于C語言的飛機(jī)訂票系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/d77dec3a-5de7-44e0-8ad8-90f14ee831c1/d77dec3a-5de7-44e0-8ad8-90f14ee831c14.gif)
![基于C語言的飛機(jī)訂票系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/d77dec3a-5de7-44e0-8ad8-90f14ee831c1/d77dec3a-5de7-44e0-8ad8-90f14ee831c15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、(飛機(jī)訂票系統(tǒng))一、需求分析1、本程序中,輸入為字符串小寫大寫字符和整形; 2、以字符串輸出;3、本訂票系統(tǒng)要能夠?qū)崿F(xiàn)航班情況的錄入功能、航班的查詢功能、訂票功能、退票功能以及管理本系統(tǒng)的功能,具體為:(1)錄入功能可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)(2)查詢功能可以查詢某個(gè)航線的情況(如,航班號,查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),確定航班是否滿倉);(3)訂票功能可以訂票,如果該航班不存在,則訂票失??;(4)退票功能可以退票并且記錄乘客的相關(guān)信息以及退票信息;如客戶資料:有姓名,證件號,訂票航班情況,訂單要有編號。4、測試數(shù)據(jù):訂票正確輸入航班號f2
2、009訂票人姓名yangyatingID管理員正確密碼“5566”錯(cuò)誤密碼“1234”二、概要設(shè)計(jì)1、程序包含以下模塊:每個(gè)模塊的算法設(shè)計(jì)說明如下: (1)錄入模塊: 查找單鏈表的鏈尾,在鏈尾插入一個(gè)“航班信息”的新結(jié)點(diǎn)。(2)查詢模塊:提供兩種查方式:按航號和按航線查詢,1代表按航號查詢,2代表按航線查詢。0則表示退出查詢。順著單鏈表查找,如果與航班號(航線)一致,輸出相關(guān)信息,否則,查詢不成功。(3)訂票模塊:查找乘客要訂的航班號,判斷此航班是否有空位,有則輸入乘客有關(guān)信息,訂票成功,否則失敗。(4)退票模塊:輸入要退票的乘客姓名以及證件號碼,查找乘客資料的鏈表中是否有這位乘客,有則刪去此
3、結(jié)點(diǎn),并在空位加上1,無則退票失敗。(5)修改模塊: 輸入密碼,確認(rèn)是否有權(quán)限對航班信息進(jìn)行修改,有則在航班信息鏈表中查找要修改的結(jié)點(diǎn),進(jìn)行修改,否則不能修改。流程圖飛機(jī)訂票系統(tǒng)錄入航班信息查看航班信息退票修改訂票主函數(shù)流程圖顯示功能選項(xiàng)根據(jù)N調(diào)用模塊函數(shù)YES 輸入N:判斷N是否在04之間NO三、詳細(xì)設(shè)計(jì)1、航班的信息類型:為了便于查找和修改,航班的情況存儲(chǔ)結(jié)構(gòu)采用單鏈表,每個(gè)元素表示一個(gè)航班的情況,包括航班號、起飛達(dá)到的時(shí)間、空座和目的的、票價(jià)以及限座七個(gè)數(shù)據(jù)項(xiàng):航班號起飛時(shí)間達(dá)到時(shí)間目的地限座空座票價(jià)hD1D2D3單鏈表如下:每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C語言描述如下:typ
4、edef struct flightnode char air_num10; /*航班號*/char start_time15; /*起飛時(shí)間*/char end_time15; /*到達(dá)時(shí)間*/char end_place30; /*目的地*/int total; /*限座*/int left; /*空座*/int price; /*票價(jià)*/struct flightnode *next; /*指向個(gè)結(jié)點(diǎn)*/flightnode;基本操作:int CreatFlight(flightnode *l); /生成航班信息鏈表int InsertFlight(flightnode *p,char
5、*air_num,char *start_time,char *end_place,int total,int left,int price); /插入航班信息的結(jié)點(diǎn)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,ch
6、ar *ID_num); /退票函數(shù)int SearchFlight(flightnode*head); /查詢航班信息函數(shù)2、乘客信息類型:為了便于插入、刪除和修改,其采用單鏈表存儲(chǔ)結(jié)構(gòu),每個(gè)數(shù)據(jù)元素包括姓名、證件號碼、航班號和座位號四個(gè)數(shù)據(jù)項(xiàng):旅客姓名證件號碼航班號座位號每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域 C語言描述如下:typedef struct passengernode /*定義乘客資料結(jié)點(diǎn)*/char name20;char ID_num20;char air_num20;int seat_num;struct passengernode *next;passengerno
7、de;基本操作:int CreatPassenger(passengernode *l); /生成乘客資料鏈表int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /插入乘客資料的結(jié)點(diǎn)3、主函數(shù)和其他函數(shù)的偽碼算法void main() /主函數(shù) while () printf(/*主菜單界面*/)switch(ch=getchar()case1:BookTicket;break; case2:CanclelTicket;break; case3:if()SearchF
8、light; else if()SearchPassenger;break; case4:exit;break;flightnode *head_flight() /生成航班頭結(jié)點(diǎn)passengernode *head_passengernode() /生成乘客資料頭結(jié)點(diǎn)int CreatFlight(flightnode *l) /生成航班信息鏈表 /初始化航班信息InsertFlight() /插入航班信息/ CreatFlightint CreatPassenger(passengernode *l) /生成乘客資料鏈表 /初始化乘客資料 InsertPassenger() /插入乘客資
9、料/ CreatPassengerint InsertFlight() /插入航班信息新結(jié)點(diǎn) /定義指針,動(dòng)態(tài)分配,復(fù)制信息流,賦值,next返回指針,循環(huán)/航班信息鏈的尾插 /InsertFlightint InsertPassenger()/插入乘客資料新結(jié)點(diǎn) /定義指針,動(dòng)態(tài)分配,復(fù)制信息流,賦值,next返回指針,循環(huán)/乘客信息鏈的尾插 /InsertPassengerflightnode *modefy_airline(flightnode *l,char *air_num) /修改航班信息int BookTicket() /訂票 InsertPassenger() / BookTi
10、cketint CancelTicket() /退票 l=modefy_airline(l,air_num);/CancelTicketint SearchFlight(flightnode *head) /查詢航班 /輸出航班信息/ SearchFlightint SearchPassenger(passengernode *head) /查詢乘客 /輸出乘客信息/ SearchPassenger四、調(diào)試分析1、調(diào)試結(jié)果:(1) 系統(tǒng)主菜單界面:(2)進(jìn)入訂票的界面:(3)查詢信息的界面:選擇1,查詢航班信息的界面:選擇2,輸入密碼,查詢乘客的信息的界面:新增乘客,查詢乘客信息:密碼錯(cuò)誤時(shí):
11、(4)進(jìn)入退票的界面:名字或者證件錯(cuò)誤時(shí):2、時(shí)間復(fù)雜度分析:本程序運(yùn)行所耗費(fèi)的時(shí)間主要在于循環(huán)語句,for和while語句,其時(shí)間復(fù)雜度應(yīng)該為O(n)。3、模塊設(shè)計(jì)和調(diào)試時(shí)存在問題的思考:原先在信息查詢中沒有乘客與管理人員的區(qū)別,乘客與管理人員都可以看到相同的信息,航班信息和乘客資料,后來,在瀏覽乘客資料時(shí)要求輸入管理人員的密碼,以確保乘客資料的安全性。4、算法的改進(jìn)設(shè)想:本程序還存在很多缺點(diǎn),不能完全的實(shí)現(xiàn)老師要求的各種功能,特別是在查詢功能方面,此程序應(yīng)該增加一些查詢的方式的設(shè)計(jì),如可以按照起飛抵達(dá)地點(diǎn)查詢航班情況。還有票價(jià)折扣和航班已無票,提供相關(guān)可選航班,訂單須有編號的功能沒有設(shè)計(jì)到
12、。五、用戶手冊1、本程序運(yùn)行環(huán)境是windows操作系統(tǒng),執(zhí)行文件是5.exe。2、進(jìn)行演示程序后,即顯示用戶界面:3、進(jìn)入“訂票系統(tǒng)Book Ticket”的命令后,即提示輸入航班號、訂票人姓名、ID號,結(jié)束符為“回車符”,該命令執(zhí)行后輸出“已成功訂票”“航班號和座位號”的信息。4、進(jìn)入“退票系統(tǒng)Cancel Ticket”的命令后,即提示輸入訂票人姓名和ID號,結(jié)束符為“回車符”,該命令執(zhí)行后輸出“已成功取消”或者輸入錯(cuò)誤信息則會(huì)輸出“無此顧客”的信息。5、進(jìn)入“查看信息”的命令后,即進(jìn)入“查看航班信息”和“查看乘客信息”,進(jìn)入“查看航班信息”則會(huì)輸出所有的航班信息分別為航班號、起止時(shí)間、
13、起止地點(diǎn)、票價(jià)、總座、空座。進(jìn)入“查看乘客信息”則提示輸入管理員密碼,輸入密碼之后,即會(huì)輸出所有訂票的乘客信息,分別為姓名、ID、航班號、座位號。6、選擇EXIT推出飛機(jī)訂票系統(tǒng)。六、測試結(jié)果1、訂票:輸入:f2009、yangyating、輸出:Successful for Booking ticket. Your flight: f2009 Your seat number: 46輸入:f2005、Sujuan、輸出:Successful for Booking ticket. Your flight: f2005 Your seat number: 22輸入:f2222、sujuan、輸
14、出:Sorry,there isnt the plane,please check the airline number!2、查詢信息:(1) 查詢航班信息:輸出: FlightStart_timeArrival_placePriceTotalLeft_seatf200808:00-08:30Changsha-lasa400010023f200909:00-12:00Changsha-Beijing100010055f201012:00-13:00Changsha-deguo700015076f201116:30-19:00Changsha-Shanghai50010025 f201217:0
15、0-20:55Changsha-Sanya9006540 f201321:00-23:45Changsha-Guangdong39910035(2) 查詢乘客信息:輸入:5566 輸出:NameIDFlightSeat_numberSujuan f 200522Donghui f 20062W73f 20079yangyatingf 200946 輸入:1234 輸出:sorry,the key is wrong3、退票:輸入:A、輸出:Successful for canceling ticket.輸入:yangyating、輸出:Successful for canceling ticke
16、t.輸入:sujuan、輸出:Sorry,there isnt the customer!再查看乘客信息: 輸入:5566 輸出:NameIDFlightSeat_numberDonghui f 20062W73f 20079 七、附錄本系統(tǒng)源程序如下:#include<stdio.h> /標(biāo)準(zhǔn)輸入、輸出頭文件#include<stdlib.h> /包含字符串函數(shù)處理頭文件#include<string> /定義字符串#include<conio.h>#define OK 1#define ERROR 0typedef struct flight
17、node /定義航班信息結(jié)點(diǎn)char air_num10; /航班號char start_time15; /起飛時(shí)間char end_time15; /到達(dá)時(shí)間char end_place30; /目的地int total; /限座int left; /空座int price; /票價(jià)struct flightnode *next; /指向個(gè)結(jié)點(diǎn)flightnode;typedef struct passengernode /定義乘客資料結(jié)點(diǎn)char name20; /姓名char ID_num20; /證件號碼char air_num20; /航班號int seat_num; /座位號str
18、uct passengernode *next; /指向個(gè)結(jié)點(diǎn)passengernode;flightnode *head_flight(); /生成航班信息的頭結(jié)點(diǎn)passengernode *head_passenger(); /生成乘客資料的頭結(jié)點(diǎn)int CreatFlight(flightnode *l); /生成航班信息鏈表int CreatPassenger(passengernode *l); /生成乘客資料鏈表int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int tot
19、al,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*a,char *air_num,passengernode *c,char *name,char *ID_num); /訂票函數(shù)int Cance
20、lTicket(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)passengernode *cus=head_passenger();flightnode *air=head_flight();char name20,air_num20,ID_n
21、um30,mima20,ch;char t20="5566" /管理員密碼system("cls");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");printf(" =nn");printf(" 1 -> Book Tic
22、ket n");printf(" 2 -> Cancel Ticket n");printf(" 3 -> Search Information n");printf(" 4 -> Exit nn");printf(" =n");switch(ch=getchar()case '1':printf("n *-Booking Ticket-*n"); /進(jìn)入訂票功能printf("Please input a airline number an
23、d press enter for OK:");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:");scanf("%s",ID_num);BookTicket(air,air_num,cus,name,ID_num);getch(
24、);break;case '2':printf(" *-Canceling Ticket-*n"); /進(jìn)入退票功能printf("Please input the cancel name for booking ticket:");scanf("%s",name);printf("Please input the ID for booking ticket:");scanf("%s",ID_num);CancelTicket(cus,air,name,ID_num);break
25、;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') /航班信息查詢printf("*- flig
26、ht 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(
27、);break;case '4':getch();p=0; /退出系統(tǒng)break;flightnode *head_flight() /生成航班信息的頭結(jié)點(diǎn)flightnode *a;a=(flightnode *)malloc(sizeof(flightnode); /動(dòng)態(tài)分配空間給flightnode指針并付給aif(a=NULL)a->next=NULL;return a;passengernode *head_passenger() /生成乘客資料頭結(jié)點(diǎn)passengernode *c;c=(passengernode*)malloc(sizeof(passeng
28、ernode);/分配if(c=NULL)c->next=NULL;return c;int CreatFlight(flightnode *l) /生成航班信息鏈表(用單鏈表存儲(chǔ))flightnode *p=*l; /int i=0;char *air_num6="f2008","f2009","f2010","f2011","f2012","f2013"char *start_time6=" 08:00-08:30","09:00-12
29、:30"," 12:00-13:00"," 16:30-19:00","17:00-20:55","21:00-23:45"char *end_place6="Changsha-lasa","Changsha-Beijing","Changsha-deguo","Changsha-Shanghai","Changsha-Sanya","Changsha-Guangdong",; /初始化
30、航班信息int total6=100,100,150,100,65,100;int price6=4000,1000,7000,500,900,399;int left6=23,55,76,25,40,35;for(i=0;i<6;i+)InsertFlight(&p,air_numi,start_timei,end_placei,totali,lefti,pricei); /插入航班信息return OK;int CreatPassenger(passengernode *l) /生成乘客資料鏈表(用單鏈表存儲(chǔ))passengernode *p=*l;int i=0;char
31、*name3="Sujuan","Donghui","W73"char *ID_num3="","","" /初始化乘客資料char *air_num3="f2005","f2006","f2007"int seat_num3=22,2,9;for(i=0;i<3;i+)InsertPassenger(&p,namei,ID_numi,air_numi,seat_numi); /插入乘客資料return
32、 OK;int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price) /插入航班信息新結(jié)點(diǎn)flightnode *q;q=(flightnode*)malloc(sizeof(flightnode);strcpy(q->air_num,air_num); /復(fù)制信息流strcpy(q->start_time,start_time);strcpy(q->end_place,end_place);q->total=tota
33、l;q->left=left;q->price=price;q->next=NULL;(*p)->next=q;/next返回指針(*p)=(*p)->next; /(循環(huán)) 航班信息鏈的尾插法return OK;int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num) /插入乘客資料新結(jié)點(diǎn)passengernode *q;q=(passengernode*)malloc(sizeof(passengernode);strcpy(q->na
34、me,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,char *air_num) /修改航班信息flightnode *p;p=l->next;for(;p!=NULL;p=p->next)if(strcmp(air_num,p-
35、>air_num)=0)/比較字符串,相等時(shí)值為0p->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;passengernode *q=c->next;p=a->next;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->ne
36、xt)if(strcmp(p->air_num,air_num)=0) /比較字符串if(p->left>0)printf(" nSuccessful for Booking ticket.nn Your flight: %sn Your seat number : %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 isn't the plane,please check the airline number!");pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年糖、加工糖及制糖副產(chǎn)品合作協(xié)議書
- 2025年三維多向整體編織物合作協(xié)議書
- 2025年五金采購合同標(biāo)準(zhǔn)版本(2篇)
- 2025年買賣合同鴨飼料(2篇)
- 2025年產(chǎn)品供銷合同簡單版(2篇)
- 2025年二手簡裝房購房協(xié)議樣本(三篇)
- 2025年二手房買賣交合同常用版(4篇)
- 2025年臨時(shí)勞務(wù)合同樣本(2篇)
- 2025年個(gè)人投資公司協(xié)議經(jīng)典版(三篇)
- 2025年交通事故現(xiàn)場協(xié)議書表(2篇)
- 人教版四年級上冊豎式計(jì)算200題及答案
- 建設(shè)工程工作總結(jié)報(bào)告
- 脾破裂術(shù)后健康宣教課件
- 三廢環(huán)保管理培訓(xùn)
- 財(cái)務(wù)管控的間接成本
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 護(hù)士團(tuán)隊(duì)的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計(jì)算公式計(jì)分標(biāo)準(zhǔn)說明模板
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢管理與擺位》
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問題研究
評論
0/150
提交評論