Python Forum
homework - banking system
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
homework - banking system
#1
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.

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
Reply
#2
It is because clusterAssigments is not a method of class BankSystem. And that is because your indentation is not correct. The definition of the class ends at line 52 because the indentation stops there.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  homework - banking system Massimo16 2 3,973 Jan-13-2020, 11:02 PM
Last Post: jefsummers
  Banking system - transferring money 3DEN 2 10,543 Dec-13-2019, 09:13 AM
Last Post: 3DEN
  Homework Help - Simple Grading System Segovia 7 11,072 Jul-24-2018, 10:55 PM
Last Post: Segovia

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020