This is what I'm trying to achieve:
If a request is made to withdraw money over and above the allowed overdraft limit ($100), then no money is withdrawn, and a fixed flat fee ($10) is deducted from the balance.
In the code below I have tried my best to do so but it isn't working as when I withdraw an amount over my balance it doesn't give me a failed transaction fee it instead gives me a negative balance. I'm also unsure of how when the user clicks the Account details they want to see I want it to display the failed transaction fee if there is any if the user went over the overdraft.
Any help will be much appreciated. Just cant get my head around it.
class Program
{
class Customer
{
private string firstName;
private string lastName;
private int phoneNumber;
private string address;
public Customer()
{
firstName = "Tayla";
lastName = "Brown";
phoneNumber = 027493922;
address = "55 Grey Rd";
}
//client info
public string ClientInfo()
{
string clientinfo = ("Account Holder: " + firstName + " " + lastName + " " + "Phone Number: " + phoneNumber + " " + "Address: " + address);
return clientinfo;
}
}
class Account : Customer
{
// Fields
private double accountNumber;
protected string accountType;
protected double balance;
protected double deposit;
protected double withdrawal;
protected double interest;
protected double fee;
protected double overdraft;
// Properties
public string AccountType
{
get { return this.accountType; }
}
public double Withdrawal
{
get { return this.withdrawal; }
set { this.withdrawal = value; }
}
public double Deposit
{
get { return this.deposit; }
set { this.deposit = value; }
}
public double AcctNumber
{ get { return this.accountNumber; } }
public double Bal
{ get { return this.balance; } }
public double f
{ get { return this.fee; } }
public double od
{ get { return this.overdraft; } }
// Creating Random Account Number
public virtual double AccountNumb()
{
Random rand = new Random();
this.accountNumber = rand.Next(100000000, 1000000000);
return accountNumber;
}
public virtual double Fee() // Work out Fee
{
overdraft = 100;
fee = 10;
if (balance < withdrawal)
{
balance -= (overdraft + withdrawal);
}
else if (balance > withdrawal)
{
balance -= withdrawal;
fee -= balance;
}
return balance;
}
//Computes General Balance(resets values)
public virtual double Balance()
{
balance = balance + deposit - withdrawal;
deposit = 0;
withdrawal = 0;
return balance;
}
//Computers Balance when withdrawal equals zero
public virtual double DepositBalance(double input)
{
deposit = input;
withdrawal = 0;
balance = balance + deposit - withdrawal;
return balance;
}
//Computers balance when deposit equals zero
public virtual double WithBalance(double input)
{
withdrawal = input;
deposit = 0;
balance = balance + deposit - withdrawal;
return balance;
}
//displays online banking menu
public virtual void DisplayMenu()
{
Console.WriteLine("Welcome to your online bank account\nPlease choose from the options below: ");
Console.WriteLine("");
Console.WriteLine("1.View Client Info");
Console.WriteLine("");
Console.WriteLine("2. View Account Balance:");
Console.WriteLine(" 2A.Everyday\n 2B.Investment\n 2C.Omni");
Console.WriteLine("");
Console.WriteLine("3.Deposit Funds:\n 3A.Everyday\n 3B.Investment\n 3C.Omni");
Console.WriteLine("");
Console.WriteLine("4.Withdraw Funds:\n 4A.Everyday\n 4B.Investment\n 4C.Omni");
Console.WriteLine("");
Console.WriteLine("5.View Everyday Banking Details");
Console.WriteLine("6.View Investment Banking Details");
Console.WriteLine("7.View Omni Banking details");
Console.WriteLine("");
Console.WriteLine("8.Exit");
}
}
// Everyday Account
class Everyday : Account
{
//field
private double minBalance;
private double maxBalance;
//properties
public double MinBalance
{ get { return this.minBalance; } }
public double MaxBalance
{ get { return this.maxBalance; } }
//constructors
public Everyday(double balance) : base()
{
this.minBalance = 0;
this.maxBalance = 1000000000000;
this.balance = balance;
accountType = "Everyday Account";
}
//methods
}
// Investment Account
class Investment : Account
{
//fields
private int investmentInterest;
private int feeInvestment;
//properties
public int InterestInvestment
{
get { return this.investmentInterest; } // Sets Interest
set { investmentInterest = 4; }
}
public int FeeInvestment
{
get { return this.feeInvestment; } // Sets Fee
set { feeInvestment = 10; }
}
//constructors
public Investment(double balance) : base()
{
this.balance = balance;
accountType = "Investment Account";
}
//methods
}
// Omni Account
class Omni : Account // If a request is made to withdraw money over and above the allowed overdraft limit, then no money is withdrawn and
// a fixed flat fee is deducted from the balance
{
//fields
private int interestOmni;
private int overdraft;
//properties
public int InterestOmni
{
get { return this.interestOmni; } // Get interest
set { interestOmni = 4; }
}
public int OverDraftOmni
{
get { return this.overdraft; } // Get overdraft
}
//constructors
public Omni(double balance) : base()
{
interestOmni = 4;
overdraft = 1000; // Overdraft same as min balance?
this.balance = balance;
accountType = "Omni Account";
}
}
static void Main(string[] args)
{
// Object Insantiating
Account client = new Account(); // Our one client
Everyday everyday = new Everyday(2000);
everyday.AccountNumb();
Investment investment = new Investment(500);
investment.AccountNumb();
Omni omni = new Omni(1000);
omni.AccountNumb();
string streamEverydayAccount = ("Account Number: " + everyday.AcctNumber);
string streamInvestmentAccount = ("Account Number: " + investment.AcctNumber);
string streamOmniAccount = ("Account Number: " + omni.AcctNumber);
string streamClientInfo = (client.ClientInfo());
string everydayAccountType = (everyday.AccountType);
string investmentAccountType = (everyday.AccountType);
string omniAccountType = (everyday.AccountType);
// StreamWriter Everyday Account
using (StreamWriter everydaysummary = new StreamWriter(@"EverydaySummary.txt", true))
{
everydaysummary.WriteLine(everydayAccountType);
everydaysummary.WriteLine(streamClientInfo);
everydaysummary.WriteLine(streamEverydayAccount);
}
// StreamWriter Investment Account
using (StreamWriter investmentsummary = new StreamWriter(@"InvestmentSummary.txt", true))
{
investmentsummary.WriteLine(investmentAccountType);
investmentsummary.WriteLine(streamClientInfo);
investmentsummary.WriteLine(streamInvestmentAccount);
}
// StreamWriter Omni Account
using (StreamWriter omnisummary = new StreamWriter(@"OmniSummary.txt", true))
{
omnisummary.WriteLine(omniAccountType);
omnisummary.WriteLine(streamClientInfo);
omnisummary.WriteLine(streamOmniAccount);
}
bool test = false;
do
{
string everydayDepositPara = ($"Transaction: +${everyday.Deposit} at {DateTime.Now.ToString()} Current Balance: ${everyday.Bal}");
string everdayWithdrawalPara = ($"Transaction: -${everyday.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${everyday.Bal}");
string investmentDepositPara = ($"Transaction: +${investment.Deposit} at {DateTime.Now.ToString()} Current Balance: ${investment.Bal}");
string investmentWithdrawalPara = ($"Transaction: -${investment.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${investment.Bal}");
string omniDepositPara = ($"Transaction: +${omni.Deposit} at {DateTime.Now.ToString()} Current Balance: ${omni.Bal}");
string omniWithdrawalPara = ($"Transaction: -${omni.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${omni.Bal}");
//INSTANTIATING STREAMWRITER FILES
// Everyday
using (StreamWriter everdayAccountStreamSummary = new StreamWriter("EverdaySummary.txt", true))
{
if (everyday.Deposit > 0)
{
everdayAccountStreamSummary.WriteLine(everydayDepositPara);
everyday.Deposit = 0;
}
if (everyday.Withdrawal > 0)
{
everdayAccountStreamSummary.WriteLine(everdayWithdrawalPara);
everyday.Withdrawal = 0;
}
}
//Investment
using (StreamWriter investmentAccountStreamSummary = new StreamWriter("InvestmentSummary.txt", true))
{
if (investment.Deposit > 0)
{
investmentAccountStreamSummary.WriteLine(investmentDepositPara);
investment.Deposit = 0;
}
if (investment.Withdrawal > 0)
{
investmentAccountStreamSummary.WriteLine(investmentWithdrawalPara);
investment.Withdrawal = 0;
}
}
//Omni
using (StreamWriter omniAccountStreamSummary = new StreamWriter("OmniSummary.txt", true))
{
if (omni.Deposit > 0)
{
omniAccountStreamSummary.WriteLine(omniDepositPara);
omni.Deposit = 0;
}
if (omni.Withdrawal > 0)
{
omniAccountStreamSummary.WriteLine(omniWithdrawalPara);
omni.Withdrawal = 0;
}
}
client.DisplayMenu();//the online banking menu
string userchoice = Console.ReadLine();//user input from menu options
switch (userchoice.ToUpper())
{
case "1": // Display Client Info
Console.Clear();
Console.WriteLine(client.ClientInfo());
break;
case "2A": // Display Everday Account Balance
Console.Clear();
everyday.Balance();
Console.WriteLine("Everyday Account Balance: $" + everyday.Bal);
break;
case "2B": // Display Investment Account Balance
Console.Clear();
investment.Balance();
Console.WriteLine("Investment Account Balance: $" + investment.Bal);
break;
case "2C": // Display Omni Account Balance
Console.Clear();
omni.Balance();
Console.WriteLine("Omni Account Balance: $" + omni.Bal);
break;
case "3A": // Everyday Account Deposit
Console.Clear();
Console.WriteLine("How much would you like to deposit?");
everyday.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + everyday.Deposit);
everyday.DepositBalance(everyday.Deposit);
break;
case "3B":
Console.Clear(); // Investment Account Deposit
Console.WriteLine("How much would you like to deposit?");
investment.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + investment.Deposit);
investment.DepositBalance(investment.Deposit);
break;
case "3C":
Console.Clear(); // Omni Account Deposit
Console.WriteLine("How much would you like to deposit?");
omni.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + omni.Deposit);
omni.DepositBalance(omni.Deposit);
break;
case "4A": // Everyday account Withdrawal
Console.Clear();
Console.WriteLine("How much would you like to withdraw?");
everyday.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + everyday.Withdrawal);
everyday.WithBalance(everyday.Withdrawal);
break;
case "4B":
Console.Clear(); // Investment Account Withdrawal
Console.WriteLine("How much would you like to withdraw?");
investment.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + investment.Withdrawal);
investment.WithBalance(investment.Withdrawal);
break;
case "4C":
Console.Clear(); // Omni Account Withdrawal
Console.WriteLine("How much would you like to withdraw?");
omni.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + omni.Withdrawal);
omni.WithBalance(omni.Withdrawal);
break;
case "5":
Console.Clear(); // Everyday Details
Console.WriteLine("Everyday Banking Details");
everyday.Balance();
Console.WriteLine("Everyday Account Balance: $" + everyday.Bal);
break;
case "6":
Console.Clear(); // Investment Details
Console.WriteLine("Investment Banking Details");
everyday.Balance();
Console.WriteLine("Investment Account Balance: $" + investment.Bal); // Add Interest Rate and Fee
Console.WriteLine("Interest Rate: " + investment.InterestInvestment + "%");
Console.WriteLine("Fee: "
);
break;
case "7":
Console.Clear(); // Omni Details
Console.WriteLine("Omni Banking Details");
everyday.Balance();
Console.WriteLine("Omni Account Balance: $" + omni.Bal);
Console.WriteLine("Interest Rate: " + omni.InterestOmni + "%");
Console.WriteLine("Fee: ");
break;
case "8":
Console.Clear(); // Exit Banking
Console.WriteLine("You have chosen to exit the online banking. Thanks and come again!");
Environment.Exit(0);
break;
default: // catch all, breaks the loop
Console.Clear();
test = false;
break;
}
} while (!test);
}
}