用C语言利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购票金额=原价*95%)。 具体实现步骤: 第一步:建立公交卡(boardingcard)的结构 第二步:创建并实现公交卡类构造函数、公交卡充值函数、公交卡余额查询函数、公交卡刷卡消费函数,创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作。 第三步:建立普通卡类(Acard)、学生卡类(Bcard)、老年卡类(Ccard)的结构,他们的基类均为boardingcard,分别在这三个派生类中实现基类中定义的两个虚函数。
时间: 2023-02-16 19:45:03 浏览: 122
我可以帮你解释一下程序的思路:
首先,你可以定义一个公交卡(boardingcard)的结构体。这个结构体应该包括公交卡的种类(普通卡、学生卡、老年卡)、余额、折扣率等属性。
然后,你可以创建公交卡类,在这个类中实现一些函数,比如构造函数、充值函数、余额查询函数和刷卡消费函数。同时,你还应该在这个类中定义两个纯虚函数,用于显示刷卡种类和设置折扣率。
接着,你可以建立三个结构体:普通卡类(Acard)、学生卡类(Bcard)、老年卡类(Ccard)。这三个结构体都应该从公交卡类派生而来,并且在这三个派生类中分别实现基类中定义的两个虚函数。
最后,你可以在 main 函数中读入用户的输入,然后根据输入的不同种类,创建相应的公交卡对象,并调用它的购票函数。
希望我的回答对你有所帮助!
相关问题
写一个C++代码 利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价50%、“学生卡”购票金额=原价60%、
以下是一个简单的C++代码,利用抽象类实现公交车卡售票管理:
```c++
#include <iostream>
using namespace std;
// 抽象类:卡类
class Card {
public:
// 纯虚函数:获取购票金额
virtual float getTicketPrice(float originalPrice) = 0;
};
// 老年卡类
class ElderCard : public Card {
public:
// 实现纯虚函数:获取购票金额
float getTicketPrice(float originalPrice) {
return originalPrice * 0.5;
}
};
// 学生卡类
class StudentCard : public Card {
public:
// 实现纯虚函数:获取购票金额
float getTicketPrice(float originalPrice) {
return originalPrice * 0.6;
}
};
// 普通卡类
class NormalCard : public Card {
public:
// 实现纯虚函数:获取购票金额
float getTicketPrice(float originalPrice) {
return originalPrice;
}
};
int main() {
// 根据输入创建不同的卡类
string cardType;
cout << "请输入卡的类型(老年卡/学生卡/普通卡):" << endl;
cin >> cardType;
Card* card;
if (cardType == "老年卡") {
card = new ElderCard();
} else if (cardType == "学生卡") {
card = new StudentCard();
} else {
card = new NormalCard();
}
// 获取购票金额并输出
float originalPrice = 20; // 假设原价为20元
float ticketPrice = card->getTicketPrice(originalPrice);
cout << "购票金额:" << ticketPrice << "元" << endl;
// 释放动态分配的内存
delete card;
return 0;
}
```
该代码实现了一个简单的公交车卡售票管理程序,用户输入卡的类型后,根据输入创建不同的卡类,并获取购票金额并输出。其中,抽象类`Card`定义了纯虚函数`getTicketPrice`,该函数用于获取购票金额,不同的卡类继承并实现该函数以实现不同的购票金额计算方式。用户输入的卡类型会决定创建哪个卡类对象,并调用该对象的`getTicketPrice`函数获取购票金额。最后,动态分配的卡类对象需要手动释放。
写一个C++代码利用抽象类编写一个程序实现公交车卡售票管理。“老年卡”购票金额=原价50%、“学生卡”购票金额=原价60%、“普通卡”购票金额=原价*95%)。
好的,以下是实现公交车卡售票管理的C++代码:
```cpp
#include <iostream>
using namespace std;
// 抽象类
class BusCard {
public:
virtual void buyTicket(double price) = 0;
};
// 老年卡
class ElderCard : public BusCard {
public:
void buyTicket(double price) {
cout << "老年卡购票金额为:" << price * 0.5 << endl;
}
};
// 学生卡
class StudentCard : public BusCard {
public:
void buyTicket(double price) {
cout << "学生卡购票金额为:" << price * 0.6 << endl;
}
};
// 普通卡
class NormalCard : public BusCard {
public:
void buyTicket(double price) {
cout << "普通卡购票金额为:" << price * 0.95 << endl;
}
};
int main() {
BusCard *card1 = new ElderCard();
BusCard *card2 = new StudentCard();
BusCard *card3 = new NormalCard();
double price = 10.0;
card1->buyTicket(price);
card2->buyTicket(price);
card3->buyTicket(price);
delete card1;
delete card2;
delete card3;
return 0;
}
```
程序中定义了一个抽象类 `BusCard`,它包含了一个纯虚函数 `buyTicket`,表示购票。然后定义了三个具体的类 `ElderCard`、`StudentCard`、`NormalCard`,它们都继承自 `BusCard`,并实现了 `buyTicket` 函数,分别表示老年卡、学生卡、普通卡的购票方式。在 `main` 函数中,分别创建了三个不同类型的卡并调用它们的 `buyTicket` 函数,最后释放内存。运行程序,输出如下:
```
老年卡购票金额为:5
学生卡购票金额为:6
普通卡购票金额为:9.5
```