📄 airline.cpp
字号:
#include<iostream>
#include<fstream>
using namespace std;
#include<stdio.h>
#include "Airline.h"
void Airline::input(Airline a[] , int& n){
ifstream in("航线输入.txt");
in>>n;
for(int i = 0 ;i < n; i++){
in>>a[i].lastStation>>a[i].airLineNum>>a[i].KVLNum>>a[i].weekDay>>a[i].ticketNum;
a[i].chairNum = 0;
}
}
void Airline::output(Airline a[],int n){
system("cls");
printf("**********************************************************\n");
printf("终点站\t航班号\t飞机号\t起飞时间\t剩余票数\n");
printf("**********************************************************\n");
for(int i=0;i<n;i++)
a[i].print();
}
void Airline::print(){
printf("%s\t%s\t%d\t%s\t\t%d\n", lastStation,
airLineNum,
KVLNum,
weeks[weekDay],
ticketNum
);
}
int Airline::searchByNum(Airline a[],int n,char num[]){ //按航班号,返回航线引用
for(int i = 0; i<n ; i++)
if(!strcmp(a[i].airLineNum , num)) return i;
return NON_FOUND;
}
void Airline::search(Airline a[],int n){
char last[50];
int j=0;
printf("请输入终点站名:\n");
scanf("%s",last);
printf("**********************************************************\n");
printf("终点站\t航班号\t飞机号\t起飞时间\t剩余票数\n");
printf("**********************************************************\n");
for(int i=0;i<n;i++){
if(!strcmp(a[i].lastStation,last)) {
a[i].print();
j++;
}
}
if(!j) printf("没有这条航线.\n");
}
void Airline::bookTicket(){
Consumer con;
cout<<"客户名:";
cin>>con.name;
cout<<"订票数:";
cin>>con.num;
cout<<"舱位等级(1,2,3): ";
cin>>con.grade;
if(con.num > ticketNum) {
cout<<"******************* 对不起,没有足够的票数了! ***********************"<<endl;
cout<<"您是否愿意加入候补名单[Y/N]"<<endl;
char ch;
cin>>ch;
if(ch=='Y'||ch=='y'){
if(EnterQueue(&waitClients , con))
cout<<"您已加入了候补名单,一旦有人退票,我们将会在第一时间通知您"<<endl;
else cout<<"对不起,您加入候补名单失败"<<endl;
}
return;
}
InsList(clientNamesList,con);
cout<<"****************** 订票成功 **********************"<<endl;
cout<<"座位号: ";
if(con.num == 1) printf("%d\n", chairNum);
else if(con.num == 2) printf("%d , %d\n",chairNum,chairNum + 1);
else printf("%d .. %d \n",chairNum,chairNum + con.num -1);
chairNum += con.num;
ticketNum -= con.num;
}
int printAll(LinkList L){
LinkQueueNode* p;
p = L->next;
if( p == NULL) return 0;
printf("***************************************************\n");
printf("客户名\t订票数\t舱位等级\n");
printf("***************************************************\n");
while(p != NULL){
printf("%s\t%d\t%d\n",p->data.name , p->data.num , p->data.grade);
p = p->next;
}
return 1;
}
void Airline::printClients(){
system("cls");
printf("************************************\n");
printf("* %5s 客户名单 *\n",airLineNum);
printf("************************************\n");
printf("已订票名单:\n");
if (printAll(clientNamesList) == 0) {
printf("\n\n******** 该航班目前还没有人订票 *******\n" );
}
printf("\n\n候补人员名单:\n");
if (printAll(waitClients.front) == 0){
printf("\n\n********* 该航班无人候补 ************\n");
}
}
void Airline::withdrawTicket(){
char name[20];
printf("输入客户名:");
scanf("%s",name);
Node* p = Locate(clientNamesList , name);
if(p == NULL){
printf("======== 尊敬的 %s , 你没有定 %s 航班的机票=======\n",name , airLineNum);
return;
}
ticketNum += p->data.num;
if(DelList(clientNamesList,name) != ERROR)
printf("======== 尊敬的 %s , 您退票成功! ==========\n",name);
p = waitClients.front->next;
if(!IsEmpty(&waitClients)&&
(p->data.num <= ticketNum)) {
printf("======== 尊敬的 %s , 您订票成功 ===========\n", p->data.name );
InsList(clientNamesList, p->data);
}
}//退票
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -