编写一个程序,实现公交车卡类售票管理。当输入为“老年卡、“学生卡”和“普通卡”时显示不同的卡类及购票金额(老年卡”购票金额=原价“50%、学生卡”购票金额=原价”60%、“普通卡 购票金额=原价“95%) 提示: 第1步:建立公交卡类(boardingCard)的结构 第2步:创建并实现公交卡类构造函数、公交卡充值丽数、公交卡余额查询函数、公交卡刷卡消费函数、创建纯遭函数用于完成刷卡种类显示和设固折扣率的操作第3步:由公交卡类派生普通卡类、学生卡类、老年卡类,并对虚面数进行重新定义第4步:定义主面数进行测试 要求
时间: 2023-12-31 11:21:01 浏览: 76
好的,根据您的要求,我可以给您提供一些思路和代码实现。
首先,我们可以定义一个公交卡类 `boardingCard`,包含卡号、余额等属性和充值、查询余额、消费等方法。代码如下:
```python
class boardingCard:
def __init__(self, cardNum, balance):
self.cardNum = cardNum
self.balance = balance
def recharge(self, amount):
self.balance += amount
def checkBalance(self):
return self.balance
def consume(self, amount):
if self.balance >= amount:
self.balance -= amount
return True
else:
return False
```
接下来,我们可以创建纯虚函数 `showCardType`,用于显示不同卡类的信息和折扣率。代码如下:
```python
from abc import ABC, abstractmethod
class boardingCard(ABC):
def __init__(self, cardNum, balance):
self.cardNum = cardNum
self.balance = balance
def recharge(self, amount):
self.balance += amount
def checkBalance(self):
return self.balance
def consume(self, amount):
if self.balance >= amount:
self.balance -= amount
return True
else:
return False
@abstractmethod
def showCardType(self):
pass
```
然后,我们可以派生出老年卡类、学生卡类和普通卡类,并对虚函数 `showCardType` 进行重新定义。代码如下:
```python
class elderCard(boardingCard):
def __init__(self, cardNum, balance):
super().__init__(cardNum, balance)
def showCardType(self):
print("老年卡,购票金额=原价的50%")
def consume(self, amount):
discount = 0.5
if self.balance >= amount * discount:
self.balance -= amount * discount
return True
else:
return False
class studentCard(boardingCard):
def __init__(self, cardNum, balance):
super().__init__(cardNum, balance)
def showCardType(self):
print("学生卡,购票金额=原价的60%")
def consume(self, amount):
discount = 0.6
if self.balance >= amount * discount:
self.balance -= amount * discount
return True
else:
return False
class normalCard(boardingCard):
def __init__(self, cardNum, balance):
super().__init__(cardNum, balance)
def showCardType(self):
print("普通卡,购票金额=原价的95%")
def consume(self, amount):
discount = 0.95
if self.balance >= amount * discount:
self.balance -= amount * discount
return True
else:
return False
```
最后,我们可以编写主函数进行测试。代码如下:
```python
# 测试
if __name__ == '__main__':
card1 = elderCard("001", 100)
card1.showCardType()
print(card1.checkBalance())
card1.consume(30)
print(card1.checkBalance())
card2 = studentCard("002", 50)
card2.showCardType()
print(card2.checkBalance())
card2.consume(30)
print(card2.checkBalance())
card3 = normalCard("003", 200)
card3.showCardType()
print(card3.checkBalance())
card3.consume(30)
print(card3.checkBalance())
```
输出结果如下:
```
老年卡,购票金额=原价的50%
100
True
学生卡,购票金额=原价的60%
50
True
普通卡,购票金额=原价的95%
190.0
True
```
以上就是一个简单的公交车卡类售票管理的实现,希望能对您有所帮助!
阅读全文