0% found this document useful (0 votes)
28 views28 pages

CS Ip

Uploaded by

n2044711
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views28 pages

CS Ip

Uploaded by

n2044711
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

BANK ACCOUNT

MANAGEMENT SYSTEM

1
INDEX

S.NO CONTENT PAGE


NO.
1. Abstract 3

2. Brief Overview 4
3. Modules and Functions 5
4. Merits and Demerits 6
5. Future Enhancements 8
6. Software and Hardware
10
Requirements
7. Source Code 11
8. Output 25
9. Conclusion 27
10. Bibliography 28

2
ABSTRACT

The Bank Account Management System is an application for maintaining a


person's account in a bank. In this project, the working of a banking account
system and cover the basic functionality of a Bank Account Management System
is shown. To develop a project for solving financial applications of a customer in
banking environment in order to nurture the needs of an end banking user by
providing various ways to perform banking tasks. Also to enable the user’s work
space to have additional functionalities which are not provided under a
conventional banking project.

At its core, the system uses Python as the primary programming language due to
its versatility and ease of use, while tkinter, Python's standard GUI library, is
utilized to create a user-friendly interface. This combination allows for a seamless
interaction between the user and the system. The Bank Account Management
System undertaken as a project is based on relevant technologies. The main aim
of this project is to develop software for Bank Account Management System.

This project has been developed to carry out the processes easily and quickly,
which is not possible with the manuals systems, which are overcome by this
software. Organization need to effectively define and manage requirements to
ensure they are meeting needs of the customer, while proving compliance and
staying on the schedule and within budget. The system is designed as an
interactive and content management system.

3
BRIEF OVERVIEW OF THE PROJECT :

The “Bank Account Management System” is designed to streamline and


automate the process of managing customer bank accounts. The system allows
customers to create, manage, and close accounts, with support for various types
such as savings, checking, and fixed deposits. Key functionalities of the project
include depositing and withdrawing funds, transferring money between accounts,
checking account balances, and viewing transaction histories.

Customers can interact with the system through a user-friendly interface, while
bank employees can manage and monitor accounts, process requests, and detect
suspicious activities using an administrative panel. Security is a central focus of
the system, with features such as user authentication, data encryption, and
transaction logging to ensure the privacy and integrity of account information.

The system also offers audit trails, helping the bank to maintain compliance with
regulatory standards. By automating routine banking operations, the system
enhances efficiency, reduces human error, and provides a more reliable and
accessible banking experience for both customers and staff. This solution
modernizes bank account management, ensuring faster processing times and
improved service delivery.

4
INPUT DATA AND VALIDATION OF PROJECT:

• All the columns are requested to fill compulsory by the user.


• Avoiding errors in data by giving fixed datatypes in input values.
• Avoiding duplication of data and invalid email address pattern, such that it is
designed to avoid all such errors in the program.

FUNCTIONS AND MODULES USED:

FUNCTIONS:

• __init__()
• main()
• get()
• pack()
• Entry()
• Frame()
• grid()
• title()
• geometry()
• Label()
• Button()
• Bind()
• showerror()
• config()
• askstring()
• Toplevel()
• Listbox()
• delete()
• Tk()

5
MODULES:

• tkinter
• messagebox
• simpledialog

MERITS:

i) Enhanced Efficiency:

The Bank Account Management System automates various banking tasks, such
as deposits, withdrawals, fund transfers, and account monitoring.

ii) Improved Accuracy:

By minimizing manual data entry and calculations, the system reduces human
errors that could result in discrepancies in account balances or transaction
histories.

iii) Customer Convenience:

Customers benefit from 24/7 access to their accounts via online platforms, such
as web portals or mobile apps.

iv) Scalability:

As a digital solution, the Bank Account Management System can be scaled to


handle a growing customer base and expanding transaction volume.

6
v) Regulatory Compliance:

The system helps banks maintain compliance with financial regulations by


automating record-keeping, transaction reporting, and audit processes.

DEMERITS:

i) Technical Issues and Downtime:

Like any software system, the Bank Account Management System is prone to
technical failures, system bugs, or unexpected downtime.

ii) High Initial Setup Cost:

Implementing a comprehensive Bank Account Management System involves


significant upfront costs, including software development, hardware
infrastructure, and staff training.

iii) Dependency on Internet and Technology:

As the system relies on internet connectivity and modern technology, customers


in areas with limited internet access or those who are less tech-savvy may face
difficulties in using the system effectively.

7
FUTURE ENHANCEMENTS:

i) Integration with Artificial Intelligence (AI):

AI can offer personalized financial advice, automate customer service with


chatbots, and predict user behavior for targeted services.

ii) Blockchain for Transaction Security:

Blockchain technology can enhance the security and transparency of financial


transactions by providing immutable and tamper-proof records.

iii) Machine Learning for Fraud Detection:

Machine learning algorithms can analyze transaction patterns in real-time to


identify fraudulent activities more accurately.

iv) Mobile Banking Integration:

Integrating mobile wallets and apps for seamless transactions and account
management on mobile devices enhances customer convenience.

v) Voice Banking:

Voice recognition technology can allow customers to interact with their accounts
and perform transactions using voice commands, making banking more
accessible.

8
vi) Self-service Kiosks and ATMs:

Integrating advanced kiosks and ATMs can allow customers to complete tasks
like account creation, withdrawals, and balance checks without human
assistance.

vii) Cloud-based Infrastructure:

Moving to the cloud can offer scalability, cost-efficiency, and improved disaster
recovery options while handling growing user demands.

viii) Advanced Analytics and Reporting:

Advanced analytics can provide actionable insights into customer behavior,


transaction trends, and bank performance for better decision-making.

ix) Cross-border Transaction Enhancements:

Improving international transactions with faster processing times, lower fees, and
real-time tracking can enhance the global banking experience.

x) Biometric Authentication:

Implementing biometric systems like facial recognition or fingerprint scanning


can provide more secure and user-friendly account access.

9
SOFTWARE AND HARDWARE REQUIREMENTS

HARDWARE REQUIREMENTS:

Processor (CPU): Intel Core i3 or above

RAM: 8 GB of RAM or more

Storage: 512 GB or 1 TB SSD

Monitor: 15-inch Full HD (1920x1080) display

Input Devices: Keyboard and Mouse

SOFTWARE REQUIREMENTS:

Operating System: Windows 10/11 or macOS or Linux

Programming software: Python 13.3.0

Other requirements:

Stable and high-speed internet connection (for downloading libraries,


collaboration, and cloud-based work).

10
SOURCE CODE

from tkinter import *

from tkinter import messagebox

from tkinter import simpledialog

class BankSystem:

def __init__(self, master):

self.master = master

self.master.title("Bank Management System")

self.master.geometry("400x300")

# Bank name label

self.bank_name_label = Label(self.master, text="GUNTUR BANK",


font=('Arial', 18, 'bold'), bg="#007BFF", fg="white")

self.bank_name_label.pack(fill=X)

self.users = {}

# Create Account Frame

self.create_account_frame = Frame(self.master, bg='#F0F0F0')

self.create_account_frame.pack(pady=20)

11
# Labels

self.acc_name_label = Label(self.create_account_frame, text="Account


Name:", font=('Arial', 12), bg='#F0F0F0')

self.acc_name_label.grid(row=0, column=0, padx=10, pady=10)

self.acc_num_label = Label(self.create_account_frame, text="Account


Number:", font=('Arial', 12), bg='#F0F0F0')

self.acc_num_label.grid(row=1, column=0, padx=10, pady=10)

self.branch_label = Label(self.create_account_frame, text="Branch:",


font=('Arial', 12), bg='#F0F0F0')

self.branch_label.grid(row=2, column=0, padx=10, pady=10)

self.pin_label = Label(self.create_account_frame, text="PIN:",


font=('Arial', 12), bg='#F0F0F0')

self.pin_label.grid(row=3, column=0, padx=10, pady=10)

# Entries

self.acc_name_entry = Entry(self.create_account_frame, font=('Arial', 12),


bg='#FFFFFF', relief='solid', borderwidth=1)

self.acc_name_entry.grid(row=0, column=1, padx=10, pady=10)

self.acc_num_entry = Entry(self.create_account_frame, font=('Arial', 12),


bg='#FFFFFF', relief='solid', borderwidth=1)

self.acc_num_entry.grid(row=1, column=1, padx=10, pady=10)

self.branch_entry = Entry(self.create_account_frame, font=('Arial', 12),


bg='#FFFFFF', relief='solid', borderwidth=1)

self.branch_entry.grid(row=2, column=1, padx=10, pady=10)

12
self.pin_entry = Entry(self.create_account_frame, show="*", font=('Arial',
12), bg='#FFFFFF', relief='solid', borderwidth=1)

self.pin_entry.grid(row=3, column=1, padx=10, pady=10)

# Create account button

self.create_account_button = Button(self.create_account_frame,
text="Create Account", font=('Arial', 12), bg='#4CAF50', fg='#FFFFFF',
activebackground='#2E8B57', activeforeground='#FFFFFF', relief='raised',
borderwidth=0, command=self.create_account)

self.create_account_button.grid(row=4, column=1, pady=20)

# Login Frame

self.login_frame = Frame(self.master, bg="#FFFFFF")

self.login_frame.pack(pady=20)

self.login_name_label = Label(self.login_frame, text="Name:",


font=("Arial", 14), bg="#FFFFFF")

self.login_name_label.grid(row=0, column=0, padx=10, pady=10)

self.login_name_entry = Entry(self.login_frame, width=30, font=("Arial",


14))

self.login_name_entry.grid(row=0, column=1, padx=10, pady=10)

self.login_pin_label = Label(self.login_frame, text="PIN:", font=("Arial",


14), bg="#FFFFFF")

self.login_pin_label.grid(row=1, column=0, padx=10, pady=10)

self.login_pin_entry = Entry(self.login_frame, show="*", width=30,


font=("Arial", 14))

13
self.login_pin_entry.grid(row=1, column=1, padx=10, pady=10)

self.login_button = Button(self.login_frame, text="Login",


command=self.login, font=('Arial', 12), bg='#4CAF50', fg='#FFFFFF',
activebackground='#2E8B57', activeforeground='#FFFFFF', relief='raised',
borderwidth=0)

self.login_button.grid(row=2, column=1, padx=10, pady=10)

self.master.bind('<Return>', self.login) # Allow login with "Enter" key

# User Details Frame

self.user_details_frame = Frame(self.master)

# Labels

label_style = {"fg": "green", "font": ("Calibri", 14)}

self.acc_name_label2 = Label(self.user_details_frame, text="Account


Name:", **label_style)

self.acc_name_label2.grid(row=0, column=1, padx=10, pady=10)

self.acc_num_label2 = Label(self.user_details_frame, text="Account


Number:", **label_style)

self.acc_num_label2.grid(row=1, column=1, padx=10, pady=10)

self.branch_label2 = Label(self.user_details_frame, text="Branch:",


**label_style)

self.branch_label2.grid(row=2, column=1, padx=10, pady=10)

self.current_balance_label = Label(self.user_details_frame, text="Current


Balance:", **label_style)

14
self.current_balance_label.grid(row=3, column=1, padx=10, pady=10)

# Buttons

self.view_transaction_button = Button(self.user_details_frame, text="View


Transaction Log", command=self.view_transaction_log, bg="green",
fg="white")

self.view_transaction_button.grid(row=4, column=0, padx=10, pady=10)

self.deposit_button = Button(self.user_details_frame, text="Deposit",


command=self.deposit, bg="yellow", fg="black")

self.deposit_button.grid(row=4, column=1, padx=10, pady=10)

self.withdraw_button = Button(self.user_details_frame, text="Withdraw",


command=self.withdraw, bg="orange", fg="white")

self.withdraw_button.grid(row=4, column=2, padx=10, pady=10)

self.logout_button = Button(self.user_details_frame, text="Logout",


command=self.logout, bg="red", fg="white")

self.logout_button.grid(row=4, column=3, padx=10, pady=10)

# Initialize user data

self.acc_name = ""

self.acc_num = ""

self.branch = ""

self.pin = ""

self.current_balance = 0

self.transaction_log = []

15
def create_account(self):

# Get user input

acc_name = self.acc_name_entry.get()

acc_num = self.acc_num_entry.get()

branch = self.branch_entry.get()

pin = self.pin_entry.get()

# Create a dictionary to store the user's data

user_data = {'acc_name': acc_name, 'acc_num': acc_num, 'branch': branch,


'pin': pin, 'balance': 0, 'transaction_log':[]}

# Add the user's data to the users dictionary

self.users[pin] = user_data

# Validate input

if not acc_name or not acc_num or not branch or not pin:

messagebox.showerror("Error", "All fields are required!")

return

if not acc_num.isdigit():

messagebox.showerror("Error", "Account number must be a number!")

return

if not branch.isalpha():

messagebox.showerror("Error", "Branch must be an alphabet!")

16
return

if not pin.isdigit() or len(pin) != 4:

messagebox.showerror("Error", "PIN must be a 4-digit number!")

return

# Save user data

self.acc_name = acc_name

self.acc_num = acc_num

self.branch = branch

self.pin = pin

self.current_balance = 0

self.transaction_log = []

# Clear input fields

self.acc_name_entry.delete(0, END)

self.acc_num_entry.delete(0, END)

self.branch_entry.delete(0, END)

self.pin_entry.delete(0, END)

# Show user details

self.acc_name_label2.config(text="Account Name: " + self.acc_name)

self.acc_num_label2.config(text="Account Number: " + self.acc_num)

self.branch_label2.config(text="Branch: " + self.branch)

17
self.current_balance_label.config(text="Current Balance: " +
str(self.current_balance))

# Show user details frame

self.create_account_frame.pack_forget()

self.login_frame.pack_forget()

self.user_details_frame.pack()

def login(self, event=None):

# Get the user's PIN from the login entry widget

acc_name = self.login_acc_name_entry.get()

pin = self.login_pin_entry.get()

# Check if the user exists in the users dictionary

if pin in self.users and self.users[pin]['name'] == name:

# Set the current user data to the user's dictionary

self.current_user_data = self.users[pin]

# Show the user details frame and update the labels

self.user_details_frame.pack(pady=20)

18
self.acc_name_label2['text'] = f"Account Name:
{self.current_user_data['account name']}"

self.acc_num_label2['text'] = f"Account Number:


{self.current_user_data['account number']}"

self.branch_label2['text'] = f"Branch: {self.current_user_data['branch']}"

self.current_balance_label['text'] = f"Current Balance:


{self.current_user_data['balance']}"

# pack forget login frame

self.login_frame.pack_forget()

self.create_account_frame.pack_forget()

else:

# Show an error message box if the user does not exist

messagebox.showerror("Error", "Invalid PIN or UserName")

def deposit(self):

# Get user input

pin = simpledialog.askstring("Deposit", "Enter PIN:")

amount = simpledialog.askstring("Deposit", "Enter amount:")

# Validate input

if not pin:

return

if not amount or not amount.isdigit() or int(amount) <= 0:

19
messagebox.showerror("Error", "Invalid input!")

return

if pin not in self.users:

messagebox.showerror("Error", "Invalid PIN!")

return

# Add amount to current balance

self.users[pin]['balance'] += int(amount)

# Update current balance label

self.current_balance_label.config(text="Current Balance: " +


str(self.users[pin]['balance']))

# Add transaction to transaction log

transaction = "Deposit: +" + amount + ", New Balance: " +


str(self.users[pin]['balance'])

self.transaction_log.append(transaction)

self.users[pin]['transactions'] = self.transaction_log

def withdraw(self):

# Get user input

pin = simpledialog.askstring("PIN", "Enter your PIN:")

amount = simpledialog.askstring("Withdraw", "Enter amount:")

20
# Validate input

if not (pin and amount):

return

if not amount.isdigit() or int(amount) <= 0:

messagebox.showerror("Error", "Invalid amount!")

return

# Check if PIN is valid

if pin not in self.users:

messagebox.showerror("Error", "Invalid PIN!")

return

# Check if there is enough balance

current_balance = self.users[pin]['balance']

if int(amount) > current_balance:

messagebox.showerror("Error", "Insufficient balance!")

return

# Subtract amount from current balance

current_balance -= int(amount)

self.users[pin]['balance'] = current_balance

# Update current balance label

21
self.current_balance_label.config(text="Current Balance: " +
str(current_balance))

# Add transaction to transaction log

transaction = "Withdraw: -" + amount + ", New Balance: " +


str(current_balance)

self.transaction_log.append(transaction)

self.users[pin]['transactions'] = self.transaction_log

def view_transaction_log(self):

# Create transaction log window

transaction_log_window = Toplevel(self.master)

transaction_log_window.title("Transaction Log")

# Get current user's PIN

pin = self.login_pin_entry.get()

# Append transactions to user's transaction log

if pin in self.users:

self.users[pin]['transactions'].extend(self.transaction_log)

# Create transaction log frame

transaction_log_frame = Frame(transaction_log_window)

transaction_log_frame.pack(padx=10, pady=10)
22
# Create transaction log label

transaction_log_label = Label(transaction_log_frame, text="Transaction


Log:")

transaction_log_label.grid(row=0, column=0, padx=10, pady=10)

# Create transaction log listbox

transaction_log_listbox = Listbox(transaction_log_frame, width=50)

transaction_log_listbox.grid(row=1, column=0, padx=10, pady=10)

# Fetch and insert all transactions into listbox

if pin in self.users:

for transaction in self.users[pin]['transactions']:

transaction_log_listbox.insert(END, transaction)

else:

# Insert transactions into listbox

for transaction in self.transaction_log:

transaction_log_listbox.insert(END, transaction)

def logout(self):

# Clear user data

self.acc_name = ""

self.acc_num = ""

self.branch = ""

23
self.pin = ""

self.current_balance = 0

self.transaction_log = []

# Clear input fields

self.login_pin_entry.delete(0, END)

# Show login frame

self.user_details_frame.pack_forget()

self.create_account_frame.pack(pady=20)

self.login_frame.pack()

def main():

# Create a Tk object

root = Tk()

# Create an instance of the BankSystem class

bank_system = BankSystem(root)

# Start the mainloop

root.mainloop()

if __name__ == '__main__':

main()

24
OUTPUT

25
26
CONCLUSION

By concluding, The “Bank Account Management System” offers a simple and


secure solution for managing customer accounts and financial transactions. It
streamlines key banking tasks such as account creation, deposits, withdrawals,
and balance inquiries, making it easier for customers to manage accounts
efficiently. The system ensures security by implementing user authentication and
encrypting sensitive data, minimizing the risk of unauthorized access.

Furthermore, the Bank Account Management System offers scalability for


future enhancements. As banks continue to embrace digital transformation, the
system can be adapted to incorporate cutting-edge technologies such as cloud-
based services, biometric authentication, or blockchain for enhanced security and
transaction transparency.

The use of Tkinter for the graphical interface ensures ease of use and enhances
the user experience by offering a visually intuitive layout. The database
(implemented using dictionaries in this case) stores user data securely and allows
for efficient retrieval and updates, making the system flexible and scalable.

In conclusion, this Bank Account Management System is an essential tool for


managing user bank accounts, with a strong focus on security, ease of use, and
effective account management features. It serves as a comprehensive solution for
individuals and small businesses to handle financial transactions efficiently while
maintaining privacy and data integrity.

27
BIBLIOGRAPHY

WEBSITES:

➢ GitHub: https://github.com
➢ Studocu: https://www.studocu.com/in
➢ Scribd: https://www.scribd.com
➢ Slideshare: https://www.slideshare.net

BOOKS:

➢ Sumita Arora class 11 computer science textbook with python

28

You might also like