Jan-12-2020, 12:45 PM
i need help with my python code as i am new to python...iam getting an error message when i run the file 'BankSystem' object has no attribute 'run_main_options'....why is this?
Also is there anything i need to do further? i have attached all the files below.
Also is there anything i need to do further? i have attached all the files below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
from customer_account import CustomerAccount from admin import Admin accounts_list = [] admins_list = [] class BankSystem( object ): def __init__( self ): self .accounts_list = [] self .admins_list = [] self .load_bank_data() def load_bank_data( self ): # create customers account_no = 1234 customer_1 = CustomerAccount( "Adam" , "Smith" , [ "14" , "Wilcot Street" , "Bath" , "B5 5RT" ], account_no, 5000.00 ) self .accounts_list.append(customer_1) account_no + = 1 customer_2 = CustomerAccount( "David" , "White" , [ "60" , "Holborn Viaduct" , "London" , "EC1A 2FD" ], account_no, 3200.00 ) self .accounts_list.append(customer_2) account_no + = 1 customer_3 = CustomerAccount( "Alice" , "Churchil" , [ "5" , "Cardigan Street" , "Birmingham" , "B4 7BD" ], account_no, 18000.00 ) self .accounts_list.append(customer_3) account_no + = 1 customer_4 = CustomerAccount( "Ali" , "Abdallah" ,[ "44" , "Churchill Way West" , "Basingstoke" , "RG21 6YR" ], account_no, 40.00 ) self .accounts_list.append(customer_4) # create admins admin_1 = Admin( "Julian" , "Padget" , [ "12" , "London Road" , "Birmingham" , "B95 7TT" ], "id1188" , "1441" , True ) self .admins_list.append(admin_1) admin_2 = Admin( "Cathy" , "Newman" , [ "47" , "Mars Street" , "Newcastle" , "NE12 6TZ" ], "id3313" , "2442" , False ) self .admins_list.append(admin_2) def search_admins_by_name( self , admin_username): #STEP A.2 found_admin = None for a in self .admins_list: username = a.get_username() if username = = admin_username: found_admin = a break if found_admin = = None : print ( "\n The Admin %s does not exist! Try again...\n" % admin_username) return found_admin def search_customers_by_name( self , customer_lname): #STEP A.3 found_customer = None for a in self .customer_lname: lname = a.get_last_name() if lname = = customer_lname: found_customer = a break if found_customer = = None : print ( "\n The customer %s does not exist! Try again...\n" % customer_lname) return found_customer def main_menu( self ): #print the options you have print () print () print ( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) print ( "Welcome to the Python Bank System" ) print ( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) print ( "1) Admin login" ) print ( "2) Quit Python Bank System" ) print ( " " ) option = int ( input ( "Choose your option: " )) return option def run_main_options( self ): loop = 1 while loop = = 1 : choice = self .main_menu() if choice = = 1 : username = input ( "\n Please input admin username: " ) password = input ( "\n Please input admin password: " ) msg, admin_obj = self .admin_login(username, password) print (msg) if admin_obj ! = None : self .run_admin_options(admin_obj) elif choice = = 2 : loop = 0 print ( "\n Thank-You for stopping by the bank!" ) def transferMoney( self , sender_lname, receiver_lname, receiver_account_no, amount): #ToDo pass def admin_login( self , username, password): #STEP A.1 found_admin = self .search_admins_by_name(username) msg = "\n Login failed" if found_admin ! = None : if found_admin.get_password() = = password: msg = "\n Login successful" return msg, found_admin def admin_menu( self , admin_obj): #print the options you have print ( " " ) print ( "Welcome Admin %s %s : Avilable options are:" % (admin_obj.get_first_name(), admin_obj.get_last_name())) print ( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) print ( "1) Transfer money" ) print ( "2) Customer account operations & profile settings" ) print ( "3) Delete customer" ) print ( "4) Print all customers detail" ) print ( "5) Sign out" ) print ( " " ) option = int ( input ( "Choose your option: " )) return option def run_admin_options( self , admin_obj): loop = 1 while loop = = 1 : choice = self .admin_menu(admin_obj) if choice = = 1 : sender_lname = input ( "\n Please input sender surname: " ) amount = float ( input ( "\n Please input the amount to be transferred: " )) receiver_lname = input ( "\n Please input receiver surname: " ) receiver_account_no = input ( "\n Please input receiver account number: " ) self .transferMoney(sender_lname, receiver_lname, receiver_account_no, amount) elif choice = = 2 : #STEP A.4 customer_name = input ( "\n Please input customer surname :\n" ) customer_account = self .search_customers_by_name(customer_name) if customer_account ! = None : customer_account.run_account_options() elif choice = = 3 : #STEP A.5 customer_name = input ( "\n input customer name you want to delete: " ) customer_account = self .search_customers_by_name(customer_name) if customer_account ! = None : self .accounts_list.remove(customer_account) print ( "%s was deleted successfully!" % customer_name) elif choice = = 4 : #STEP A.6 self .print_all_accounts_details() elif choice = = 5 : loop = 0 print ( "\n Exit account operations" ) def print_all_accounts_details( self ): # list related operation - move to main.py i = 0 for c in self .accounts_list: i + = 1 print ( '\n %d. ' % i, end = ' ' ) c.print_details() print ( "------------------------" ) app = BankSystem() app.run_main_options() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
class CustomerAccount: def __init__( self , fname, lname, address, account_no, balance): self .fname = fname self .lname = lname self .address = address self .account_no = account_no self .balance = float (balance) def update_first_name( self , fname): self .fname = fname def update_last_name( self , lname): self .lname = lname def get_first_name( self ): return self .fname def get_last_name( self ): return self .lname def update_address( self , addr): self .address = addr def get_address( self ): return self .address def deposit( self , amount): self .balance + = amount def withdraw( self , amount): #ToDo self .balance - = amount def print_balance( self ): print ( "\n The account balance is %.2f" % self .balance) def get_balance( self ): return self .balance def get_account_no( self ): return self .account_no def account_menu( self ): print ( "\n Your Transaction Options Are:" ) print ( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) print ( "1) Deposit money" ) print ( "2) Withdraw money" ) print ( "3) Check balance" ) print ( "4) Update customer name" ) print ( "5) Update customer address" ) print ( "6) Show customer details" ) print ( "7) Back" ) print ( " " ) option = int ( input ( "Choose your option: " )) return option def print_details( self ): #STEP A.4.3 print ( "First name: %s" % self .fname) print ( "Last name: %s" % self .lname) print ( "Account No: %s" % self .account_no) print ( "Address: %s" % self .address[ 0 ]) print ( " %s" % self .address[ 1 ]) print ( " %s" % self .address[ 2 ]) print ( " %s" % self .address[ 3 ]) print ( " " ) def run_account_options( self ): loop = 1 while loop = = 1 : choice = self .account_menu() if choice = = 1 : #STEP A.4.1 amount = float ( input ( "\n Please enter amount to be deposited: " )) self .deposit(amount) self .print_balance() elif choice = = 2 : #ToDo amount = float ( input ( "\n Please enter amount to be withdrawn: " )) self .withdraw(amount) self .print_balance() elif choice = = 3 : #STEP A.4.4 self .print_balance() elif choice = = 4 : #STEP A.4.2 fname = input ( "\n Enter new customer first name: " ) self .update_first_name(fname) sname = input ( "\nEnter new customer last name: " ) self .update_last_name(sname) elif choice = = 5 : #ToDo addr = input ( "\ Enter new customer address: " ) self .update_address(addr) elif choice = = 6 : self .print_details() elif choice = = 7 : loop = 0 print ( "\n Exit account operations" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
class Admin: def __init__( self , fname, lname, address, user_name, password, full_rights): self .fname = fname self .lname = lname self .address = address self .user_name = user_name self .password = password self .full_admin_rights = full_rights def update_first_name( self , fname): self .fname = fname def update_last_name( self , lname): self .lname = lname def get_first_name( self ): return self .fname def get_last_name( self ): return self .lname def update_address( self , addr): self .address = addr def set_username( self , uname): self .user_name = uname def get_username( self ): return self .user_name def get_address( self ): return self .address def update_password( self , password): self .password = password def get_password( self ): return self .password def set_full_admin_right( self , admin_right): self .full_admin_rights = admin_right def has_full_admin_right( self ): return self .full_admin_rights |