编写一个程序,实现公交车卡类售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购票金额=原价*95%)。
时间: 2024-06-14 20:05:27 浏览: 7
以下是一个实现公交车卡类售票管理的程序:
```python
class Card:
def __init__(self, card_type):
self.card_type = card_type
def calculate_price(self, original_price):
if self.card_type == "老年卡":
return original_price * 0.5
elif self.card_type == "学生卡":
return original_price * 0.6
elif self.card_type == "普通卡":
return original_price * 0.95
card_type = input("请输入卡类型:")
original_price = float(input("请输入原价:"))
card = Card(card_type)
price = card.calculate_price(original_price)
print(f"{card_type}购票金额为:{price}")
```
相关问题
写一个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`函数获取购票金额。最后,动态分配的卡类对象需要手动释放。
利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购...
好的,我可以为您提供一个使用抽象类实现公交车卡售票管理的示例程序。以下是示例代码:
```python
from abc import ABC, abstractmethod
class BusCard(ABC):
def __init__(self, card_number, cardholder_name, balance):
self.card_number = card_number
self.cardholder_name = cardholder_name
self.balance = balance
self.status = "正常"
@abstractmethod
def get_discount(self):
pass
def add_money(self, amount):
self.balance += amount
def consume(self, amount):
if self.balance < amount:
print("余额不足,请充值或更换卡片!")
else:
self.balance -= amount
def check_balance(self):
print("卡号:{}\n持卡人:{}\n余额:{}".format(
self.card_number, self.cardholder_name, self.balance))
def loss_report(self):
self.status = "已挂失"
def loss_cancel(self):
self.status = "正常"
def cancel(self):
self.status = "已注销"
class ElderCard(BusCard):
def get_discount(self):
return 0.5
class StudentCard(BusCard):
def get_discount(self):
return 0.6
class NormalCard(BusCard):
def get_discount(self):
return 1.0
class TicketSystem:
def __init__(self):
self.cards = {}
def sell_card(self, card_type, card_number, cardholder_name, balance):
if card_type == "老年卡":
card = ElderCard(card_number, cardholder_name, balance)
elif card_type == "学生卡":
card = StudentCard(card_number, cardholder_name, balance)
else:
card = NormalCard(card_number, cardholder_name, balance)
self.cards[card_number] = card
print("恭喜您,{}购卡成功!".format(card_type))
def return_card(self, card_number):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
self.cards.pop(card_number)
print("退卡成功!")
def add_money(self, card_number, amount):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
card.add_money(amount)
print("充值成功!")
def consume(self, card_number, amount):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
discount = card.get_discount()
real_amount = amount * discount
card.consume(real_amount)
print("购票成功!实际金额为:{}元".format(real_amount))
def check_balance(self, card_number):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
card.check_balance()
def loss_report(self, card_number):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
card.loss_report()
print("挂失成功!")
def loss_cancel(self, card_number):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
card.loss_cancel()
print("解挂成功!")
def cancel(self, card_number):
if card_number not in self.cards:
print("卡号不存在,请重新输入!")
else:
card = self.cards[card_number]
card.cancel()
self.cards.pop(card_number)
print("注销成功!")
if __name__ == "__main__":
ticket_system = TicketSystem()
while True:
print("欢迎使用公交车卡售票管理系统!")
print("请选择您要进行的操作:")
print("1.购卡 2.退卡 3.充值 4.购票 5.余额查询 6.挂失 7.解挂 8.注销 9.退出")
choice = input()
if choice == "1":
print("请选择卡类型:1.老年卡 2.学生卡 3.普通卡")
card_type = input()
print("请输入卡号:")
card_number = input()
print("请输入持卡人姓名:")
cardholder_name = input()
print("请输入充值金额:")
balance = float(input())
ticket_system.sell_card(card_type, card_number, cardholder_name, balance)
elif choice == "2":
print("请输入卡号:")
card_number = input()
ticket_system.return_card(card_number)
elif choice == "3":
print("请输入卡号:")
card_number = input()
print("请输入充值金额:")
amount = float(input())
ticket_system.add_money(card_number, amount)
elif choice == "4":
print("请输入卡号:")
card_number = input()
print("请输入购票金额:")
amount = float(input())
ticket_system.consume(card_number, amount)
elif choice == "5":
print("请输入卡号:")
card_number = input()
ticket_system.check_balance(card_number)
elif choice == "6":
print("请输入卡号:")
card_number = input()
ticket_system.loss_report(card_number)
elif choice == "7":
print("请输入卡号:")
card_number = input()
ticket_system.loss_cancel(card_number)
elif choice == "8":
print("请输入卡号:")
card_number = input()
ticket_system.cancel(card_number)
elif choice == "9":
print("欢迎再次使用!")
break
else:
print("输入有误,请重新输入!")
```
以上程序使用了抽象类`BusCard`作为基类,定义了三个派生类`ElderCard`、`StudentCard`和`NormalCard`,分别表示老年卡、学生卡和普通卡。这三个派生类分别实现了基类的抽象方法`get_discount()`,返回不同的折扣比例,用于计算购票金额。
售票系统`TicketSystem`类中的各个方法实现了不同的操作,如购卡、退卡、充值、购票、余额查询、挂失、解挂和注销。在购票操作中,根据不同的卡片类型,计算出实际购票金额。在使用时,用户输入相应的操作编号以及需要的参数,程序会根据输入调用对应的方法进行操作。
希望这个示例程序可以帮助您完成公交车卡售票管理的编写。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)