华科CPP慕课SPOC第七章 编程题3

请完整戏票类的实现代码。并使用测试代码测试该类,测试代码的运行结果应和输出样例完全相同 注意, 1. booking函数的购票失败提示示例如下,编写代码时请复制其中的标点符号,以免由于中英文编码问题导致判分失效 余票(11)不足,购买失败 2. 输出的“:”都是中文“:”(25分)

题目内容:

//->戏票类

#include

#include

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——————

——————戏曲名:二进宫——————

包厢

一等座

二等座

三等座

——————总收入:13600——————

余票(11)不足,购买失败

——————戏曲名:二进宫——————

包厢

一等座

二等座

三等座

——————总收入:15640——————

二进宫的总收入:15640

二进宫的票房如下:

包厢售出9

一等座售出15

二等座售出14

三等座售出14

代码如下:

//->戏票类
#include
#include
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<测试代码,测试结果应和输出样例完全相同
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;

}

 

 

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/fdcc992780.html