请完整戏票类的实现代码。并使用测试代码测试该类,测试代码的运行结果应和输出样例完全相同 注意, 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;}

华科CPP慕课SPOC第七章 编程题3相关推荐

  1. C++ Primer Plus 第七章编程题练习

    C++ Primer Plus 第七章编程题练习 第一题 题目描述 编写一个程序,不断要求用户输入两个数,直到其中的一个为0.对于每两个数,程序将使用一个 函数来计算它们的调和平均数,并将结果返回给m ...

  2. python期末编程题_Python 语言程序设计二级教程第七章编程题

    编程题1 f=open('file1.txt','w') f.write('My name is Lin') f.write('I am from China') f.close() k=open(' ...

  3. c++primer plus 第13章 编程题第2题

    c++primer plus 第13章 编程题第2题 #pragma once #ifndef CD_H_ #define CD_H_ //base classclass Cd { private:c ...

  4. C++ Primer Plus 第九章编程题练习

    C++ Primer Plus 第九章编程题练习 第一题 题目描述 下面是一个头文件: const int Len = 40;struct golf {char fullname[Len];int h ...

  5. c++primer plus 第11章 编程题第7题

    c++primer plus 第11章 编程题第7题 #pragma once #ifndef COMPLEX0_H_ #define COMPLEX0_H_ #include<iostream ...

  6. python123第七周测验编程题答案_Python第七周编程题

    Python123第七周编程题 1.打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫ ...

  7. 速学堂(java)第十一章编程题答案(自写)

    速学堂(java)第十一章编程题答案(自写) 1.设计一个多线程的程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 ...

  8. 速学堂(java)第六章编程题自写答案

    速学堂(java)第六章编程题自写答案 1. 编写程序接收用户输入分数信息,如果分数在0-100之间,输出成绩.如果成绩不在该范围内,抛出异常信息,提示分数必须在0-100之间. 要求:使用自定义异常 ...

  9. 实验七 字符串 编程题 1. 飞来飞去

    实验七 字符串 编程题 1. 飞来飞去 [问题描述] 松雅作为一位商业人士,经常需要在天津和深圳之间飞来飞去,因为在这两个城市,她有多间旅馆.当然在冬天她更愿意从天津飞到深圳,因为深圳更暖和.她实在是 ...

最新文章

  1. DADA2中文教程v1.8
  2. web-QQ(腾讯)-Email-TMessage(腾讯微博记事本)
  3. Nginx源码分析:核心模块剖析及常见问题
  4. 漫说单例模式--宝宝成长记 你真的了解了吗?
  5. makefile进阶(四)-- 条件判断 (转)
  6. 好用的数据分析工具能顶半个BI团队?大佬力荐这款工具值得体验
  7. 谈谈java并发锁(重入锁、读写锁、公平锁)
  8. .NET Core 集成JWT认证
  9. masscan安装、研究、测试之旅、扫描结果处理
  10. dmidecode 硬件查看
  11. SSH学习(一)—— 基础概念篇
  12. linux gnu编译器下载,GNU Compiler Collection(gcc编译器)下载_GNU Compiler Collection(gcc编译器)官方下载-太平洋下载中心...
  13. CUDA文件缺失解决方法——以cudart64_110.dll not found为例
  14. 一次性奖励300万?成都市武侯区促进文化产业发展系列政策影视产业专项政策出来了
  15. word绿豆沙颜色设置_Win7系统下将txt和word背景颜色设置为豆沙绿的方法
  16. 计算机常见软件故障及处理,计算机常见软件故障处理
  17. word 页码怎么设置从任意指定页开始
  18. 转载黑苹果10.13N卡驱动方法
  19. HTML设计网站首页
  20. 苹果 iOS/iPadOS 14.4 beta 2新功能

热门文章

  1. 智慧物联网下的工控安全解决方案
  2. 洛谷刷题C语言:距离函数、闰年展示、计算阶乘、猴子吃桃、培训
  3. 文本生成任务常见评估指标
  4. General error: 8 attempt to write a readonly database
  5. MT5中position、order、deal 区别
  6. UltraEdit常见问题及解决教程
  7. 屡次让拳头翻车的ping:作者因车祸英年早逝,千行源码改变世界
  8. 如果你身边有程序员 今天对他好一点
  9. 生产计划自动排程目标是什么?
  10. F5负载均衡综合实例详解