酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

c#接口igetmoney作为参数传递,有两张电话卡,一张为 a 卡,一张为 b 卡, a 卡前三分钟0.2元,之后一分钟0.1元, b 卡一分钟0.1元,提示用户输入卡的类型和通话时间,求出通话费用以及账户余额(两个卡初始花费为100元)

可以通过以下方式实现: ```csharp using System; interface IGetMoney { double CallFee(int minutes); } class ACard : IGetMoney { private const double initialFee = 100; private const double feePerMinute = 0.1; private const int freeMinutes = 3; private double balance; public ACard() { balance = initialFee; } public double CallFee(int minutes) { double fee = 0; if (minutes <= freeMinutes) { fee = 0; } else { fee = (minutes - freeMinutes) * feePerMinute; } balance -= fee; return fee; } public double GetBalance() { return balance; } } class BCard : IGetMoney { private const double initialFee = 100; private const double feePerMinute = 0.1; private double balance; public BCard() { balance = initialFee; } public double CallFee(int minutes) { double fee = minutes * feePerMinute; balance -= fee; return fee; } public double GetBalance() { return balance; } } class Program { static void Main(string[] args) { IGetMoney card; Console.WriteLine("请选择卡的类型:"); Console.WriteLine("1. A卡"); Console.WriteLine("2. B卡"); int cardType = int.Parse(Console.ReadLine()); if (cardType == 1) { card = new ACard(); } else if (cardType == 2) { card = new BCard(); } else { Console.WriteLine("请输入有效的选项!"); return; } Console.WriteLine("请输入通话时间(分钟):"); int minutes = int.Parse(Console.ReadLine()); double fee = card.CallFee(minutes); double balance = card.GetBalance(); Console.WriteLine("通话费用:{0}元", fee); Console.WriteLine("账户余额:{0}元", balance); } } ``` 这段代码中,首先定义了一个 `IGetMoney` 接口,包含了一个 `CallFee` 方法用于计算通话费用。然后,实现了两个类 `ACard` 和 `BCard`,分别代表 A 卡和 B 卡,它们都实现了 `IGetMoney` 接口。在这两个类中,分别定义了初始费用、每分钟费用和余额的变量。在 `ACard` 的 `CallFee` 方法中,根据通话分钟数和免费分钟数进行计算,并更新余额。在 `BCard` 的 `CallFee` 方法中,直接计算每分钟费用并更新余额。 在 `Main` 方法中,首先根据用户输入选择卡的类型,然后输入通话时间。根据选择的卡类型,创建相应的卡对象,并调用 `CallFee` 方法计算通话费用和更新余额。输出通话费用和账户余额。 [2024-05-27 16:09:55 | AI写代码神器 | 1712点数解答]

相关提问