C++第三章 实验四 1

题目:

  1. 已知一个航空管理员操作类的数据成员如下:

Class FlightInfo

{

stringNo; //航班号

stringStartCity; //起飞地点

stringEndCity; //降落地点

stringStartDate; //日期

stringStartTime; //起飞时间

stringEndTime; //降落时间

intFirstTicket; //头等舱剩余票数

intFirstPrice; //头等舱价格

intSecondTicket; //经济舱剩余票数

intSecondPrice; //经济价格

public:

};

编程要求:

(1)完成这个类的定义,要求:

a. 具有两个参数的构造函数,参数分别为航班号和日期,实现航空管理员对航班的新建、修改、删除等操作;

b. 设置航班起飞的日期和时间、头等舱/经济舱的价格和剩余票数、出发地和目的地、航班号。

(2)定义一个FlightManager类用来管理航班信息,实现增加、编辑、删除航班的供能。

#include<iostream>
using namespace std;
#include<string.h>
#include<string>
#include<iomanip>
int sum=0;                   //记录航班总数
void menu();                 //实现菜单功能 
class FlightInfo
{
    char No[20];	         //航班号 
    char StartCity[20];	     //起飞地点 
    char EndCity[20];	     //降落地点 
    char StartDate[20];	     //日期 
    char StartTime[20];	     //起飞时间 
    char EndTime[20];	     //降落时间 
    int FirstTicket;	     //头等舱剩余票数 
    int FirstPrice;		     //头等舱价格 
    int SecondTicket;	     //经济舱剩余票数 
    int SecondPrice;	     //经济舱价格 

public:
    FlightInfo();            //构造函数
	void setNo(char _No[20]){strcpy(No,_No);};
	void setStartCity(char _StartCity[20]){strcpy(StartCity,_StartCity);};
	void setEndCity(char _EndCity[20]){strcpy(EndCity,_EndCity);};
	void setStartDate(char _StartDate[20]){strcpy(StartDate,_StartDate);};
	void setStartTime(char _StartTime[20]){strcpy(StartTime,_StartTime);};
	void setEndime(char _EndTime[20]){strcpy(EndTime,_EndTime);};
	void setFirstTicket(int firstTicket){FirstTicket=firstTicket;};
	void setFirstPrice(int firstPrice){FirstPrice=firstPrice;};
	void setSecondTicket(int secondTicket){SecondTicket=secondTicket;};
	void setSecondPrice(int secondPrice){SecondPrice=secondPrice;};
	char *getNo(){return No;};
	char *getStartCity(){return StartCity;};
	char *getEndCity(){return EndCity;};
	char *getStartDate(){return StartDate;};
	char *getStartTime(){return StartTime;};
	char *getEndTime(){return EndTime;};
	int getFirstTicket(){return FirstTicket;};
	int getFirstPrice(){return FirstPrice;};
	int getSecondTicket(){return SecondTicket;};
	int getSecondPrice(){return SecondPrice;};
};

FlightInfo::FlightInfo()
{
	cout<<"请输入航班号:";
	cin>>No;
	cin.ignore();
	cout<<"请输入航班起飞地点:";
	cin>>StartCity;
	cout<<"请输入航班降落地点:";
	cin>>EndCity;
	cout<<"请输入航班起飞日期:";
	cin>>StartDate;
	cout<<"请输入航班起飞时间:";
	cin>>StartTime;
	cout<<"请输入航班降落时间:";
	cin>>EndTime;
	cout<<"请输入航班头等舱剩余票数:";
	cin>>FirstTicket;
	cout<<"请输入航班头等舱价格:";
	cin>>FirstPrice;
	cout<<"请输入航班经济舱剩余票数:";
	cin>>SecondTicket;
	cout<<"请输入航班经济舱价格:";
	cin>>SecondPrice;
}

FlightInfo *info[100]={NULL};          //空指针 

class FlightManager
{
public:
	void addFlight();
	void editFlight();
	void delFlight();
};

void FlightManager::addFlight()       //增添航班 
{
	info[sum]=new FlightInfo;
	sum++;
}

void FlightManager::editFlight()                     //编辑航班信息 
{
	char no[20],start_city[20],end_city[20],start_date[20],start_time[20],end_time[20];
	int n,num,command,first_ticket,first_price,second_ticket,second_price;
	cout<<"请输入想编辑的航班号:";
	cin>>no;
	n=sum;
	for(num=0;num<sum;num++)                        //遍历寻找航班号
	{
		if(strcmp(info[num]->getNo(),no)==0)
		{
			n=num;                                                     //记录航班 
			cout<<"请输入您想编辑的航班信息对应的数字:"<<endl;
			cout<<"1.起飞地点"<<endl; 
			cout<<"2.降落地点"<<endl;
			cout<<"3.起飞日期"<<endl;
			cout<<"4.起飞时间"<<endl;
			cout<<"5.降落地点"<<endl;
			cout<<"6.头等舱剩余票数"<<endl;
			cout<<"7.头等舱价格"<<endl;
			cout<<"8.经济舱剩余票数"<<endl;
			cout<<"9.经济舱价格"<<endl;
			cin>>command;
			switch(command)
			{
				case 1:
				{
					cout<<"请输入修改后的起飞地点:"<<endl;
					cin>>start_city;
					info[num]->setStartCity(start_city); 
					break;
				}
				case 2:
				{
					cout<<"请输入修改后的降落地点:"<<endl;
					cin>>end_city;
					info[num]->setEndCity(end_city); 
					break;
				}
				case 3:
				{
					cout<<"请输入修改后的起飞日期:"<<endl;
					cin>>start_date;
					info[num]->setStartDate(start_date); 
					break;
				}
				case 4:
				{
					cout<<"请输入修改后的起飞时间:"<<endl;
					cin>>start_time;
					info[num]->setStartTime(start_time); 
					break;
				}
				case 5:
				{
					cout<<"请输入修改后的降落时间:"<<endl;
					cin>>end_time;
					info[num]->setEndime(end_time); 
					break;
				}
				case 6:
				{
					cout<<"请输入修改后的头等舱剩余票数:"<<endl;
					cin>>first_ticket;
					info[num]->setFirstTicket(first_ticket); 
					break;
				}
				case 7:
				{
					cout<<"请输入修改后的头等舱价格:"<<endl;
					cin>>first_price;
					info[num]->setFirstPrice(first_price); 
					break;
				}
				case 8:
				{
					cout<<"请输入修改后的经济舱剩余票数:"<<endl;
					cin>>second_ticket;
					info[num]->setSecondTicket(second_ticket); 
					break;
				}
				case 9:
				{
					cout<<"请输入修改后的经济舱价格:"<<endl;
					cin>>second_price;
					info[num]->setSecondPrice(second_price); 
					break;
				}
			} 
		}
	} 
	if(n<sum)                                     //判断是否找到了该航班并显示是否编辑成功 
	    {
			cout<<"编辑成功!"<<endl;
	    } 
	else
	{
		cout<<"抱歉,您想要修改的航班不存在,请重新进行操作"<<endl;
	}
}

void FlightManager::delFlight()                     //删除航班信息 
{
	int num,t,j;
	char no[20];
	cout<<"请输入想删除的航班号:"<<endl;
	cin>>no;
	j=sum;
	for(num=0;num<sum;num++)
	{
		if(strcmp(info[num]->getNo(),no)==0)
	    {
	    	j=num;                                //记录航班 
	    	for(t=num;t<sum;t++)
				info[num]=info[num+1];
			delete info[sum];
			cout<<"该航班成功已经删除"<<endl;
			break; 
		}
	}
	if(j<sum)                                        ///判断是否找到了该航班并显示是否删除成功 
	    {
			cout<<"编辑成功!"<<endl;
	    } 
	else
	{
		cout<<"抱歉,您想要修改的航班不存在,请重新进行操作"<<endl;
	}
}

int main()
{
	int flag=0;
	while(flag<200)
	{
		menu();
		flag++;
	}
	return 0;
}

void menu()                                  //实现菜单功能 
{
	int choice;
	FlightManager manager;
	cout<<"请输入你选择的服务项目对应的数字:"<<endl;
	cout<<"1.增加航班"<<endl;
	cout<<"2.编辑航班"<<endl;
	cout<<"3.删除航班"<<endl;
	cout<<"4.退出系统"<<endl;
	cin>>choice;
	if(choice>=1&&choice<=4)
	{
		switch(choice)
		{
			case 1:manager.addFlight();break;
			case 2:manager.editFlight();break;
			case 3:manager.delFlight();break;
			case 4:exit(0);break;
		}
	}
	else
	{
		cout<<"您输入的数字有误,请重新输入:"<<endl;
	} 
}


版权声明:本文为m0_61501996原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。