前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >会员积分(期末模拟)

会员积分(期末模拟)

作者头像
叶茂林
发布2023-07-30 10:31:13
1910
发布2023-07-30 10:31:13
举报
文章被收录于专栏:叶子的开发者社区

题目描述

某电商网站的会员分为:普通、贵宾两个级别

普通会员类Member,包含编号、姓名、积分三个属性,编号和积分是整数,姓名是字符串

操作包括构造、打印、积分累加、积分兑换,操作定义如下:

1、积分累加Add,是根据消费金额累加积分,无返回值,参数是消费金额(整数),积分根据消费金额按1比1的比例累加

2、积分兑换Exchange,是按照每100积分换1元的比例,把积分兑换成现金。参数是要兑换的积分数量,返回值是兑换的现金数量。

注意:兑换积分数量不足100的部分是不能兑换的,例如会员原有500积分,要兑换积分数量为450,则450/100=4,最终用400积分兑换4元,会员余100积分。

3、打印是输出会员信息,格式参考输出样例

贵宾会员类VIP,继承了普通会员的属性与操作,新增两个属性:累加比例(整数)、兑换比例(整数)。并且重定义了所有操作:

1、积分累加中,积分按累加比例进行累加。例如累加比例是2,消费金额100元,则累加积分=100*2=200

2、积分兑换中,按照兑换比例的数值把积分抵扣消费金额。例如兑换比例是90,会员原有500积分,要兑换积分数量为420,则420/90=4,最终用360积分兑换4元,会员余140积分。

3、打印是输出会员信息,格式参考输出样例

程序要求

1、采用继承机制实现上述会员关系

2、打印、积分累加和积分兑换都采用虚函数方式,来实现运行多态性

3、派生的构造函数必须考虑基类属性的构造。

4、必须采用以下代码框架,在提示的地方增加代码,其他地方不能修改。

上述所有类属性都不是public,用面向对象思想和C++语言实现上述要求

----参考代码----

class Member {   //普通会员类

//....代码自行编写

};

class VIP .... {  //贵宾会员类

//....代码自行编写

};

int main()

{

Member * pm; //创建一个基类对象指针

//....其他变量自行编写

//输入数据,创建普通会员对象mm

//使用指针pm执行以下操作:

//1、pm指向普通会员对象mm

//2、输入数据,通过pm执行积分累加和积分兑换

//3、通过pm调用打印方法输出

//输入数据,创建贵宾会员对象vv

//使用指针pm执行以下操作:

//1、pm指向贵宾会员对象vv

//2、输入数据,通过pm执行积分累加和积分兑换

//3、通过pm调用打印方法输出

return 0;

}

输入

第一行输入普通会员的三个信息:编号、姓名、积分

第二行输入两个操作信息:消费金额、积分兑换数量,表示普通会员执行一次积分累加,一次积分兑换

第三行输入贵宾会员的五个信息:编号、姓名、积分、累加比例、兑换比例

第四行输入两个操作信息:消费金额、积分兑换数量,表示贵宾会员执行一次积分累加,一次积分兑换

输出

第一行输出普通会员执行两个操作后的信息,要求调用打印方法

第二行输出贵宾会员执行两个操作后的信息,要求调用打印方法

输入样例1 

1001 John 500 244 300  8001 Jane 300 2 90 100 420

输出样例1

普通会员1001--John--444 贵宾会员8001--Jane--140

AC代码

代码语言:javascript
复制
#include<iostream>
#include<string>
using namespace std;
class Member
{
protected:
	int number, score;
	string name;
public:
	Member(int number,string name,int score):number(number),name(name),score(score){}
	virtual void Add(int money)
	{
		score += money;
	}
	virtual int Exchange(int score)
	{
		this->score -= score / 100 * 100;
		return score / 100;
	}
	virtual void display()
	{
		cout << "普通会员" << number << "--" << name << "--" << score << endl;
	}
};
class VIP :public Member
{
protected:
	int acumulate, exchange;
public:
	VIP(int acumu,int exchange,int number,string name,int score):acumulate(acumu),exchange(exchange),Member(number,name,score){}
	virtual void Add(int money)
	{
		score +=acumulate* money;
	}
	virtual int Exchange(int score)
	{
		this->score -= score / exchange * exchange;
		return score / exchange;
	}
	virtual void display()
	{
		cout << "贵宾会员" << number << "--" << name << "--" << score << endl;
	}
};
int main()
{
	Member* pm; 

	int number, score, acumulate, exchange,money;
	string name;
	cin >> number >> name >> score;
	Member mm(number, name, score);
	pm = &mm;
	cin >> money >> score;
	pm->Add(money);
	pm->Exchange(score);
	pm->display();
	cin >> number >> name >> score >> acumulate >> exchange;
	VIP vv(acumulate, exchange,number, name, score );
	pm = &vv;
	cin >> money>> score ;
	pm->Add(money);
	pm->Exchange(score);
	pm->display();
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档