完成实现某月份的电话收费系统。有一个电话基类,将它作为基类派生出固定电话类、移动电话类。
时间: 2023-06-18 13:08:18 浏览: 116
以下是基于C++的代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Telephone {
protected:
string number; // 电话号码
public:
Telephone(string num) : number(num) {}
virtual double calculateFee(int month) = 0; // 纯虚函数,计算月度费用
};
class Landline : public Telephone {
private:
double basicFee; // 基本月租费
public:
Landline(string num, double fee) : Telephone(num), basicFee(fee) {}
virtual double calculateFee(int month) {
// 固定电话无额外费用,直接返回基本月租费
return basicFee;
}
};
class Mobile : public Telephone {
private:
double callFee; // 单位通话费用
int minutes; // 本月通话分钟数
public:
Mobile(string num, double fee) : Telephone(num), callFee(fee), minutes(0) {}
void addCall(int min) { // 添加通话记录
minutes += min;
}
virtual double calculateFee(int month) {
// 移动电话计算月度费用 = 基本月租费 + 通话费用
double baseFee = 50.0; // 假设基本月租费为50元
double callCost = callFee * minutes; // 计算本月通话费用
return baseFee + callCost;
}
};
int main() {
// 创建电话对象
Telephone* landline = new Landline("021-12345678", 50);
Mobile* mobile = new Mobile("13912345678", 0.5);
// 模拟移动电话通话记录
mobile->addCall(10);
mobile->addCall(20);
mobile->addCall(30);
// 计算月度费用
cout << "固定电话月度费用:" << landline->calculateFee(9) << "元" << endl;
cout << "移动电话月度费用:" << mobile->calculateFee(9) << "元" << endl;
// 释放内存
delete landline;
delete mobile;
return 0;
}
```
在这个例子中,我们声明了一个抽象的 Telephone 基类,其中包含了电话号码,并定义了一个纯虚函数 calculateFee(),用于计算月度费用。然后我们从 Telephone 基类派生出 Landline 固定电话类和 Mobile 移动电话类。其中 Landline 类只需要在构造函数中设置基本月租费,而 Mobile 类则需要记录通话记录和通话费用。最后我们在 main() 函数中创建对象,模拟移动电话通话记录,计算月度费用,并释放内存。
阅读全文