飛機(jī)訂票系統(tǒng)2_第1頁(yè)
飛機(jī)訂票系統(tǒng)2_第2頁(yè)
飛機(jī)訂票系統(tǒng)2_第3頁(yè)
飛機(jī)訂票系統(tǒng)2_第4頁(yè)
飛機(jī)訂票系統(tǒng)2_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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、#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>typedef struct flightnodechar flight_num10; /航班號(hào)char start_time10; /起飛時(shí)間char end_time10; /抵達(dá)時(shí)間char start_place20;/起飛城市char end_place20; /抵達(dá)城市int left; /空座數(shù)float price; /票價(jià)float price_discount;/票價(jià)折扣int i

2、sFull; /航班是否滿倉(cāng)struct flightnode *next;/指向下一個(gè)結(jié)點(diǎn)flightnode;/航班結(jié)點(diǎn)typedef struct passengernodechar name20; /姓名char ID_num20; /證件號(hào)char flight_num10;/航班號(hào)int order_num; /訂單號(hào)int ticket_num; /訂票數(shù)量struct passengernode *next;/指向下一個(gè)結(jié)點(diǎn)passengernode;/客戶結(jié)點(diǎn)typedef struct passengerListpassengernode *head;passengerno

3、de *rear;passengerList;void init_flight(flightnode *&h)/目的是要建立一個(gè)以h為頭結(jié)點(diǎn)的空鏈表,錄入航班信息和增加航班后將航班結(jié)點(diǎn)插入該鏈表h=(flightnode *)malloc(sizeof(flightnode);/申請(qǐng)頭結(jié)點(diǎn)的空間if(h=NULL) exit(0);h->next=NULL;/將頭結(jié)點(diǎn)h的指針域置為空void init_passengerList(passengerList *&pList)pList=(passengerList *)malloc(sizeof(passengerList

4、);pList->head=(passengernode *)malloc(sizeof(passengernode);/創(chuàng)建頭結(jié)點(diǎn)pList->rear=pList->head;pList->rear->order_num=0;/訂單號(hào)從0開(kāi)始計(jì)數(shù)pList->head->next=NULL;void save_passenger(passengerList *PList)FILE* fp = fopen("passenger.dat","wb");if(fp=NULL)return;passengernode

5、 *temp=PList->head->next;while(temp!=NULL)fwrite(temp,sizeof(passengernode),1,fp);temp = temp->next;fclose(fp);void load_passenger(passengerList *PList)FILE* fp = fopen("passenger.dat","rb");if(fp=NULL)return;passengernode *q;int n;while(!feof(fp)q=(passengernode *)mallo

6、c(sizeof(passengernode);n =fread(q,sizeof(passengernode),1,fp);if(n!=1)break;PList->rear->next=q;PList->rear=q;PList->rear->next=NULL;fclose(fp);void save_flight(flightnode *h)FILE* fp = fopen("flightList.dat","wb");if(fp=NULL)return;flightnode *temp=h->next;whi

7、le(temp!=NULL)fwrite(temp,sizeof(flightnode),1,fp);temp = temp->next;fclose(fp);void load_flight(flightnode *&h)flightnode *pt=h;FILE* fp = fopen("flightList.dat","rb");if(fp=NULL)return;flightnode *q;int n;while(!feof(fp)q=(flightnode *)malloc(sizeof(flightnode);n=fread(q

8、,sizeof(flightnode),1,fp);if(n!=1)break;pt->next=q;pt=q;pt->next=NULL;fclose(fp);int find_same_flight(flightnode *h,char *flight_num)flightnode *t=h->next,*p=h->next;int mark=0;printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn","航班號(hào)","起飛城市","抵達(dá)城市"

9、,"起飛時(shí)間","抵達(dá)時(shí)間","價(jià)格","折扣","是否滿倉(cāng)","空座數(shù)");while(t!=NULL && strcmp(t->flight_num,flight_num)!=0) t=t->next;while(p!=NULL)if(strcmp(t->start_place,p->start_place)=0)&&(strcmp(t->end_place,p->end_place)= 0)&&

10、amp;(strcmp(t->flight_num,p->flight_num)!=0)printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isFull,p->left);mark=1;p=p->next;if(mark=0)printf("

11、;tt抱歉,沒(méi)有可選的航班!n");return 0;return 1;void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)/在錄入航班情況或增加新的航班后,將新的航班結(jié)點(diǎn)插入到航線鏈表中flightnode *q;/定義q為新增加的航班結(jié)點(diǎn)的指針的形參flightnode *p=h;q=(f

12、lightnode *)malloc(sizeof(flightnode);/為q結(jié)點(diǎn)申請(qǐng)空間strcpy(q->flight_num,flight_num);strcpy(q->start_place,start_place);strcpy(q->end_place,end_place);strcpy(q->start_time,start_time);strcpy(q->end_time,end_time);q->left=left;q->price=price;q->price_discount=price_discount;q->i

13、sFull=isFull;/以上是用strcpy函數(shù)將新增加航班的各種信息復(fù)制到q結(jié)點(diǎn)中q->next=p->next;/將q結(jié)點(diǎn)的指針域置為空p->next=q;p=p->next;/將指針后移void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)/客戶訂票后,將客戶結(jié)點(diǎn)插入客戶鏈表中,并修改相應(yīng)的航班信息。flightnode *p=h->next;for(;p!

14、=NULL;p=p->next)if(strcmp(p->flight_num,flight_num)=0)p->left=p->left-ticket_num;if(p->left=0)p->isFull=1;passengernode *q=(passengernode *)malloc(sizeof(passengernode);/新建結(jié)點(diǎn),存放新的客戶訂單信息strcpy(q->name,name);strcpy(q->ID_num,ID_num);strcpy(q->flight_num,flight_num);q->tic

15、ket_num=ticket_num;q->next=NULL;/將新訂單連接到鏈表中PList->rear->next=q;q->order_num=PList->rear->order_num+1;/生成訂單號(hào)PList->rear=q;void delete_flight(flightnode *&h,passengerList *&PList)/目的要按照某個(gè)航班號(hào)刪除航班結(jié)點(diǎn)flightnode *p,*pr;passengernode *q,*qr;char flight_num10;int mark=1;qr=PList-

16、>head;/pr為顧客鏈表的頭結(jié)點(diǎn)q=qr->next;/用p作為中間指針對(duì)顧客鏈表中要?jiǎng)h除的顧客結(jié)點(diǎn)進(jìn)行查找pr=h;/pr為航線鏈表的頭結(jié)點(diǎn)p=pr->next;/用p作為指針對(duì)航線鏈表中要?jiǎng)h除的航班結(jié)點(diǎn)進(jìn)行查找printf("tt請(qǐng)輸入你要?jiǎng)h除的航班號(hào):");scanf("%s",flight_num);while(p!=NULL)/要?jiǎng)h除的航班存在,下面進(jìn)行刪除操作if(strcmp(flight_num,p->flight_num)=0)pr->next=p->next;/移動(dòng)指針找著要?jiǎng)h除的航班結(jié)點(diǎn)fre

17、e(p);/刪除操作printf("tt刪除%s航班成功!n",flight_num);mark=0;p=NULL;if(pr->next!=NULL)pr=pr->next;p=pr->next;if(mark=1)printf("tt無(wú)此航班,無(wú)法刪除!n");elsewhile(q!=NULL)/要?jiǎng)h除的顧客存在,下面進(jìn)行刪除操作if(strcmp(flight_num,q->flight_num)=0)qr->next=q->next;/移動(dòng)指針找著要?jiǎng)h除的顧客結(jié)點(diǎn)free(q);q=NULL;if(qr-&g

18、t;next!=NULL)qr=qr->next;q=qr->next;int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)/目的是按照要退票的顧客的姓名查找該顧客結(jié)點(diǎn),進(jìn)行刪除操作passengernode *p,*pr=PList->head;/pr指向顧客鏈表的頭結(jié)點(diǎn)p=pr->next;while(p!=NULL)if(strcmp(name,p->name)=0&&strcmp(ID_num,p->ID_n

19、um)=0)for(flightnode *f=h->next;f!=NULL;f=f->next)if(strcmp(p->flight_num,f->flight_num)=0)f->left=f->left+p->ticket_num;f->isFull=0;break;pr->next=p->next;free(p);printf("tt顧客%s,%s退票成功!n",name,ID_num);return 1;pr=pr->next;p=pr->next;printf("tt無(wú)此顧客,

20、無(wú)法退票!n");return 0;void add_flight(flightnode *&h)/錄入航班信息后調(diào)用insert_flight函數(shù)增加航班flightnode *p=h;char flight_num10,start_time10,end_time10,start_place20,end_place20;int left,isFull,mark=1;float price,price_discount;for(;p->next!=NULL;p=p->next)/移動(dòng)指針,找到最后一個(gè)結(jié)點(diǎn)while(mark=1)printf("tt請(qǐng)輸

21、入你要增加的航班號(hào):");scanf("%s",flight_num);printf("tt請(qǐng)輸入出發(fā)地:");scanf("%s",start_place);printf("tt請(qǐng)輸入目的地:");scanf("%s",end_place);printf("tt請(qǐng)輸入起飛時(shí)間:");scanf("%s",start_time);printf("tt請(qǐng)輸入抵達(dá)時(shí)間:");scanf("%s",end_tim

22、e);printf("tt請(qǐng)輸入票價(jià):");scanf("%f",&price);printf("tt請(qǐng)輸入折扣:");scanf("%f",&price_discount);printf("tt請(qǐng)輸入剩余座位數(shù):");scanf("%d",&left);printf("tt請(qǐng)輸入是否滿倉(cāng)(0表示沒(méi)有滿倉(cāng)1以滿倉(cāng)):");scanf("%d",&isFull);insert_flight(p,flight

23、_num,start_place,end_place,start_time,end_time,left,price, price_discount,isFull);printf("tt增加航班%s成功!n",flight_num);printf("tt是否繼續(xù)錄入航班信息(1表示繼續(xù)錄入;0表示停止錄入).n");printf("tt請(qǐng)輸入:");scanf("%d",&mark);int flight_num_check(flightnode *h,char *flight_num)/用航班號(hào)進(jìn)行查詢fl

24、ightnode *p=h;printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn","航班號(hào)","起飛城市","抵達(dá)城市","起飛時(shí)間","抵達(dá)時(shí)間","價(jià)格","折扣","是否滿倉(cāng)","空座數(shù)");for(;p!=NULL;p=p->next)if(strcmp(p->flight_num,flight_num)=0)printf(&q

25、uot;%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isFull,p->left);return 1;printf("tt抱歉,沒(méi)有航班號(hào)為%s的航班信息!n",flight_num);return 0;int place_check(flightnode *h,c

26、har *start_place,char *end_place)/用起飛抵達(dá)城市進(jìn)行查詢flightnode *p=h;int mark=0;printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn","航班號(hào)","起飛城市","抵達(dá)城市","起飛時(shí)間","抵達(dá)時(shí)間","價(jià)格","折扣","是否滿倉(cāng)","空座數(shù)");for(;p!=NULL;p=p-&

27、gt;next)if(strcmp(p->start_place,start_place)=0&&strcmp(p->end_place,end_place)=0)printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isFull,p->le

28、ft);mark=1;if(mark=0)printf("tt抱歉,沒(méi)有從%s到%s的航班信息!n",start_place,end_place);return 0;return 1;void check_all_flight(flightnode *h)flightnode *p=h;int m=0;printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn","航班號(hào)","起飛城市","抵達(dá)城市","起飛時(shí)間","抵達(dá)時(shí)

29、間","價(jià)格","折扣","是否滿倉(cāng)","空座數(shù)");for(;p!=NULL;p=p->next)printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isFull,p->

30、left);m=1;if(m=0)printf("tt航班信息為空!n");void flight_check(flightnode *h)/選擇使用哪一個(gè)函數(shù)進(jìn)行查詢flightnode *p=h->next;char flight_num10,start_place20,end_place20;char a; printf("tt請(qǐng)選擇航班查詢方式:n");printf("tt1表示按航班號(hào)進(jìn)行查詢;n");printf("tt2表示按起飛抵達(dá)城市進(jìn)行查詢;n");printf("tt3表示瀏覽

31、全部航班信息.ntt請(qǐng)選擇輸入:");a=getch();printf("%cn",a);if(a='1')printf("tt請(qǐng)輸入航班號(hào):");scanf("%s",flight_num);flight_num_check(p,flight_num);else if(a='2')printf("tt請(qǐng)輸入起飛城市:");scanf("%s",start_place);printf("tt請(qǐng)輸入抵達(dá)城市:");scanf("

32、;%s",end_place);place_check(p,start_place,end_place);else if(a='3')check_all_flight(p);elsereturn;int ID_name_check(passengerList *PList,char *name,char *ID_num)passengernode *p=PList->head->next;int mark=0;printf("%-8s%-20s%-20s%-10s%-8s%n","訂單號(hào)","姓名"

33、;,"證件號(hào)","航班號(hào)","訂票數(shù)量");for(;p!=NULL;p=p->next)if(strcmp(p->ID_num,ID_num)=0&&strcmp(p->name,name)=0)printf("%-8d%-20s%-20s%-10s%-8d%n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);mark=1;if(mark=0)printf("tt抱

34、歉,沒(méi)有%s,%s的訂單信息!n",name,ID_num);return 0;return 1;int order_num_check(passengerList *PList,int order_num)passengernode *p=PList->head->next;printf("%-8s%-20s%-20s%-10s%-8s%n","訂單號(hào)","姓名","證件號(hào)","航班號(hào)","訂票數(shù)量");for(;p!=NULL;p=p->nex

35、t)if(p->order_num=order_num)printf("%-8d%-20s%-20s%-10s%-8d%n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);return 1;printf("tt抱歉,沒(méi)有訂單號(hào)為%d的訂單信息!n",order_num);return 0;void check_all_passenger(passengerList *PList)passengernode *p=PList->head-&

36、gt;next;int m=0;printf("%-8s%-20s%-20s%-10s%-8s%n","訂單號(hào)","姓名","證件號(hào)","航班號(hào)","訂票數(shù)量");for(;p!=NULL;p=p->next)printf("%-8d%-20s%-20s%-10s%-8d%n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);m=1;if(m=0)

37、printf("tt訂單信息為空!n");void passenger_check(passengerList *PList)char name20,ID_num15;int order_num;char a; printf("tt請(qǐng)選擇訂單查詢方式:n");printf("tt1表示按客戶姓名和證件號(hào)進(jìn)行查詢;n");printf("tt2表示按訂單號(hào)進(jìn)行查詢;n");printf("tt3表示查看全部訂單信息.ntt請(qǐng)選擇輸入:");a=getch();printf("%cn&qu

38、ot;,a);if(a='1')printf("tt請(qǐng)輸入客戶姓名:");scanf("%s",name);printf("tt請(qǐng)輸入證件號(hào):");scanf("%s",ID_num);ID_name_check(PList,name,ID_num);else if(a='2')printf("tt請(qǐng)輸入訂單號(hào):");scanf("%d",&order_num);order_num_check(PList,order_num);else

39、 if(a='3')check_all_passenger(PList);elsereturn;void modify_flight(flightnode *&h,passengerList *&PList)flightnode *p=h->next;char flight_num10,start_time10,end_time10;char a;printf("tt*航線信息修改*n");printf("tt*n");printf("tt* 增加航班-1 *n");printf("tt

40、* 刪除航班-2 *n");printf("tt* 修改航班時(shí)間-3 *n");printf("tt*n");printf("tt請(qǐng)選擇:");a=getch();printf("%cn",a);if(a='1')add_flight(h);else if(a='2')delete_flight(h,PList);else if(a='3')printf("tt請(qǐng)輸入要修改的航班的航班號(hào):");scanf("%s",f

41、light_num);if(flight_num_check(p,flight_num)=1)printf("tt請(qǐng)輸入修改后的起飛時(shí)間:");scanf("%s",start_time);printf("tt請(qǐng)輸入修改后的抵達(dá)時(shí)間:");scanf("%s",end_time);for(;p!=NULL;p=p->next)if(strcmp(flight_num,p->flight_num)=0)strcpy(p->start_time,start_time);strcpy(p->end

42、_time,end_time);printf("tt航班%s時(shí)間修改成功!n",flight_num);elsereturn;int book(flightnode *&h,passengerList *&PList)char name20; /姓名char ID_num20; /證件號(hào)char flight_num10; /航班號(hào)char start_place20;/起飛城市char end_place20; /抵達(dá)城市int ticket_num; /訂票數(shù)量int k;flightnode *p=h->next;printf("tt請(qǐng)

43、輸入信息:n");printf("tt請(qǐng)輸入起飛城市:");scanf("%s",start_place);printf("tt請(qǐng)輸入抵達(dá)城市:");scanf("%s",end_place);if(place_check(h,start_place,end_place)=1)printf("tt航班號(hào):");scanf("%s",flight_num);while(flight_num=NULL)printf("航班號(hào)不能為空!n");prin

44、tf("tt航班號(hào):");scanf("%s",flight_num);while(p!=NULL)if(strcmp(p->flight_num,flight_num)=0)printf("tt姓名:");scanf("%s",name);printf("tt證件號(hào)碼:");scanf("%s",ID_num);printf("tt訂票數(shù)量:");scanf("%d",&ticket_num);while(name=NU

45、LL)printf("客戶姓名不能為空!n");printf("tt姓名:");scanf("%s",name);while(ID_num=NULL)printf("客戶證件號(hào)碼不能為空!n");printf("tt證件號(hào)碼:");scanf("%s",ID_num);while(ticket_num=0)printf("客戶訂票數(shù)量不能為空!n");printf("tt訂票數(shù)量:");scanf("%d",&

46、;ticket_num);if(p->left>0&&p->left>=ticket_num)insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);printf("tt你應(yīng)付金額¥%6.2f.n",p->price*p->price_discount* ticket_num);getch();printf("tt恭喜您,訂票成功!n");return 1;elseprintf("tt*很遺憾,該航班已滿!*n");printf("tt*如選擇其他航班請(qǐng)輸入-1ntt*不選則輸入-0*n");printf("tt輸入數(shù)字進(jìn)行選擇:");scanf("%d",&k);if(k=1)printf("tt此航線上的其他航班有:n");if(find_same_flight(h,flight_num)=1)printf("tt請(qǐng)輸入您選的航班:");scanf("%s",flight_num);insert_passengerList(h,PList,

溫馨提示

  • 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)論