using System.Collections.Generic;
namespace BankAccountNameSpace
public static void Main()
IAccount saving = new Savings(188, "Mr. Walton");
IAccount chequing = new Chequing(288);
IAccount rrsp = new Rrsp(288);
decimal SpreBalance = 188;
decimal CpreBalance = 288;
decimal RpreBalance = 188;
Console.WriteLine("Account of {0}", saving.Name);
Console.WriteLine("-------------------");
Console.WriteLine("Current saving balance is ${0}", saving.Balance);
Console.WriteLine("Current chequing balance is ${0}", chequing.Balance);
Console.WriteLine("Current rrsp balance is ${0}", rrsp.Balance);
Console.WriteLine("Select one of the following");
Console.WriteLine("1. Withdraw from savings account");
Console.WriteLine("2. Deposit to savings account");
Console.WriteLine("3. Withdraw from chequing account");
Console.WriteLine("4. Deposit to chequing account");
Console.WriteLine("5. Withdraw from rrsp account");
Console.WriteLine("6. Deposit to rrsp account");
Console.WriteLine("7. Print transactions");
string pick = Console.ReadLine();
if (pick != "1" && pick != "2" && pick != "3" && pick != "4" && pick != "5" && pick != "6" && pick != "7")
Console.WriteLine("Invalid. Menu number is 1 - 7");
Console.WriteLine("Input amount to withdraw from savings");
Console.WriteLine("If you want to start over, please input '0'");
decimal Debit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction withdraw from savings. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for withdraw");
Console.WriteLine("-Mortgage");
Console.WriteLine("-Car payment");
Console.WriteLine("-Hydro");
Console.WriteLine("-Heating");
Console.WriteLine("-Property tax");
string notes = Console.ReadLine();
saving.Withdraw(Debit, notes);
Console.WriteLine("Current savings balance is ${0}", saving.Balance);
Console.WriteLine("Input amount to deposit to savings");
Console.WriteLine("If you want to start over, please input '0'");
decimal Credit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction deposit to savings. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for deposit");
Console.WriteLine("-Work pay");
Console.WriteLine("-Rental");
Console.WriteLine("-Personal business");
Console.WriteLine("-eTransfer");
Console.WriteLine("-Loan");
string notes = Console.ReadLine();
saving.Deposit(Credit, notes);
Console.WriteLine("Current savings balance is ${0}", saving.Balance);
Console.WriteLine("Input amount to withdraw from chequing");
Console.WriteLine("If you want to start over, please input '0'");
decimal Debit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction withdraw from chequings. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for withdraw");
Console.WriteLine("-Mortgage");
Console.WriteLine("-Car payment");
Console.WriteLine("-Hydro");
Console.WriteLine("-Heating");
Console.WriteLine("-Property tax");
string notes = Console.ReadLine();
chequing.Withdraw(Debit, notes);
Console.WriteLine("Current chequing balance is ${0}", chequing.Balance);
Console.WriteLine("Input amount to deposit to chequing");
Console.WriteLine("If you want to start over, please input '0'");
decimal Credit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction deposit to chequings. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for deposit");
Console.WriteLine("-Work pay");
Console.WriteLine("-Rental");
Console.WriteLine("-Personal business");
Console.WriteLine("-eTransfer");
Console.WriteLine("-Loan");
string notes = Console.ReadLine();
chequing.Deposit(Credit, notes);
Console.WriteLine("Current chequing balance is ${0}", chequing.Balance);
Console.WriteLine("Input amount to withdraw from rrsp");
Console.WriteLine("If you want to start over, please input '0'");
decimal Debit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction withdraw from rrsp. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for withdraw");
Console.WriteLine("-Mortgage");
Console.WriteLine("-Car payment");
Console.WriteLine("-Hydro");
Console.WriteLine("-Heating");
Console.WriteLine("-Property tax");
string notes = Console.ReadLine();
rrsp.Withdraw(Debit, notes);
Console.WriteLine("Current rrsp balance is ${0}", rrsp.Balance);
Console.WriteLine("Input amount to deposit to rrsp");
Console.WriteLine("If you want to start over, please input '0'");
decimal Credit = decimal.Parse(Console.ReadLine());
Console.WriteLine("Reason of transaction deposit to rrsp. If you want to start over, please input 's' for 'start over'");
Console.WriteLine("Input reason for deposit");
Console.WriteLine("-Work pay");
Console.WriteLine("-Rental");
Console.WriteLine("-Personal business");
Console.WriteLine("-eTransfer");
Console.WriteLine("-Loan");
string notes = Console.ReadLine();
rrsp.Deposit(Credit, notes);
Console.WriteLine("Current rrsp balance is ${0}", rrsp.Balance);
Console.WriteLine("-------------------");
Console.WriteLine("Initial savings balance is ${0}", SpreBalance);
Console.WriteLine("New savings balance is ${0}", saving.Balance);
Console.WriteLine("Initial chequings balance is ${0}", CpreBalance);
Console.WriteLine("New chequings balance is ${0}", chequing.Balance);
Console.WriteLine("Initial rrsp balance is ${0}", RpreBalance);
Console.WriteLine("New rrsp balance is ${0}", rrsp.Balance);
saving.PrintTransactions();
chequing.PrintTransactions();
rrsp.PrintTransactions();
Console.WriteLine("Press enter for new transaction");
Console.WriteLine("Current savings balance is ${0}", saving.Balance);
Console.WriteLine("Current chequings balance is ${0}", chequing.Balance);
Console.WriteLine("Current rrsp balance is ${0}", rrsp.Balance);
Console.WriteLine("1. Withdraw from savings account");
Console.WriteLine("2. Deposit to savings account");
Console.WriteLine("3. Withdraw from chequing account");
Console.WriteLine("4. Deposit to chequing account");
Console.WriteLine("5. Withdraw from rrsp account");
Console.WriteLine("6. Deposit to rrsp account");
Console.WriteLine("7. Print transactions");
namespace BankAccountNameSpace
void Deposit(decimal amount, string notes);
void Withdraw(decimal amount, string notes);
void PrintTransactions();
namespace BankAccountNameSpace
List<banktransactionsavings> mysavings = new List<banktransactionsavings>();
private decimal _balance;
public Savings(decimal balance, string name)
public void Deposit(decimal amount, string notes)
if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
mysavings.Add(new banktransactionsavings(amount, amount = Balance, notes = "INVALID TRANSACTION DEPOSIT"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "WORK PAY" && notes != "RENTAL" && notes != "PERSONAL BUSINESS" && notes != "ETRANSFER" && notes != "LOAN")
mysavings.Add(new banktransactionsavings(amount, Balance += amount, notes = "OTHER"));
mysavings.Add(new banktransactionsavings(amount, Balance += amount, notes));
public void Withdraw(decimal amount, string notes)
if (amount > Balance && notes != "S")
Console.WriteLine("Amount over balance");
mysavings.Add(new banktransactionsavings(-amount, amount = Balance, notes = "INVALID TRANSACTION OVER BALANCE"));
else if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
mysavings.Add(new banktransactionsavings(amount, amount = Balance, notes = "INVALID TRANSACTION WITHDRAWAL"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "MORTGAGE" && notes != "CAR PAYMENT" && notes != "HYDRO" && notes != "HEATING" && notes != "PROPERTY TAX")
mysavings.Add(new banktransactionsavings(-amount, Balance -= amount, notes = "OTHER"));
mysavings.Add(new banktransactionsavings(-amount, Balance -= amount, notes));
public void PrintTransactions()
Console.WriteLine("Account Savings Transactions");
Console.WriteLine("-------------------");
Console.WriteLine("You make: {0} transactions", mysavings.Count);
foreach (banktransactionsavings transaction in mysavings)
Console.WriteLine(transaction);
Console.WriteLine("TRANSACTION REMOVE");
namespace BankAccountNameSpace
class Chequing : IAccount
List<banktransactionchequings> mychequings = new List<banktransactionchequings>();
private decimal _balance;
public Chequing(decimal balance)
public void Deposit(decimal amount, string notes)
if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
mychequings.Add(new banktransactionchequings(amount, amount = Balance, notes = "INVALID TRANSACTION DEPOSIT"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "WORK PAY" && notes != "RENTAL" && notes != "PERSONAL BUSINESS" && notes != "ETRANSFER" && notes != "LOAN")
mychequings.Add(new banktransactionchequings(amount, Balance += amount, notes = "OTHER"));
mychequings.Add(new banktransactionchequings(amount, Balance += amount, notes));
public void Withdraw(decimal amount, string notes)
if (amount > Balance && notes != "S")
Console.WriteLine("Amount over balance");
mychequings.Add(new banktransactionchequings(-amount, amount = Balance, notes = "INVALID TRANSACTION OVER BALANCE"));
else if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
mychequings.Add(new banktransactionchequings(amount, amount = Balance, notes = "INVALID TRANSACTION WITHDRAWAL"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "MORTGAGE" && notes != "CAR PAYMENT" && notes != "HYDRO" && notes != "HEATING" && notes != "PROPERTY TAX")
mychequings.Add(new banktransactionchequings(-amount, Balance -= amount, notes = "OTHER"));
mychequings.Add(new banktransactionchequings(-amount, Balance -= amount, notes));
public void PrintTransactions()
Console.WriteLine("Account Chequings Transactions");
Console.WriteLine("-------------------");
Console.WriteLine("You make: {0} transactions", mychequings.Count);
foreach (banktransactionchequings transaction in mychequings)
Console.WriteLine(transaction);
Console.WriteLine("TRANSACTION REMOVE");
namespace BankAccountNameSpace
List<banktransactionrrsp> myrrsp = new List<banktransactionrrsp>();
private decimal _balance;
public Rrsp(decimal balance)
public void Deposit(decimal amount, string notes)
if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
myrrsp.Add(new banktransactionrrsp(amount, amount = Balance, notes = "INVALID TRANSACTION DEPOSIT"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "WORK PAY" && notes != "RENTAL" && notes != "PERSONAL BUSINESS" && notes != "ETRANSFER" && notes != "LOAN")
myrrsp.Add(new banktransactionrrsp(amount, Balance += amount, notes = "OTHER"));
myrrsp.Add(new banktransactionrrsp(amount, Balance += amount, notes));
public void Withdraw(decimal amount, string notes)
if (amount > Balance && notes != "S")
Console.WriteLine("Amount is over balance");
myrrsp.Add(new banktransactionrrsp(-amount, amount = Balance, notes = "INVALID TRANSACTION OVER BALANCE"));
else if (amount <= 0 && notes != "S")
Console.WriteLine("Transaction is invalid. Please insert another selection");
myrrsp.Add(new banktransactionrrsp(amount, amount = Balance, notes = "INVALID TRANSACTION WITHDRAWAL"));
Console.WriteLine("TRANSACTION REMOVE");
else if (notes != "MORTGAGE" && notes != "CAR PAYMENT" && notes != "HYDRO" && notes != "HEATING" && notes != "PROPERTY TAX")
myrrsp.Add(new banktransactionrrsp(-amount, Balance -= amount, notes = "OTHER"));
myrrsp.Add(new banktransactionrrsp(-amount, Balance -= amount, notes));
public void PrintTransactions()
Console.WriteLine("Account RRSP Transactions");
Console.WriteLine("-------------------");
Console.WriteLine("You make: {0} transactions", myrrsp.Count);
foreach (banktransactionrrsp transaction in myrrsp)
Console.WriteLine(transaction);
Console.WriteLine("TRANSACTION REMOVE");
namespace BankAccountNameSpace
public class banktransactionsavings
public decimal Transaction;
public banktransactionsavings(decimal transaction, decimal balance, string notes)
Transaction = transaction;
public override string ToString()
return "Date " + DateTime.Now + "\tTransaction $" + Transaction + " " + "\tReason of transaction: " + Notes + "\tBalance is $ " + Balance;
public class banktransactionchequings
public decimal Transaction;
public banktransactionchequings(decimal transaction, decimal balance, string notes)
Transaction = transaction;
public override string ToString()
return "Date " + DateTime.Now + "\tTransaction $" + Transaction + " " + "\tReason of transaction: " + Notes + "\tBalance is $ " + Balance;
public class banktransactionrrsp
public decimal Transaction;
public banktransactionrrsp(decimal transaction, decimal balance, string notes)
Transaction = transaction;
public override string ToString()
return "Date " + DateTime.Now + "\tTransaction $" + Transaction + " " + "\tReason of transaction: " + Notes + "\tBalance is $ " + Balance;