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

📄 source.h

📁 功能:设计一个飞机订票系统
💻 H
📖 第 1 页 / 共 2 页
字号:
#include<iostream>
#include<fstream>
#include<cstring>
#include<conio.h>
using namespace std;
struct Time
{
	int hour;
	int minutes;
};
class Flight                                                                    
{
public:
	Flight();                                 
	void Ofile(ofstream &of);                 
	void Infile(ifstream &f);                
    void Out();                                                 
	void Set_Airline(char *airlinet,char *Startt,char *overt,Time starttimet,Time overtime2,int money,int discount,int certain);
    char *GetAirline();                        
	char *GetStart();                         
	int GetAmount();
	void SetAmount(int t);
	char *GetOver(); 
	int GetCertain();
	Flight *Next;                           
protected:
	char Airline[20];                          
    char Start[20];
	char Over[20];
	Time StartTime;
	Time OverTime;
	int Money;
	int Discount;
	int Amount;
	int Certain;
}; 

Flight::Flight():Next(0){}                   

char *Flight::GetAirline(){return Airline;}        

char* Flight::GetStart(){return Start;}           

char *Flight::GetOver(){return Over;}             

int Flight::GetAmount(){return Amount;}

int Flight::GetCertain(){return Certain;}

void Flight::SetAmount(int t){ Amount=t;}

void Flight::Set_Airline(char *airlinet,char *startt,char *overt,Time starttimet,Time overtimet,int money,int discount,int certaint)
{
	strcpy(Airline,airlinet);
	strcpy(Start,startt);
	strcpy(Over,overt);
	StartTime=starttimet;
	OverTime=overtimet;
	Money=money;
	Discount=discount;
	Certain=certaint;
	Amount=0;
}
	

void Flight::Infile(ifstream &f)
{
	f>>Airline>>Start>>Over>>StartTime.hour>>StartTime.minutes>>OverTime.hour>>OverTime.minutes>>Money>>Discount>>Amount>>Certain;                      //将数据输入到文件
}

void Flight::Ofile(ofstream &of)
{

	of<<" "<<Airline<<" "<<Start<<" "<<Over<<" "<<StartTime.hour<<" "<<StartTime.minutes<<" "<<OverTime.hour<<" "<<OverTime.minutes<<" "<<Money<<" "<<Discount<<" "<<Amount<<" "<<Certain;          //从文件中提取数据
}

void Flight::Out()
{
	cout<<Airline<<"\t"<<Start<<"\t"<<Over<<"\t"<<StartTime.hour<<":"<<StartTime.minutes<<"\t   "<<OverTime.hour<<":"<<OverTime.minutes<<"\t\t"<<Money<<"\t"<<Discount; 
}

class Passenger                                                                    
{
public:
	Passenger();                
	void Ofile(ofstream &of);             
	void Infile(ifstream &f);             
    void Out();                           
	void SetPassenger(char *namet,char *idt,int amountt,char *airlinet,int numbert);             
    char *GetName();           
	char *GetId();        
	int GetAmount();
	void SetAmount(int t);
	char *GetAirline();
    int GetNumber();
	Passenger *Next; 
protected:
	char Name[20];
	char Id[20];
	int Amount;
	char Airline[20];
	int Number;
}; 

Passenger::Passenger():Next(NULL){}                   

char *Passenger::GetName(){return Name;}        

char* Passenger::GetId(){return Id;}           
 
char* Passenger::GetAirline(){return Airline;}

int Passenger::GetAmount(){return Amount;}

int Passenger::GetNumber(){return Number;}

void Passenger::SetAmount(int t){Amount=Amount-t;}

void Passenger::SetPassenger(char *namet,char *idt,int amountt,char *airlinet,int numbert)
{
	strcpy(Name,namet);
	strcpy(Id,idt);
	Amount=amountt;
	strcpy(Airline,airlinet);
	Number=numbert;
}

void Passenger::Infile(ifstream &f)
{
	f>>Name>>Id>>Number>>Airline>>Amount;                      
}

void Passenger::Ofile(ofstream &of)
{
	of<<" "<<Name<<" "<<Id<<" "<<Number<<" "<<Airline<<" "<<Amount;         
}

void Passenger::Out()
{
	cout<<Name<<"\t"<<Id<<"\t"<<Airline<<"\t"<<Number<<"\t"<<Amount; 
}

class Function                             //功能类                   
{
public:
	Function();                            //构造函数
	~Function();                          //析构函数
	void Menu();                          //菜单函数
	void Add_Airline();                           //录入航班函数
    void Book();                         //订票函数
	void Search_Flight();                        //查询航班函数
	void Bounce();                         //退票函数
	void Modify();                         //修改函数
	void Show_Flight(); 
	void Show_Passenger();
private:
	Flight *Flight_First;                         
	Passenger *Passenger_First;
	void Read_Flight();                         //读取航班函数
	void Read_Passenger();                       //读取客户信息函数
	void Save_Airline();                           //保存航班信息函数
	void Save_Passenger();                          //保存客户信息函数
};

Function::Function()
{
	Flight_First=new Flight;                             
	Passenger_First=new Passenger;
    Read_Flight();
	Read_Passenger();
}  

Function::~Function()
{
	delete Flight_First;            
	delete Passenger_First;
}

void Function::Add_Airline()                           //添加航班信息函数
{
	char airline[20];
	char start[20];
	char over[20];
	Time starttime;
	Time overtime;
	int money,discount,certain;
	char choose;                            
	Flight *f1,*p,*f2;                         
	system("cls");
	f1=Flight_First;
	f2=Flight_First->Next;
	while(f1->Next)
		f1=f1->Next;                  
	do
	{
		p=new Flight;
		cout<<"请输入您要添加的航班信息:"<<endl;
		
		cout<<"请输入航班:";
    	cin>>airline;
		while(f2)
		{
			if(strcmp(f2->GetAirline(),airline)==0)
			{
				cout<<"该航班已存在,请确定航班!\n\n";
				cout<<"请输入航班:";
    	        cin>>airline;
				break;
			}
			f2=f2->Next;
		}
    	cout<<"请输入起飞地:";
    	cin>>start;                                      
    	cout<<"请输入抵达地:";
    	cin>>over;                                       
    	cout<<"请输入起飞时间(小时):";
        cin>>starttime.hour;
    	cout<<"分钟:";
        cin>>starttime.minutes;
    	cout<<"请输入抵达时间(小时):";
    	cin>>overtime.hour;
    	cout<<"分钟:";
    	cin>>overtime.minutes;
    	cout<<"请输入票价:";
    	cin>>money;
    	cout<<"请输入折扣(%):";
    	cin>>discount;
    	cout<<"请输入载客量:";
    	cin>>certain;
        
		p->Set_Airline(airline,start,over,starttime,overtime,money,discount,certain);
		f1->Next=p;                  
		p->Next=NULL;
		f1=f1->Next;
		cout<<"是否继续输入信息?(Y\\N) "<<endl;
		cin>>choose;
		}while(choose=='y'||choose=='Y');
	Save_Airline();
	cout<<"1.返回主菜单"<<endl;
	cin>>choose;
	while(choose!='1')
	{
		cout<<"1.返回主菜单"<<endl;
	    cin>>choose;
	}
	Menu();
}

void Function::Book()                      //定票函数
{
	char choose; 
	int flag;
	char airline[20],name[20],id[20];
    int amount;
	Passenger *temp=Passenger_First,*p;                         
	Flight *f1=Flight_First->Next;
	Flight *f2=Flight_First->Next;
	Flight *f3=Flight_First->Next;
	system("cls"); 
	while(temp->Next)
		temp=temp->Next;
	do
	{
		cout<<"输入航班号:";
		cin>>airline;
		flag=0;
		while(f1)
		{
			if(strcmp(f1->GetAirline(),airline)==0)				
			{
				flag=1;
				break;
			}
			f1=f1->Next;
		}
		if(flag==0)
		{
			cout<<"无该航班,请确认您的输入!\n";
			break;
		}
		else if(f1->GetAmount()<f1->GetCertain())
		{
			cout<<"航班\t起飞地\t抵达地\t起飞时间   抵达时间\t票价\t折扣\t剩余票数\n";
			f1->Out();
			cout<<"\t"<<f1->GetCertain()-f1->GetAmount()<<endl;
			p=new Passenger;

			cout<<"请输入客户姓名:";
        	cin>>name;                                   
        	cout<<"请输入客户省份证号:";
        	cin>>id;                                                                            
        	cout<<"请输入订票数量:";
            cin>>amount;
			
			p->SetPassenger(name,id,amount,airline,f1->GetAmount());
			f1->SetAmount(f1->GetAmount()+amount);
			temp->Next=p;  
			p->Next=NULL;
			temp=temp->Next;
			cout<<"订票成功!\n";
		}
		else if(f1->GetAmount()==f1->GetCertain()) 
		{
			cout<<"航班\t起飞地\t抵达地\t起飞时间   抵达时间\t票价\t折扣\t剩余票数\n";
			f1->Out();
			cout<<"\t"<<f1->GetCertain()-f1->GetAmount()<<endl;
			cout<<"对不起,没有票了!"<<endl;
			cout<<"\n有以下航班可供选择"<<endl;
			cout<<"起始站\t航班\t中转站\t航班\t终点站\n";
			while(f2)
			{
				if(strcmp(f2->GetStart(),f1->GetStart())==0&&strcmp(f1->GetOver(),f2->GetOver())==0&&strcmp(f1->GetAirline(),f2->GetAirline())==1)
					cout<<f2->GetStart()<<"\t"<<f2->GetAirline()<<"\t无\t无\t"<<f2->GetOver()<<endl;
			    f2=f2->Next;
			}
			f2=Flight_First->Next;
			while(f2)
			{
				if(strcmp(f2->GetStart(),f1->GetStart())==0)
				{
					f3=Flight_First->Next;
					while(f3)
					{
						if(strcmp(f3->GetStart(),f2->GetOver())==0&&strcmp(f3->GetOver(),f1->GetOver())==0)
						{
							cout<<f2->GetStart()<<"\t"<<f2->GetAirline()<<"\t"<<f2->GetOver()<<"\t";
                            cout<<f3->GetAirline()<<"\t"<<f3->GetOver()<<endl;
						}
						f3=f3->Next;
					}
				}
				f2=f2->Next;
			}


		}
		cout<<"是否继续订票?(Y\\N) "<<endl;
		cin>>choose;
	}while(choose=='y'||choose=='Y');
	Save_Passenger();
	Save_Airline();
	cout<<"1.返回主菜单"<<endl;
	cin>>choose;
	while(choose!='1')
	{
		cout<<"1.返回主菜单"<<endl;
	    cin>>choose;
	}
	Menu();
}

void Function::Bounce()           //退票函数
{
	char airline[20];               
	int number;
	char choose;
	Passenger *temp,*p;
	system("cls");
	
	Flight *f=Flight_First->Next;
	temp=Passenger_First->Next;
	p=Passenger_First->Next;
	cout<<"请输入航班:";
	cin>>airline;
	cout<<"输入座位号:";
	cin>>number;
	while(temp)
	{
   	   	if(strcmp(temp->GetAirline(),airline)==0&&temp->GetNumber()==number)  //判断订单编号是否相同

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -