Exemple #1
0
        static void Main(string[] args)
        {
            SavingsAccount       savings       = new SavingsAccount(5.00, .15);
            ChequingAccount      chequing      = new ChequingAccount(5.00, .05);
            GlobalSavingsAccount globalSavings = new GlobalSavingsAccount(5.00, .15);

            while (true)
            {
                Console.WriteLine("-----------------------------------------------------------");
                Console.WriteLine("Welcome to OmegaBank, please select an account type.");
                Console.WriteLine("A: Savings");
                Console.WriteLine("B: Checking");
                Console.WriteLine("C: GlobalSavings");
                Console.WriteLine("Q: Exit");
                string AccountType = Console.ReadLine();

                while (!(AccountType.ToUpper() == "A" || AccountType.ToUpper() == "B" || AccountType.ToUpper() == "C" || AccountType.ToUpper() == "Q"))
                {
                    Console.WriteLine("-----------------------------------------------------------");
                    Console.WriteLine("No such options, please select a valid option.");
                    AccountType = Console.ReadLine();
                }
                switch (AccountType.ToUpper())
                {
                case "A":
                    Console.WriteLine("-----------------------------------------------------------");
                    Console.WriteLine("Savings Menu");
                    Console.WriteLine("A: Deposit");
                    Console.WriteLine("B: Withdraw");
                    Console.WriteLine("C: Close + Report");
                    Console.WriteLine("R: Return to Bank Menu");

                    string savingsOption = Console.ReadLine();

                    while (!(savingsOption.ToUpper() == "A" || savingsOption.ToUpper() == "B" || savingsOption.ToUpper() == "C" || savingsOption.ToUpper() == "R"))
                    {
                        Console.WriteLine("No such options, please select a valid option.");
                        savingsOption = Console.ReadLine();
                    }

                    switch (savingsOption.ToUpper())
                    {
                    case "A":
                        Console.WriteLine("\nHow much do you want to deposit?");
                        string depositAmount = Console.ReadLine();
                        while (!double.TryParse(depositAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you deposit.");
                            depositAmount = Console.ReadLine();
                        }
                        double.TryParse(depositAmount, out double deposit);
                        savings.MakeDeposit(deposit);
                        break;

                    case "B":
                        Console.WriteLine("\nHow much do you want to withdraw?");
                        string withdrawAmount = Console.ReadLine();
                        while (!double.TryParse(withdrawAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you withdraw.");
                            withdrawAmount = Console.ReadLine();
                        }
                        double.TryParse(withdrawAmount, out double withdraw);
                        savings.MakeWithdrawal(withdraw);
                        break;

                    case "C":
                        Console.WriteLine(savings.CloseAndReport());
                        break;

                    case "R":
                        break;

                    default:
                        break;
                    }
                    break;

                case "B":
                    Console.WriteLine("-----------------------------------------------------------");
                    Console.WriteLine("Chequings Menu");
                    Console.WriteLine("A: Deposit");
                    Console.WriteLine("B: Withdraw");
                    Console.WriteLine("C: Close + Report");
                    Console.WriteLine("R: Return to Bank Menu");

                    string chequingOption = Console.ReadLine();

                    while (!(chequingOption.ToUpper() == "A" || chequingOption.ToUpper() == "B" || chequingOption.ToUpper() == "C" || chequingOption.ToUpper() == "R"))
                    {
                        Console.WriteLine("No such options, please select a valid option.");
                        chequingOption = Console.ReadLine();
                    }

                    switch (chequingOption.ToUpper())
                    {
                    case "A":
                        Console.WriteLine("\nHow much do you want to deposit?");
                        string depositAmount = Console.ReadLine();
                        while (!double.TryParse(depositAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you deposit.");
                            depositAmount = Console.ReadLine();
                        }
                        double.TryParse(depositAmount, out double deposit);
                        chequing.MakeDeposit(deposit);
                        break;

                    case "B":
                        Console.WriteLine("\nHow much do you want to withdraw?");
                        string withdrawAmount = Console.ReadLine();
                        while (!double.TryParse(withdrawAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you withdraw.");
                            withdrawAmount = Console.ReadLine();
                        }
                        double.TryParse(withdrawAmount, out double withdraw);
                        chequing.MakeWithdrawal(withdraw);
                        break;

                    case "C":
                        Console.WriteLine(chequing.CloseAndReport());
                        break;

                    case "R":
                        break;

                    default:
                        break;
                    }
                    break;

                case "C":
                    Console.WriteLine("-----------------------------------------------------------");
                    Console.WriteLine("GlobalSavings Menu");
                    Console.WriteLine("A: Deposit");
                    Console.WriteLine("B: Withdraw");
                    Console.WriteLine("C: Close + Report");
                    Console.WriteLine("D: Report Balance in USD");
                    Console.WriteLine("R: Return to Bank Menu");

                    string globalSavingsOption = Console.ReadLine();

                    while (!(globalSavingsOption.ToUpper() == "A" || globalSavingsOption.ToUpper() == "B" || globalSavingsOption.ToUpper() == "C" || globalSavingsOption.ToUpper() == "D" || globalSavingsOption.ToUpper() == "R"))
                    {
                        Console.WriteLine("No such options, please select a valid option.");
                        globalSavingsOption = Console.ReadLine();
                    }

                    switch (globalSavingsOption.ToUpper())
                    {
                    case "A":
                        Console.WriteLine("\nHow much do you want to deposit?");
                        string depositAmount = Console.ReadLine();
                        while (!double.TryParse(depositAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you deposit.");
                            depositAmount = Console.ReadLine();
                        }
                        double.TryParse(depositAmount, out double deposit);
                        globalSavings.MakeDeposit(deposit);
                        break;

                    case "B":
                        Console.WriteLine("\nHow much do you want to withdraw?");
                        string withdrawAmount = Console.ReadLine();
                        while (!double.TryParse(withdrawAmount, out double enterADamnNumberPlease))
                        {
                            Console.WriteLine("Enter a numeric value for the amount you withdraw.");
                            withdrawAmount = Console.ReadLine();
                        }
                        double.TryParse(withdrawAmount, out double withdraw);
                        globalSavings.MakeWithdrawal(withdraw);
                        break;

                    case "C":
                        Console.WriteLine(globalSavings.CloseAndReport());
                        break;

                    case "D":
                        Console.WriteLine("The balance in USD is: " + ExtensionMethods.ToNAMoneyFormat(globalSavings.USValue(0.76), true));
                        break;

                    case "R":
                        break;

                    default:
                        break;
                    }
                    break;

                case "Q":
                    Environment.Exit(0);
                    break;

                default:
                    break;
                }
            }
        }
        static void Main(string[] args)
        {
            // Creation of instances classes
            SavingsAccount       sa  = new SavingsAccount(5, 0.05);
            CheckingAccount      ca  = new CheckingAccount(5, 0.05);
            GlobalSavingsAccount gsa = new GlobalSavingsAccount(5, 0.05);



            Console.WriteLine("Hello welcome to Champlain International Bank...");
            Console.WriteLine("Login to continue...");
            Console.Write("Username: "******"Password (enter random things, this is just for fun): ");
            Console.ReadLine();
            Console.WriteLine("Hello " + name + "\nSelect an option within the menu you would like to interact with: ");
            bool exit      = false;    // loop break for Bank menu
            bool innerExit = false;    //loop break for Account menus

            bool goodDeposit  = false; //loop break for deposits
            bool goodWithdraw = false; //loop break for withdraws

            //Start of program loop
            while (exit == false)
            {
                innerExit = false;
                try
                {
                    Console.WriteLine(" ___________________________");
                    Console.WriteLine("|         Bank Menu         |");
                    Console.WriteLine("|---------------------------|");
                    Console.WriteLine("| A: Savings Account        |");
                    Console.WriteLine("| B: Checking Account       |");
                    Console.WriteLine("| C: Global Savings Account |");
                    Console.WriteLine("| Q: Exit                   |");
                    Console.WriteLine("|                           |");
                    Console.WriteLine("|___________________________|");

                    string letterAccount = Console.ReadLine();
                    string letterChoice;
                    //Start of main switch statement
                    switch (letterAccount.Trim().ToLower())
                    {
                    case "a":
                    case "savings":
                    case "savings account":
                        while (innerExit == false)
                        {
                            try
                            {
                                Console.WriteLine(" ___________________________");
                                Console.WriteLine("|       Savings Menu        |");
                                Console.WriteLine("|---------------------------|");
                                Console.WriteLine("| A: Deposit                |");
                                Console.WriteLine("| B: Withdrawal             |");
                                Console.WriteLine("| C: Close and Report       |");
                                Console.WriteLine("| R: Return to Bank Menu    |");
                                Console.WriteLine("|                           |");
                                Console.WriteLine("|___________________________|");
                                string balance = sa.Month_current_balance.ToNAMoneyFormat(true);
                                Console.WriteLine("Current Balance: " + balance);
                                letterChoice = Console.ReadLine();


                                goodDeposit  = false;    // Resets the deposit loop to keep looping the next time we enter a bad value
                                goodWithdraw = false;    // Resets the deposit loop to keep looping the next time we enter a bad value

                                //Start of switch statement for Savings menu
                                switch (letterChoice.Trim().ToLower())
                                {
                                case "a":
                                case "deposit":
                                    //loop for deposit validation
                                    while (goodDeposit == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("____________Deposit_____________");
                                            Console.WriteLine("Enter the amount you want to deposit: ");
                                            string depositStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double deposit    = Convert.ToDouble(depositStr);
                                            if (deposit < 0)
                                            {
                                                NegativeNumberError();
                                            }
                                            else
                                            {
                                                sa.MakeDeposit(deposit.ToNAMoneyFormatD(true));
                                                Console.WriteLine("Successfully deposited " + deposit.ToNAMoneyFormat(true));
                                                goodDeposit = true;         // Exit of loop allowed
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }

                                    break;

                                case "b":
                                case "withdraw":
                                    //loop for withdraw validation
                                    while (goodWithdraw == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("___________Withdrawal___________");
                                            Console.WriteLine("Enter the amount you want to withdraw");
                                            string withdrawStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double withdraw    = Convert.ToDouble(withdrawStr);
                                            if (withdraw < 0)
                                            {
                                                NegativeNumberError();         //No negative numbers
                                            }
                                            else
                                            {
                                                sa.MakeWithdraw(withdraw.ToNAMoneyFormatD(true));
                                                goodWithdraw = true;         // Exit of loop allowed
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }
                                    break;

                                case "c":
                                    Console.WriteLine("Closing and Giving Report...");
                                    Console.WriteLine(sa.CloseAndReport());
                                    break;

                                case "r":
                                    innerExit = true;
                                    break;

                                default:
                                    WrongMenuChoice();
                                    break;
                                }
                                //End of switch statement for Savings menu
                            }
                            catch (WrongMenuChoiceException e)
                            {
                                Console.WriteLine(e.Message);
                                Console.WriteLine("Try Again (A,B,C,R)");
                            }
                        }
                        break;

                    case "b":
                    case "checking":
                    case "checking account":
                        while (innerExit == false)
                        {
                            try
                            {
                                goodDeposit  = false;
                                goodWithdraw = false;
                                Console.WriteLine(" ___________________________");
                                Console.WriteLine("|       Checking Menu       |");
                                Console.WriteLine("|---------------------------|");
                                Console.WriteLine("| A: Deposit                |");
                                Console.WriteLine("| B: Withdrawal             |");
                                Console.WriteLine("| C: Close and Report       |");
                                Console.WriteLine("| R: Return to Bank Menu    |");
                                Console.WriteLine("|                           |");
                                Console.WriteLine("|___________________________|");
                                string balance = ca.Month_current_balance.ToNAMoneyFormat(true);
                                Console.WriteLine("Current Balance: " + balance);
                                letterChoice = Console.ReadLine();

                                //Start of switch statement for Checking Menu
                                switch (letterChoice.Trim().ToLower())
                                {
                                case "a":
                                case "deposit":
                                    //loop for deposit validation
                                    while (goodDeposit == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("____________Deposit_____________");
                                            Console.WriteLine("Enter the amount you want to deposit: ");
                                            string depositStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double deposit    = Convert.ToDouble(depositStr);

                                            if (deposit < 0)
                                            {
                                                NegativeNumberError();
                                            }
                                            else
                                            {
                                                ca.MakeDeposit(deposit.ToNAMoneyFormatD(true));
                                                Console.WriteLine("Successfully deposited " + deposit.ToNAMoneyFormat(true));
                                                goodDeposit = true;         // Exit of loop allowed
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }
                                    break;

                                case "b":
                                case "withdraw":
                                    //loop for withdraw validation
                                    while (goodWithdraw == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("___________Withdrawal___________");
                                            Console.WriteLine("Enter the amount you want to withdraw");
                                            string withdrawStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double withdraw    = Convert.ToDouble(withdrawStr);
                                            if (withdraw < 0)
                                            {
                                                NegativeNumberError();         //No negative numbers
                                            }

                                            else
                                            {
                                                ca.MakeWithdraw(withdraw.ToNAMoneyFormatD(true));
                                                goodWithdraw = true;         // Exit of inner-loop allowed
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }
                                    break;

                                case "c":
                                    Console.WriteLine("Closing and Giving Report...");
                                    Console.WriteLine(ca.CloseAndReport());
                                    break;

                                case "r":
                                    innerExit = true;         // Exit of loop allowed
                                    break;

                                default:
                                    WrongMenuChoice();
                                    break;
                                }
                                //End of switch statement for Checking Menu
                            }
                            catch (WrongMenuChoiceException e)
                            {
                                Console.WriteLine(e.Message);
                                Console.WriteLine("Try Again (A,B,C,R)");
                            }
                        }
                        break;

                    case "c":
                    case "global":
                    case "global savings":
                    case "global savings account":
                        while (innerExit == false)
                        {
                            try
                            {
                                goodDeposit  = false;
                                goodWithdraw = false;
                                Console.WriteLine(" ___________________________ ");
                                Console.WriteLine("|    Global Savings Menu    |");
                                Console.WriteLine("|---------------------------|");
                                Console.WriteLine("| A: Deposit                |");
                                Console.WriteLine("| B: Withdrawal             |");
                                Console.WriteLine("| C: Close and Report       |");
                                Console.WriteLine("| D: Report Balance in USD  |");
                                Console.WriteLine("| R: Return to Bank Menu    |");
                                Console.WriteLine("|___________________________|");
                                string balance = gsa.Month_current_balance.ToNAMoneyFormat(true);
                                Console.WriteLine("Current Balance: " + balance);
                                letterChoice = Console.ReadLine();

                                //Start of switch statement for Global Savings menu
                                switch (letterChoice.Trim().ToLower())
                                {
                                case "a":
                                case "deposit":
                                    //loop for deposit validation
                                    while (goodDeposit == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("____________Deposit_____________");
                                            Console.WriteLine("Enter the amount you want to deposit: ");
                                            string depositStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double deposit    = Convert.ToDouble(depositStr);
                                            if (deposit < 0)
                                            {
                                                NegativeNumberError();
                                            }
                                            else
                                            {
                                                gsa.MakeDeposit(deposit.ToNAMoneyFormatD(true));
                                                Console.WriteLine("Successfully deposited " + deposit.ToNAMoneyFormat(true));
                                                goodDeposit = true;
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }

                                    break;

                                case "b":
                                case "withdraw":
                                    //loop for withdraw validation
                                    while (goodWithdraw == false)
                                    {
                                        try
                                        {
                                            Console.WriteLine("___________Withdrawal___________");
                                            Console.WriteLine("Enter the amount you want to withdraw");
                                            string withdrawStr = Console.ReadLine().Trim(new char[] { '$', ' ' });
                                            double withdraw    = Convert.ToDouble(withdrawStr);
                                            if (withdraw < 0)
                                            {
                                                NegativeNumberError();         //No negative numbers
                                            }

                                            else
                                            {
                                                gsa.MakeWithdraw(withdraw.ToNAMoneyFormatD(true));
                                                goodWithdraw = true;
                                            }
                                        }
                                        catch (NegativeNumberException e)
                                        {
                                            Console.WriteLine(e.Message);
                                            Console.WriteLine("Try Again");
                                        }
                                        catch (FormatException)
                                        {
                                            try
                                            {
                                                NotNumberError();
                                            }
                                            catch (NotNumberException ex)
                                            {
                                                Console.WriteLine(ex.Message);
                                                Console.WriteLine("Try Again");
                                            }
                                        }
                                    }
                                    break;

                                case "c":
                                    Console.WriteLine("Closing and Giving Report...");
                                    Console.WriteLine(gsa.CloseAndReport());
                                    break;

                                case "d":
                                    Console.WriteLine("Total balance: " + gsa.USValue(0.76).ToNAMoneyFormat(true) + " USD");
                                    break;

                                case "r":
                                    innerExit = true;
                                    break;

                                default:
                                    WrongMenuChoice();
                                    break;
                                }
                                //End of switch statement for Global Savings menu
                            }
                            catch (WrongMenuChoiceException e)
                            {
                                Console.WriteLine(e.Message);
                                Console.WriteLine("Try Again (A,B,C,D,R)");
                            }
                        }
                        break;

                    case "q":
                        exit = true;
                        break;

                    default:
                        WrongMenuChoice();
                        break;
                    }
                    //End of main switch statement
                }
                catch (WrongMenuChoiceException e)
                {
                    Console.WriteLine(e.Message);
                    Console.WriteLine("Try Again (A,B,C,Q)");
                }
            }
        }