namespace SimpleBankSystem
public abstract class BankAccount
public string AccountHolder { get; set; }
public decimal Balance { get; protected set; }
public BankAccount(string accountHolder, decimal initialBalance)
AccountHolder = accountHolder;
Balance = initialBalance;
public abstract void DisplayInfo();
public interface ITransaction
void Deposit(decimal amount);
bool Withdraw(decimal amount);
public class CheckingAccount : BankAccount, ITransaction
public CheckingAccount(string accountHolder, decimal initialBalance)
: base(accountHolder, initialBalance) { }
public override void DisplayInfo()
Console.WriteLine($"[حساب جاری] صاحب حساب: {AccountHolder}, موجودی: {Balance} تومان");
public void Deposit(decimal amount)
Console.WriteLine($"واریز {amount} تومان به حساب جاری انجام شد.");
public bool Withdraw(decimal amount)
Console.WriteLine($"برداشت {amount} تومان از حساب جاری انجام شد.");
Console.WriteLine("موجودی کافی برای برداشت وجود ندارد.");
public class SavingsAccount : BankAccount, ITransaction
public SavingsAccount(string accountHolder, decimal initialBalance)
: base(accountHolder, initialBalance) { }
public override void DisplayInfo()
Console.WriteLine($"[حساب پس•انداز] صاحب حساب: {AccountHolder}, موجودی: {Balance} تومان");
public void Deposit(decimal amount)
Console.WriteLine($"واریز {amount} تومان به حساب پس•انداز انجام شد.");
public bool Withdraw(decimal amount)
Console.WriteLine($"برداشت {amount} تومان از حساب پس•انداز انجام شد.");
Console.WriteLine("موجودی کافی برای برداشت وجود ندارد.");
static void Main(string[] args)
CheckingAccount checking = new CheckingAccount("سعیده", 500000);
SavingsAccount savings = new SavingsAccount("علی", 1000000);
checking.Deposit(200000);
checking.Withdraw(100000);
savings.Withdraw(2000000);
Console.WriteLine("\nاطلاعات حساب•ها پس از تراکنش•ها:");