请完整戏票类的实现代码。并使用测试代码测试该类,测试代码的运行结果应和输出样例完全相同 注意, 1. booking函数的购票失败提示示例如下,编写代码时请复制其中的标点符号,以免由于中英文编码问题导致判分失效 余票(11)不足,购买失败 2. 输出的“:”都是中文“:”(25分)
题目内容:
//->戏票类
#include<iostream>
#include<cstring>
using namespace std;
class opera{
char name[30];//歌剧名称
int ts[4]; // ts[0]:包厢的总数,ts[1]:一等座的总座位数
//ts[2]:二等座的总座位数,ts[3]:三等座的总座位数
int es[4];// es[0]:空包厢的数量,es[1]:一等座的空闲座位数
//es[2]:二等座的空闲座位数,es[3]:三等座的空闲座位数
int ps[4];// ps[0]:包厢的票价,ps[1]:一等座的票价
//ps[2]:二等座的票价,,ps[3]:三等座的票价
int income;//总收入
public:
opera(); //默认构造函数,数据成员的初始值请参看输出样例
void set_name(char *);//更改剧名
void set_ps(int []);//更改座位价格
void booking(int,int);//售票,如果余票小于订票数,
//终止该次售票,并输出购票失败提示信息
void refund(int,int);//退票,不收手续费
void print();
~opera(); //析构函数,完成票房统计,内容与格式请参看输出样例
char * getName();
int getPF(int);
int getIncome();
};
void opera::print(){
char line[20]="------------------";
cout<<line<<"戏曲名:"<<name<<line<<endl;
char st[4][20]={ "包厢","一等座","二等座","三等座"};
for(int i=0;i<4;i++)
cout<<st[i]<<"<"<<"票价:"<<ps[i]<<" /总数:"<<ts[i]<<" /可售:"<<es[i]<<">"<<endl;
cout<<line<<"总收入:"<<income<<line<<endl;
}
//->测试代码,测试结果应和输出样例完全相同
int main(){
opera p1;
p1.print();
p1.set_name("二进宫");//更改剧名
int p[]={700,380,180,80};
p1.set_ps(p);//更改座位价格
p1.booking(0,9);//购买9张包厢票
p1.booking(1,15);//购买15张一等票
p1.booking(3,20);//购买20张三等票
p1.print();
p1.booking(0,13);//购买13张包厢票
p1.booking(2,14);//购买14张二等票
p1.refund(3,6);//退6张三等票
//p1.print();
/*
cout<<p1.getName()<<"的总收入:"<<p1.getIncome()<<endl;
cout<<p1.getName()<<"的票房如下:"<<endl;
cout<<"包厢售出"<<p1.getPF(0)<<endl;
cout<<"一等座售出"<<p1.getPF(1)<<endl;
cout<<"二等座售出"<<p1.getPF(2)<<endl;
cout<<"三等座售出"<<p1.getPF(3)<<endl;
作为提示,要改掉;
*/
return 0;
}
样例输出:
------------------戏曲名:未命名------------------
包厢<票价:0 /总数:20 /可售:20>
一等座<票价:0 /总数:100 /可售:100>
二等座<票价:0 /总数:240 /可售:240>
三等座<票价:0 /总数:300 /可售:300>
------------------总收入:0------------------
------------------戏曲名:二进宫------------------
包厢<票价:700 /总数:20 /可售:11>
一等座<票价:380 /总数:100 /可售:85>
二等座<票价:180 /总数:240 /可售:240>
三等座<票价:80 /总数:300 /可售:280>
------------------总收入:13600------------------
余票(11)不足,购买失败
------------------戏曲名:二进宫------------------
包厢<票价:700 /总数:20 /可售:11>
一等座<票价:380 /总数:100 /可售:85>
二等座<票价:180 /总数:240 /可售:226>
三等座<票价:80 /总数:300 /可售:286>
------------------总收入:15640------------------
二进宫的总收入:15640
二进宫的票房如下:
包厢售出9
一等座售出15
二等座售出14
三等座售出14
代码如下:
//->戏票类
#include<iostream>
#include<cstring>
using namespace std;
class opera{
char name[30];//歌剧名称
int ts[4]; // ts[0]:包厢的总数,ts[1]:一等座的总座位数
//ts[2]:二等座的总座位数,ts[3]:三等座的总座位数
int es[4];// es[0]:空包厢的数量,es[1]:一等座的空闲座位数
//es[2]:二等座的空闲座位数,es[3]:三等座的空闲座位数
int ps[4];// ps[0]:包厢的票价,ps[1]:一等座的票价
//ps[2]:二等座的票价,,ps[3]:三等座的票价
int income;//总收入
public:
opera(); //默认构造函数,数据成员的初始值请参看输出样例
void set_name(char *);//更改剧名
void set_ps(int []);//更改座位价格
void booking(int,int);//售票,如果余票小于订票数,
//终止该次售票,并输出购票失败提示信息
void refund(int,int);//退票,不收手续费
void print();
~opera(); //析构函数,完成票房统计,内容与格式请参看输出样例
char * getName();
int getPF(int);
int getIncome();
};
opera::opera()
{
char _name[30]="未命名";
strcpy(name,_name);
for(int i=0;i<4;i++)
{
ps[i]=0;
}
ts[0]=es[0]=20;
ts[1]=es[1]=100;
ts[2]=es[2]=240;
ts[3]=es[3]=300;
income=0;
}
void opera::set_name(char *_name)
{
strcpy(name,_name);
}
void opera::set_ps(int *p)
{
for(int j=0;j<4;j++)
{
ps[j]=p[j];
}
}
void opera::booking(int a,int b)
{
if(es[a]<b)
{
cout<<"余票("<<es[a]<<")不足,购买失败"<<endl;
return ;
}
else
{
es[a]-=b;
income+=ps[a]*b;
}
}
void opera::refund(int a,int b)
{
income-=ps[a]*b;
es[a]+=b;
}
char * opera::getName()
{
return name;
}
int opera::getIncome()
{
return income;
}
int opera::getPF(int x)
{
return ts[x]-es[x];
}
opera::~opera()
{
char line[20]="------------------";
cout<<line<<"戏曲名:"<<name<<line<<endl;
char st[4][20]={ "包厢","一等座","二等座","三等座"};
for(int i=0;i<4;i++)
cout<<st[i]<<"<"<<"票价:"<<ps[i]<<" /总数:"<<ts[i]<<" /可售:"<<es[i]<<">"<<endl;
cout<<line<<"总收入:"<<income<<line<<endl;
cout<<getName()<<"的总收入:"<<getIncome()<<endl;
cout<<getName()<<"的票房如下:"<<endl;
cout<<"包厢售出"<<getPF(0)<<endl;
cout<<"一等座售出"<<getPF(1)<<endl;
cout<<"二等座售出"<<getPF(2)<<endl;
cout<<"三等座售出"<<getPF(3)<<endl;
}
void opera::print(){
char line[20]="------------------";
cout<<line<<"戏曲名:"<<name<<line<<endl;
char st[4][20]={ "包厢","一等座","二等座","三等座"};
for(int i=0;i<4;i++)
cout<<st[i]<<"<"<<"票价:"<<ps[i]<<" /总数:"<<ts[i]<<" /可售:"<<es[i]<<">"<<endl;
cout<<line<<"总收入:"<<income<<line<<endl;
}
//->测试代码,测试结果应和输出样例完全相同
int main(){
opera p1;
p1.print();
p1.set_name("二进宫");//更改剧名
int p[]={700,380,180,80};
p1.set_ps(p);//更改座位价格
p1.booking(0,9);//购买9张包厢票
p1.booking(1,15);//购买15张一等票
p1.booking(3,20);//购买20张三等票
p1.print();
p1.booking(0,13);//购买13张包厢票
p1.booking(2,14);//购买14张二等票
p1.refund(3,6);//退6张三等票
//p1.print();
return 0;
}