My order quote
ReadingTransactions/123456.txt 123456 7890 1000 0.33 Deposit 300 Deposit 800 Withdrawal 200 ReadingTransactions/reading_transactions.py # NOTE: Put a '123456.txt' bank account file in the same directory as this script. # ---------- Finding transactions - version 1 ---------- ''' Because we know the format of the file, we can read the entire thing and then do a little counting to figure out how many transactions we have. ''' account_file = open('123456.txt', 'r') # Open the file file_lines = account_file.readlines() # Read the contents into a list of lines account_file.close() # Close the file num_lines = len(file_lines) # How many lines do we have? num_transactions = (num_lines - 4) // 2 # The first 4 lines are account details, every other 'pair' is a transaction # Print account details print('Account Number:', file_lines[0]) print('Pin Number :', file_lines[1]) print('Balance :', file_lines[2]) print('Interest Rate :', file_lines[3]) # Print transaction details, starting from line 4 and 'moving in steps of 2' for loop in range(4, num_lines, 2): trans_type = file_lines[loop] trans_amount = file_lines[loop+1] print('Transaction: {} - {}'.format(trans_type, trans_amount)) # -------------------------------------------------------------------- print() print('*' * 50) # Waka-waka-waka-waka.... print() # -------------------------------------------------------------------- # ---------- Finding transactions - version 2 ---------- ''' Another way we can do this is to use our knowledge of the file format and read the first four lines then just KEEP ON READING lines until we fail to read another line. ''' account_file = open('123456.txt', 'r') # Get the four known properties account_number = account_file.readline() account_pin = account_file.readline() account_balance = account_file.readline() account_interest = account_file.readline() print(account_number) print(account_pin) print(account_balance) print(account_interest) # Loop to read lines from the file while True: line = account_file.readline() # Attempt to read a line if not line: # If we failed, then exit print('End of file!') break # If we did NOT fail, then the 'line' we read will be the transaction # type, so the line below it will be the transaction amount. amount = account_file.readline() print('Transaction:', line, amount) # Always close your file to release file handles and associated resources account_file.close() # -------------------------------------------------------------------- # IMPORTANT # -------------------------------------------------------------------- # Notice that this program prints each line separated by a blank line... # This is because we read in the line from the file, and the line that # we read INCLUDES the '\n' or 'new line' character. To strip this from # the input you can use [:-1] as the 'substring' - which means "go from # the beginning up to but NOT including the very last character". # # For example, print(account_number) will print precisely: # # 123456 #<---- this="" is="" an="" empty="" line="" because="" of="" the="" '\n'="" #="" #="" while="" calling="" print(account_number[:-1])="" will="" print="" precisely:="" #="" #="" 123456="" #="" [no="" blank="" line="" here="" because="" we="" did="" not="" include="" it="" when="" we="" printed="" the="" line]="" itech1400_assignment_2/123456.txt="" 123456="" 7890="" 5000.0="" 0.33="" deposit="" 3000.0="" deposit="" 4000.0="" withdrawal="" 2000.0="" itech1400_assignment_2/bankaccount.py="" class="" bankaccount():="" def="" __init__(self):="" '''constructor="" to="" set="" account_number="" to="" '0',="" pin_number="" to="" an="" empty="" string,="" balance="" to="" 0.0,="" interest_rate="" to="" 0.0="" and="" transaction_list="" to="" an="" empty="" list.'''="" def="" deposit_funds(self,="" amount):="" '''function="" to="" deposit="" an="" amount="" to="" the="" account="" balance.="" raises="" an="" exception="" if="" it="" receives="" a="" value="" that="" cannot="" be="" cast="" to="" float.'''="" def="" withdraw_funds(self,="" amount):="" '''function="" to="" withdraw="" an="" amount="" from="" the="" account="" balance.="" raises="" an="" exception="" if="" it="" receives="" a="" value="" that="" cannot="" be="" cast="" to="" float.="" raises="" an="" exception="" if="" the="" amount="" to="" withdraw="" is="" greater="" than="" the="" available="" funds="" in="" the="" account.'''="" def="" get_transaction_string(self):="" '''function="" to="" create="" and="" return="" a="" string="" of="" the="" transaction="" list.="" each="" transaction="" consists="" of="" two="" lines="" -="" either="" the="" word="" "deposit"="" or="" "withdrawal"="" on="" the="" first="" line,="" and="" then="" the="" amount="" deposited="" or="" withdrawn="" on="" the="" next="" line.'''="" def="" save_to_file(self):="" '''function="" to="" overwrite="" the="" account="" text="" file="" with="" the="" current="" account="" details.="" account="" number,="" pin="" number,="" balance="" and="" interest="" (in="" that="" precise="" order)="" are="" the="" first="" four="" lines="" -="" there="" are="" then="" two="" lines="" per="" transaction="" as="" outlined="" in="" the="" above="" 'get_transaction_string'="" function.'''="" itech1400_assignment_2/itech1400_assignment_2_feduni_banking.pdf="" itech1400="" –="" foundations="" of="" programming="" school="" of="" science,="" engineering="" and="" information="" technology="" cricos="" provider="" no.="" 00103d="" page="" 1="" of="" 10="" itech1400="" -="" assignment="" 2="" –="" feduni="" banking="" due="" date:="" 5pm,="" friday="" of="" week="" 11="" this="" assignment="" will="" test="" your="" skills="" in="" designing="" and="" programming="" applications="" to="" specification="" and="" is="" worth="" 20%="" of="" your="" non-invigilated="" (type="" a)="" marks="" for="" this="" course.="" this="" is="" an="" individual="" assignment="" –="" and="" while="" you="" may="" discuss="" it="" with="" your="" fellow="" students,="" you="" must="" not="" share="" designs="" or="" code="" or="" you="" will="" be="" in="" breach="" of="" the="" university="" plagiarism="" rules.="" this="" assignment="" should="" take="" you="" approximately="" 20="" hours="" to="" complete.="" assignment="" overview="" you="" are="" tasked="" with="" creating="" an="" application="" that="" uses="" a="" gui="" that="" simulates="" a="" simple="" banking="" interface="" similar="" to="" an="" atm="" online="" banking="" using="" the="" python="" 3="" programming="" language.="" the="" assignment="" is="" broken="" up="" into="" five="" main="" components:="" 1.)="" the="" ability="" to="" provide="" an="" account="" number="" and="" a="" pin="" (personal="" identification="" number)="" to="" sign="" into="" a="" bank="" account,="" 2.)="" the="" ability="" to="" view="" the="" balance="" of="" the="" bank="" account="" and="" to="" deposit="" and="" withdraw="" virtual="" money="" into="" and="" out="" from="" the="" account,="" 3.)="" the="" ability="" to="" save="" transactions="" via="" file="" storage="" so="" that="" you="" can="" log="" in,="" deposit="" some="" money="" and="" then="" log="" out="" –="" and="" when="" you="" log="" back="" in="" that="" money="" is="" still="" there,="" and="" finally="" 4.)="" the="" ability="" to="" display="" a="" graph="" of="" projected="" earnings="" on="" the="" bank="" account="" via="" the="" compound="" interest="" accrued="" over="" a="" variable="" amount="" of="" time.="" 5.)="" a="" test="" case="" that="" ensures="" your="" bankaccount's="" deposit="" and="" withdraw="" functionality="" operates="" correctly.="" your="" submission="" should="" consist="" of="" three="" python="" scripts="" that="" implement="" this="" application="" as="" described="" in="" the="" following="" pages:="" bankaccount.py,="" main.py="" along="" with="" a="" testbankaccount.py="" which="" contains="" a="" small="" test="" case="" with="" a="" few="" simple="" unit="" tests="" than="" ensure="" that="" your="" bank="" accounts="" deposit_funds="" and="" withdraw_funds="" methods="" operate="" correctly.="" you="" are="" provided="" with="" a="" 'stub'="" of="" each="" of="" these="" files="" which="" contain="" all="" the="" function="" declarations="" and="" comments="" which="" describe="" the="" role="" of="" the="" function="" and="" how="" it="" can="" be="" put="" together,="" but="" you="" will="" have="" to="" write="" the="" code="" for="" vast="" majority="" of="" the="" functions="" yourself.="" you="" are="" also="" provided="" with="" a="" stub="" of="" the="" bankaccounttestcase.py="" file.="" your="" final="" submission="" should="" be="" a="" zipped="" archive="" (i.e.="" ‘zip="" file’)="" containing="" your="" completed="" python="" scripts.="" there="" is="" no="" word="" processed="" component="" to="" this="" second="" assignment.="" itech1400="" –="" foundations="" of="" programming="" school="" of="" science,="" engineering="" and="" information="" technology="" cricos="" provider="" no.="" 00103d="" page="" 2="" of="" 10="" bank="" account="" class="" design="" the="" design="" for="" a="" bankaccount="" object="" is="" laid="" out="" in="" the="" following="" class="" diagram:="" as="" you="" might="" imagine,="" the="" deposit_funds(amount)="" function="" adds="" that="" money="" to="" the="" current="" balance="" of="" the="" account,="" and="" the="" withdraw_funds(amount)="" function="" removes="" (i.e.="" subtracts)="" money="" from="" the="" current="" balance="" of="" the="" account.="" each="" transaction="" in="" the="" transaction_list="" is="" a="" tuple="" containing="" either="" the="" word="" deposit="" or="" the="" word="" withdrawal="" followed="" by="" an="" amount,="" for="" example:="" ("deposit",="" 300.0)="" or="" ("withdrawal",="" 100.0).="" the="" bank="" accounts="" in="" our="" program="" do="" not="" have="" an="" overdraft="" facility="" so="" the="" user="" cannot="" withdraw="" money="" they="" do="" not="" have="" –="" that="" is,="" if="" they="" had="" $200="" in="" their="" account="" and="" they="" tried="" to="" withdraw="" more="" than="" $200="" then="" the="" operation="" should="" fail="" and="" the="" withdraw_funds="" function="" should="" raise="" an="" exception="" with="" a="" suitable="" error="" message="" which="" is="" caught="" and="" displayed="" in="" the="" main.py="" file="" where="" the="" operation="" was="" attempted.="" all="" error="" messages="" such="" as="" those="" from="" exceptions="" should="" be="" displayed="" in="" a="" pop-up="" messagebox.="" the="" get_transaction_string="" method="" should="" loop="" over="" all="" the="" transactions="" in="" the="" transaction_list="" creating="" a="" string="" version="" (with="" newline="" characters)="" of="" all="" the="" transactions="" associated="" with="" the="" account.="" the="" save_to_file="" function="" should="" save="" the="" account_number,="" pin_number,="" balance,="" and="" interest_rate="" in="" that="" order="" to="" a="" file="" called="">---->
.txt followed by the transaction list string generated from the get_transaction_string() method. The name of the account file is NOT '.txt' - the name of the file is the ACTUAL ACCOUNT NUMBER followed by ".txt", so for an account with account_number 123456 the name of the account file would be 123456