Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

In this lab; you will start with a template script (below) and create a series of classes to satisfy the lab prompt. There is only

In this lab; you will start with a template script (below) and create a series of classes to satisfy the lab prompt. There is only one part to this lab; for details on grading criteria, see the rubric at the bottom of this page.

Bank Accounts (100 points)

  1. Define an Account class
    1. Define protected class variables to store the following
      1. Account holders name as string
      2. balance as float
      3. transaction counter as integer
    2. Define the following methods
      1. A constructor (__init__) that accepts the following values and populates appropriate class variables
        1. account holders name
        2. starting balance
      2. deposit(float)
        1. accepts a floating-point number and adds it to the balance
        2. increments the transaction counter
        3. returns the current balance
      3. withdraw(float)
        1. If the balance of the account is sufficient to withdraw funds; subtract amount from balance and return the new balance, increment the transaction counter
        2. If the balance in the account is insufficient, do not subtract the amount and return False, do not increment the transaction counter
      4. overload len()
        1. When an Account object is used as an argument to len(), return the transaction count
      5. overload str()
        1. When an Account object is passed to str(), return the account holders name
      6. overload the equivalence operator
        1. When your Account class is used with an equivalence operator "==" compare the balance in both accounts and return True if they are equal, False if they are not equal
    3. Define a CreditAccount class that inherits from Account
      1. Add the following private class variable
        1. limit
        2. rate
      2. Override the constructor to only accept an account name
        1. the starting balance of CreditAccount should always be 0
        2. Set the limit to 1000.00 and the rate to 1.24
      3. Override the deposit method
        1. Accept a float as a single argument
        2. Subtract the amount from balance and return the new balance
          1. If subtracting the amount results in a negative number; set the balance to 0.0
        3. do not increment the transaction counter
        4. return the new balance
      4. Override the withdraw function
        1. Accept a float as a single argument
        2. If the current account balance plus this new amount is less than limit
          1. multiply the amount by the rate and add the result to balance
          2. increment the transaction counter
          3. return the new balance
        3. If the balance plus this new amount is equal to or greater than limit
          1. return False
          2. do not increment the transaction counter
    4. Define a SavingsAccount
      1. Override the Deposit function
        1. On every deposit, multiply the amount by 1.05 before adding it to balance
        2. increment the transaction counter by 1
        3. return the new balance
      2. define a function called accrue
        1. does not take any arguments from the caller
        2. multiplies the balance by 1.05
        3. does not increment the transaction counter
        4. returns the new balance

Template Script:

#!/usr/bin/python import math

# ==========================================================================

# YOUR SUBMISSION GOES HERE

# ==========================================================================

## DO NOT MODIFY BEYOND THIS POINT! ## Submissions with modifications beyond this line will be given a 0 score ## We will check... we have the technology :-) if __name__ == "__main__": myScore = 0

# Test base account acct = Account('Chelsey', 1024.32)

# test withdraw method overdraft if acct.withdraw(100000.00) == False: myScore += 5 else: print("ERROR: Account.withdraw(ammount) did not return False.")

# Test withdraw method balance OK if acct.withdraw(60.01) == 964.31: myScore += 5 else: print("ERROR: Value returned when attempting to make a withdrawal was unexpected")

# test deposit function if acct.deposit(36.50) == 1000.81: myScore += 5 else: print("ERROR: The deposit function on Account class returned an unexpected value")

# test transaction counter if len(acct) == 2: myScore += 5 else: print("ERROR: The transaction counter returned an unexpected result when using len()")

# Check toString() if str(acct) == 'Chelsey': myScore += 5 else: print("ERROR: Converting Account to a string had an unexpected resule")

# Test equivilance operator acct2 = Account('Sam', 1000.81) if acct == acct2: myScore += 5 else: print("ERROR: Equivilance op test #1 failed") acct2.withdraw(1000.00) if acct == acct2: print("ERROR: Equivilance op test #2 failed") else: myScore += 5

# Test the CreditAccount class acct = CreditAccount('Chelsey')

# Test inherited methods if str(acct) == 'Chelsey': myScore += 5 else: print("ERROR: When testing inherited methods for CreditAccount") # Test withdraw function if acct.withdraw(100000.00) == False: myScore += 5 else: print("ERROR: CreditAccount.withdraw did not return expected false") if acct.withdraw(100.00) == 124.00: myScore += 5 else: print("ERROR: CreditAccount.withdraw returned unexpected result")

# test deposit function if acct.deposit(100.00) == 24.00: myScore += 5 else: print("ERROR: CreditAccount.deposit returned unexpected result") # test transaction counter if len(acct) == 1: myScore += 5 else: print("ERROR: CreditAccount length was incorrect")

# test SavingsAccount acct1 = SavingsAccount('Hannah', 36.30) acct2 = SavingsAccount('Andrew', 156.33) if acct1.deposit(100.00) == 141.30: myScore += 5 else: print("ERROR: deposit for savings account had unexpected return")

# test accrue if acct1.accrue() == 148.365: myScore += 5 else: print("ERROR: deposit for savings account had unexpected return") print ("Grading complete: your score is %d out of 70" % (myScore) )

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions