• Problem Statement

    Write a program for the Bank of EE160. The teller will type in the account holder, account type, and account balance. The program will let the teller know if a minimum balance fee needs to be charged, the balance after adjusting for the minimum balance fee, and if the teller has entered in an invalid account type. The program will also let the teller know that the account holder is on the bank's stop list and needs to be handled differently. The Bank of EE160 has saving accounts and checking accounts. For saving accounts, the minimum balance is \$1,000. For checking accounts, the minimum balance is \$500. The program will allow the teller to continue entering in account balances and types until the teller is done entering all of the accounts.


    The program will also print out to a file a summary of all the accounts. This summary will contain the total number of accounts, the total amount in all accounts, the percentage of minimum balance fees relative to the total amount in all accounts, and the percentage of accounts that were charged a minimum balance fee. Also, after the teller has finished entering in each account's information, the program will display the account holder information and calculate the percentage the minimum balance fee is relative to the account balance.

    After the summary of all the accounts, the program will print out to another file a list of all the accounts entered by the teller, with the following information:

    • starting account balance
    • ending account balance

    Assume the minimum balance fee is $35

    Currently, the only person on the stop list is Obama

    What is the problem asking for?

    A program that takes in the account type and account balance. The program returns whether or not a minimum balance fee should be charged to the account

    The program prints a summary of all the accounts detailing the total number of accounts and total amount in all accounts

    • input:
      • account holder (string)
      • account balance (decimal number)
      • account type (character)
      • exit program (character)
    • output:
      • message telling the teller if the minimum balance fee should be charged or not ("A minimum balance fee needs to be charged to this account." or "A minimum balance fee does not need to be charged to this account."
      • message telling the teller if s/he has entered in an invalid account type
      • each account will also have a summary with the following information:
        • account holder information
        • percentage of the minimum balance fee charged compared to the account balance of each of the accounts
      • a file with the accounts summary containing the following information:
        • total number of accounts
        • total amount in all accounts
        • percentage of total minimum balance fees charged compared to the total balance of all the accounts
        • percentage of accounts that were charged a minimum balance fee
      • a file with a list of accounts entered by the teller, which includes:
        • starting account balance
        • ending account balance
      • message telling the teller to handle the account differently if the account holder is on the stop list
  • Algorithm Design

    How can a computer solve this in a step-by-step manner?

      What are some questions the program needs to ask:
    • it needs to check if the account is a saving account
    • it needs to check if the account is a checking account
    • it needs to check if the account balance is less than $1,000 for saving account
    • it needs to check if the account balance is less than $500 for checking account
    • it needs to check if the teller wants to exit the program
      What are some tasks the program need to do:
    • it needs to display a message to tell the teller to charge a minimum balance
    • it needs to display a message to tell the teller to not charge a minimum balance
    • it needs to continue reading in account balances and account types until the user wants to exit the program
    • it needs to count the number of accounts
    • it needs to total the amount of all the accounts
    • it needs to calculate the percentage of minimum balance fees charged compared to the total amount of all the accounts
    • it needs to calculate the percentage of minimum balance fee charged compared to the the balance on the account for each account
    • it needs to calculate the adjusted balance after the minimum balance fee is accounted for
    • it needs to list the account balances in a file
    • it needs to display the account holder information
    • it needs to output a file with the accounts summary information:
      • number of accounts
      • amount of all the accounts
      • percentage of minimum balance fees charged compared to the total amount of all the accounts
    • it needs to make sure the account type entered is valid
    • it needs to tell the teller to handle the account differently if the account holder is on the stop list
    • it needs to output a file with a list of all the account entered, including the following information:
      • starting account balance
      • ending account balance

    How can we arrange the questions and tasks to develop an algoirthm (step-by-step procedure) that will meet our requirements?:

      Some questions to ask:
    • How can we simplify the problem?
    • What order should the questions be asked?
    • What order should the program tasks be done?

    What is the algorithm?

      Using words:
    • do
        get account holder information
        check if the account holder is on the stop list
          when yes, then tell the teller to handle the account differently and exit loop
        check if the account is a saving account and less than \$1000
          when yes, then tell the teller to charge the minimum balance fee
        when no, check if the account is a checking account and less than \$1000
          when yes, then tell the teller to charge the minimum balance fee
        otherwise
          check if the account is not a valid account type
            when yes, tell the teller that the account type is invalid
            otherwise, tell the teller to not charge the minimum balance fee
      
        check if the account type was valid
          when yes, then
            display account holder information
            display account summary for individual account
            update accounts summary information
            update list of account balances
        ask the user if there are more accounts to be checked
      while there are more accounts to be checked
      
      output accounts summary information to a file
      output list of account balances to a file
      Using block diagrams:
  • Write the program

    translate your algorithm into code, improved_accounts_list.c:

    translate your algorithm into code, helper_functions.h:

    translate your algorithm into code, helper_functions.c:

    translate your algorithm into code, macros.h:

      Things to note:
    • there are extra brackets when defining a function to accept a multidimensional arrays, e.g. void output_list_of_account_balances(float account_balances[][MAX_NUMBER_OF_ATTRIBUTES], int number_of_accounts);
    • there are no extra brackets when passing a multidimensional array to a function, e.g. output_list_of_account_balances(account_balances, current_account_number);
  • Add Account Holder to the List of Accounts

  • Assignment

    No graded assignments
  • Optional Assignments

    Optional assignments are not graded and does not need to be turned in. It is intended to give you more practice (if you want it) using the programming concepts discussed in lecture. Some optional assignments are intended to introduce related concepts (if you care about it) not discussed in this course to broaden your knowledge about programming in general.

    If the optional assignment is modifying a required assignment, be sure to leave your previous assignment work untouched by copying them to a new folder for the optional assignment and modify only the files in the new folder

    Track Account Balances for Each Month

    • Write a program that allows the teller to enter in the month-end account balances for each month of the current year for multiple account holders
    • The program will then display the spreadsheet/table of month-end account balances for the current year
    • You can reference account holders with an account ID

    Hints (Feel free to not use them):

    • A 2D array of floats can be used to track the account balances with each row representing a different account holder and each column representing a different month
    • The account holder IDs can also be used as the row counter