版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Web前端開(kāi)發(fā)技術(shù)實(shí)踐
- 面壁思過(guò)作文500字(15篇)
- 土地修復(fù)責(zé)任履行保證承諾書(9篇)
- 敗血癥患者微生物檢測(cè)技術(shù)
- 護(hù)理評(píng)估課程感悟與反思
- 慢病管理科普方向:阿爾茨海默病照護(hù)課件
- 公司級(jí)的見(jiàn)證取樣制度
- 公司執(zhí)行力的制度
- 公司內(nèi)部管理和運(yùn)行制度
- 保證金收制度
- 2026年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能筆試備考試題含答案解析
- 廣東省廣州市2025-2026學(xué)年九年級(jí)化學(xué)上學(xué)期期末模擬卷(含答案)
- (15)普通高中美術(shù)課程標(biāo)準(zhǔn)日常修訂版(2017年版2025年修訂)
- GB/T 32147-2015家用電磁爐適用鍋
- GB/T 26218.3-2011污穢條件下使用的高壓絕緣子的選擇和尺寸確定第3部分:交流系統(tǒng)用復(fù)合絕緣子
- 兒童青少年情緒障礙課件
- 馬克思主義哲學(xué)(主講)課件
- 老舊小區(qū)改造工程入戶調(diào)查方案
- 公路隧道原位擴(kuò)建技術(shù)探討
- 國(guó)家花卉種質(zhì)資源庫(kù)申報(bào)書-中國(guó)花卉協(xié)會(huì)
- EPDM塑膠面層的施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論