编写一个程序,实现公交车卡类售票管理。当输入为“老年卡、“学生卡”和“普通卡”时显示不 同的卡类及购票金额(“老年卡”购票金额=原价50%、学生卡购票金额=原价"60%、“普通卡” 购票金额=原价“95%)。 提示: 第1步:建立公交卡类(boardingCard)的结构。。 第2步:创建并实现公交卡类构造面数、公交卡充值数、公交卡余额查询面数、公交卡 刷卡消费函数、创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作。 第3步:由公交卡类派生普通卡类、学生卡类、老年卡类,并对虚函数进行重新定义。。 第4步定义主函数进行测试。
时间: 2023-12-31 09:23:40 浏览: 124
好的,这是一个Python实现:
```python
from abc import ABC, abstractmethod
class BoardingCard(ABC):
def __init__(self, balance=0):
self.balance = balance
def recharge(self, amount):
self.balance += amount
print(f"充值成功,当前余额为 {self.balance} 元。")
def check_balance(self):
print(f"当前余额为 {self.balance} 元。")
@abstractmethod
def swipe_card(self, ticket_price):
pass
@abstractmethod
def show_card_type(self):
pass
class OrdinaryCard(BoardingCard):
def swipe_card(self, ticket_price):
total_price = ticket_price * 0.95
if self.balance >= total_price:
self.balance -= total_price
print(f"刷卡成功,实际扣款 {total_price} 元,当前余额为 {self.balance} 元。")
else:
print("余额不足,请充值。")
def show_card_type(self):
print("您当前使用的是普通卡,享受95%的折扣。")
class StudentCard(BoardingCard):
def swipe_card(self, ticket_price):
total_price = ticket_price * 0.6
if self.balance >= total_price:
self.balance -= total_price
print(f"刷卡成功,实际扣款 {total_price} 元,当前余额为 {self.balance} 元。")
else:
print("余额不足,请充值。")
def show_card_type(self):
print("您当前使用的是学生卡,享受60%的折扣。")
class ElderlyCard(BoardingCard):
def swipe_card(self, ticket_price):
total_price = ticket_price * 0.5
if self.balance >= total_price:
self.balance -= total_price
print(f"刷卡成功,实际扣款 {total_price} 元,当前余额为 {self.balance} 元。")
else:
print("余额不足,请充值。")
def show_card_type(self):
print("您当前使用的是老年卡,享受50%的折扣。")
def main():
card_type = input("请输入公交车卡类型(老年卡/学生卡/普通卡):")
ticket_price = float(input("请输入车票原价:"))
balance = float(input("请输入卡余额:"))
if card_type == "老年卡":
card = ElderlyCard(balance)
elif card_type == "学生卡":
card = StudentCard(balance)
elif card_type == "普通卡":
card = OrdinaryCard(balance)
else:
print("卡类型输入错误,请重新输入!")
return
card.show_card_type()
card.swipe_card(ticket_price)
if __name__ == '__main__':
main()
```
这个程序定义了一个抽象类 `BoardingCard`,包括了充值、余额查询、刷卡消费等公交卡的基本操作,并定义了一个纯虚函数 `swipe_card` 和 `show_card_type`,用于在不同的卡类中重写实现不同的刷卡折扣和卡类型显示。
然后定义了三个派生类 `OrdinaryCard`、`StudentCard` 和 `ElderlyCard`,分别重写了 `swipe_card` 和 `show_card_type` 方法,实现了不同的刷卡折扣和卡类型显示。
最后在主函数中,根据用户输入的公交车卡类型创建不同的卡类对象,并调用相应的刷卡消费方法和卡类型显示方法。
阅读全文
相关推荐
















