首先,我们可以定义一个接口`IGetMoney`,该接口包含一个方法`CalculateCost`用于计算通话费用: ```csharp public interface IGetMoney { double CalculateCost(int minutes); } ``` 然后,我们可以定义两个实现了`IGetMoney`接口的类`CardA`和`CardB`,分别代表a卡和b卡: ```csharp public class CardA : IGetMoney { private double initialAmount = 100.0; // 初始花费为100元 public double CalculateCost(int minutes) { double cost = 0; if (minutes <= 3) { cost = minutes * 0.2; } else { cost = 3 * 0.2 + (minutes - 3) * 0.1; } initialAmount -= cost; // 扣除通话费用 return cost; } } public class CardB : IGetMoney { private double initialAmount = 100.0; // 初始花费为100元 public double CalculateCost(int minutes) { double cost = minutes * 0.1; initialAmount -= cost; // 扣除通话费用 return cost; } } ``` 接下来,我们可以在主程序中提示用户输入卡类型和通话时间,并计算通话费用和账户余额: ```csharp class Program { static void Main(string[] args) { IGetMoney card; string cardType; int minutes; // 提示用户输入卡类型和通话时间 Console.WriteLine("请输入使用的电话卡类型(A或B):"); cardType = Console.ReadLine(); Console.WriteLine("请输入通话时间(分钟):"); minutes = int.Parse(Console.ReadLine()); // 根据卡类型创建相应的类实例 if (cardType.ToUpper() == "A") { card = new CardA(); } else if (cardType.ToUpper() == "B") { card = new CardB(); } else { Console.WriteLine("无效的卡类型!"); return; } // 调用计算方法计算通话费用 double cost = card.CalculateCost(minutes); // 输出通话费用和账户余额 Console.WriteLine("通话费用为:" + cost + "元"); Console.WriteLine("账户余额为:" + card.GetRemainingAmount() + "元"); } } ``` 这样,用户输入卡类型和通话时间后,程序会根据卡类型计算通话费用,然后输出费用和账户余额。 [2024-05-27 14:56:36 | AI写代码神器 | 1451点数解答]