根据以下要求,用c++完成相关设计:1. 课程设计要求: (1)根据实际情况,确定购书人分为3类:普通人、会员、贵宾。 ①“普通人”的购书费用按照原价收取; ②“会员”购书费的计算方法是:五星级会员按照原价的70%收取, 四星级会员按照原价的80%收取, 三星级会员按照原价的85%收取, 二星级会员按照原价的90%收取, 一星级会员按照原价的95%收取。 ③“贵宾”的购书费根据特别指定的折扣率计算机收取的费用,例如折扣率40%,则按照实际书费的60%收取。 (2)对象(类)的设计 ①根据(1)分析,需要设计一个基类buyer和它的3各派生类member(会员) 、layfolk(普通人) 、honoured_guest(贵宾)。基类中包括的数据成员是姓名、购书人编号、地址、购书金额。member类中除了继承了buyer的数据,还增加了会员级别:honoured_guest则增加了折扣率一项。 ②在基类中定义了构造函数和对所有类型的购书人相同的操作,getbuyname()负责取出购书者的姓名;getaddress()负责取出购书者的地址;getpay()负责取出购书者应付出的金额;getid()负责取出购书者的编号。由于对不同购书者的购书额的计算方法不同,所以不能在基类中确定计算方法;又由于各类购书者的数据内容不同,显示的方法也不一样.因此在基类中将setpay和display定义为虚函数。
时间: 2024-04-04 21:31:44 浏览: 63
以下是C++代码实现:
```cpp
#include<iostream>
#include<string>
using namespace std;
// 基类
class Buyer{
protected:
string name; // 姓名
string id; // 购书人编号
string address; // 地址
float pay; // 购书金额
public:
Buyer(string n,string i,string a,float p){
name = n;
id = i;
address = a;
pay = p;
}
virtual void setPay(){} // 定义虚函数
virtual void display(){} // 定义虚函数
string getName(){
return name;
}
string getAddress(){
return address;
}
float getPay(){
return pay;
}
string getId(){
return id;
}
};
// 派生类1:会员
class Member:public Buyer{
private:
int level; // 会员级别
public:
Member(string n,string i,string a,float p,int l):Buyer(n,i,a,p){
level = l;
}
void setPay(){ // 重写虚函数
switch(level){
case 1: pay = pay * 0.95; break;
case 2: pay = pay * 0.9; break;
case 3: pay = pay * 0.85; break;
case 4: pay = pay * 0.8; break;
case 5: pay = pay * 0.7; break;
}
}
void display(){ // 重写虚函数
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<id<<endl;
cout<<"地址:"<<address<<endl;
cout<<"应付金额:"<<pay<<endl;
cout<<"会员级别:"<<level<<endl;
}
};
// 派生类2:普通人
class Layfolk:public Buyer{
public:
Layfolk(string n,string i,string a,float p):Buyer(n,i,a,p){}
void setPay(){ // 重写虚函数
pay = pay;
}
void display(){ // 重写虚函数
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<id<<endl;
cout<<"地址:"<<address<<endl;
cout<<"应付金额:"<<pay<<endl;
}
};
// 派生类3:贵宾
class HonouredGuest:public Buyer{
private:
float discount; // 折扣率
public:
HonouredGuest(string n,string i,string a,float p,float d):Buyer(n,i,a,p){
discount = d;
}
void setPay(){ // 重写虚函数
pay = pay * (1 - discount);
}
void display(){ // 重写虚函数
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<id<<endl;
cout<<"地址:"<<address<<endl;
cout<<"应付金额:"<<pay<<endl;
cout<<"折扣率:"<<discount<<endl;
}
};
int main(){
// 创建对象
Member member("张三","001","北京市海淀区",1000,3);
Layfolk layfolk("李四","002","北京市朝阳区",1000);
HonouredGuest honouredGuest("王五","003","北京市东城区",1000,0.4);
// 调用函数
member.setPay();
layfolk.setPay();
honouredGuest.setPay();
member.display();
layfolk.display();
honouredGuest.display();
return 0;
}
```
注意:本代码仅供参考,具体实现方式可能因实际情况而异。
阅读全文