⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airline.cpp

📁 一个航空订票系统。航空客运订票的业务活动包括:查询航线、客票预订和办理退票等运订票系统。本程序用计算机来完成航空客运订票的业务活动(包括:查询航线、客票预订和办理退票等运订票系统)。
💻 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 + -