Nothing Special   »   [go: up one dir, main page]

Project Final...

Download as pdf or txt
Download as pdf or txt
You are on page 1of 57

SHRIKARRA VIDHYA MANDHIR

Sivananainthapuram

COMPUTER REPORT

Topic: BANK MANAGEMENT SYSTEM


Submitted by
1. M. Sakthi Vihaas
2. R.Vishwanath

A Report of the project


Submitted to the
Central Board of Secondary Education,
New Delhi
BONAFIDE CERTIFICATE

Certified that this project report titled ”Bank Management System”


is the bonafide work of M. Sakthi Vihaas & R. Vishwanath of
class XII– Science during the academic year 2020 -2021, submitted for
the Computer Science Practical Examination.

SIGNATURE SIGNATURE
Mr.P.Muthu Kumar .M.Sc.,B.Ed., Mr.P.Sankardayal.M.E.,B.Ed.,
PRINCIPAL PGT COMPUTER TEACHER

SHRIKARRA VIDHYA MANDHIR SHRIKARRA VIDHYA MANDHIR

Submitted for the Viva voce examination held on ………………

INTERNAL EXAMINER EXTERNAL EXAMINER


TABLE OF CONTENTS

SER DESCRIPTION
01 ACKNOWLEGEMENT

02 INTRODUCTION

03 OBJECTIVES

04 HARDWARE & SOFTWARE


REQUIREMENTS
05 PYTHON LIBRARY MODULES

06 FUNCTIONS
07 TESTING
08 SOURCE CODE
09 OUTPUT
10 ADVANTAGES & DISADVANTAGES
11 CONCLUSION
12 BIBLIOGRAPHY
ACKNOWLEDGEMENT

I take this opportunity to put record our sincere thanks to all who
enlightened my path towards the successful completion of this project.

At the very outset, I thank the almighty for this abundant blessings showered on
me.
It is my greatest privilege to convey my thanks to Mr.P.Muthu Kumar.M.Sc.,
B.Ed., Principal, Shrikarra Vidhya Mandhir for having provided me with all
required facilities to complete my project without hurdles.
I thank my guide Mr.P.Sankardayal.M.E.,B.Ed., PGT, Teacher of
Computer Science for his excellent guidance patiently throughout my project work
and for having helped me with excellent suggestions and hints, which facilitated
my task very much.

I pour my profound gratitude to Mr.S. Mohammed Ismail.M.S.c., B.Ed.,


PGT Computer Science for providing ample facilities made available to
undergone my project successfully.
I also bound to thank the other staff members of the Shrikarra Vidhya
Mandhir, whose support and cooperation also contributed much to complete this
project work.
INTRODUCTION
Introduction:
"BANK MANAGEMENT SYSTEM" This project is useful for the bank
employees as well as customers to keep a track of account details. The emerging of
digital system made information available on finger tips. By automating the
transactions one can view the details as and when required in no time. This project
emphases on creation of new customer accounts, managing the existing account
holders in the bank, by making digital system one can generate daily reports,
monthly reports and annual reports which can enhance the system.
The banking management system sector has seen some greatest expansion in
the past year and with the number of customer interaction increasing the day it has
to tally all the records in the database. The banking management system is one of
the most complex systems because the things it covered under the roof for the
transparency among the customers .It does not only preserve the details of the
transaction and other information but generates the report to further banking
functions. In this banking management system, there are many operations which are
automated which ease the work for the working of the bank. It reduces the
requirement for the manual labour and the automated tasks will be error free as they
will only work as they are programmed whereas doing work manually there is
always a possibility of human error.
OBJECTIVES
Objectives:
The main objective of the project is to develop online Banking
system for banks. In present system all banking work is done manually.
User have to visit bank to Withdraw or Deposit amount. In present bank
system it is also difficult to find account information of account holder. In
this bank management system we will automate all the banking process. In
our bank management system user can check his balance online and he
can also transfer money to other account online. In this Software we can
keep record for daily Banking transactions. The main purpose of
developing bank management system is to design an application, which
could store bank data and provide an interface for retrieving customer
related details with 100% accuracy.This bank management system also
allow user to add new customer account, delete account and user can also
modify existing user account information. Using this system user can also
search any individual account in few seconds. Using our bank
management system user can also check any translation in any account.
Our system also provide security check to reduce fraud. The system will
check the user’s existence in the database and provide the set of services
with respect to the role of the user.
HARDWARE & SOFTWARE
REQUIREMENTS
HARDWARE AND SOFTWARE REQUIREMENTS :

Operating system Windows 7 and above

Processor Pentium(any) or AMD

Motherboard 1.845 or 915995 for Pentium or MSI


K9MM-V VIAK8M800+8237R plus
chipset for AMD ATHALON
Ram 512MB+

Hard disk SATA 40GB or above

CD/DVDr/w If backup required


multi drive
combo
Floppy drive If backup required
1.44MB
Monitor 14.1 or 15-17 inch

Keyboard & Required wired or wireless


mouse
Printer If print is required-[Hard copy]

OS Windows, linux , ios


software Python 3.8x
PYTHON LIBRARY
MODULES
Python Libraries Modules:
 import mysql.connector : It is used for the
connectivity of the python interface with mysql.
 from datetime import date : It helps showing
current date in Python
 from time import sleep : We can use import
sleep to halt the execution of the program for given
time in seconds
FUNCTIONS
Functions:

1. connect( ):To create a connection between the MySQL database

and the python application.

2. is_connected( ):Reports whether the connection to the MySQL

server is available or not it returns True when the connection is

available,False otherwise .

3. cursor( ) : They are bound to the connection for the entire life

time and all the commands are executed in the context of the

database session wrapped by the connection .

4. execute( ):It is used to execute the MySQL queries in python .

5. fetchall( ):The method fetches all (or all remaining ) rows of

query result set and returns a list of tuples if no more rows

available it returns an empty list.


6. fetchone( ):This method retrieves the next row of a query result

set and returns a single sequence, or None if no more rows are

available.

7. rowcount: It returns the numbers of rows affected by the last

execute( ) method for the same cursor( ) object and thus returns

one further first cursor( ).

8. commit( ):The commit( ) method is used to make sure the

changes made to the database or consistent.

9. quit( ):This method sends a QUIT command to the MySQL

server, closing the current connection .


TESTING
Testing:

Software Testing is an empirical investigation conducted to provide


stakeholders with information about the quality of the product or service
under test, with respect to the context in which it is intended to operate.
Software Testing also provides an objective, independent view of the
software to allow the business to appreciate and understand the risks at
implementation of the software. Test techniques include, but are not
limited to, the process of executing a program or application with the
intent of finding software bugs.
It can also be stated as the process of validating and verifying that a
software program/application/product meets the business and technical
requirements that guided its design and development, so that it works as
expected and can be implemented with the same characteristics. Software
Testing, depending on the testing method employed, can be implemented
at any time in the development process, however the most test effort is
employed after the requirements have been defined and coding process
has been completed.
TESTING METHODS
Software testing methods are traditionally divided into black box
testing and white box testing. These two approaches are used to describe
the point of view that a test engineer takes when designing test cases.

BLACK BOX TESTING


Black box testing treats the software as a "black box," without any
knowledge of internal implementation. Black box testing methods include:
equivalence partitioning, boundary value analysis, all-pairs testing, fuzz
testing, model-based testing, traceability matrix, exploratory testing and
specification-based testing.
SPECIFICATION-BASED TESTING
Specification-based testing aims to test the functionality of software
according to the applicable requirements. Thus, the tester inputs data into,
and only sees the output from, the test object. This level of testing usually
requires thorough test cases to be provided to the tester, who then can
simply verify that for a given input, the output value (or behavior), either
"is" or "is not" the same as the expected value specified in the test case.
Specification-based testing is necessary, but it is insufficient to guard
against certain risks
SOURCE CODE
Source code:
print("Project Name : Bank Management System")
print("Made by : SAKTHI VIHAAS & VISHWANATH")
print("Section : Class-XII")

for i in range(2):
print()

import mysql.connector
from datetime import date
from time import sleep
print("======WELCOME TO SVRR BANK OF GOA======")

def clear():
print()
print("Loading.......")
print("Please Wait.......")
sleep(2)
print()
def customer_record():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
sql ="select * from customer;"
cursor.execute(sql)
results = cursor.fetchall()
clear()
print('Customer Records')
print('-'*120)
for result in results:
print(result[0], result[1], result[2], result[3], result[4],
result[5],result[6], result[7], result[8])
print('-'*120)
conn.close()
wait = input(' Press any key to continue....')
print("="*60)

def account_status(acno):
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
sql ="select status,balance from customer where acno ='"+acno+"'"
result = cursor.execute(sql)
result = cursor.fetchone()
conn.close()
return result

def deposit_amount():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
clear()
acno = input('Enter account No :')
amount = input('Enter amount :')
today = date.today()
result = account_status(acno)

if result==None:
print("\n\nINVALID...!ACCOUNT NUMBER")
elif result [0]== 'active':
sql1 ="update customer set balance = balance+"+amount + '
where acno = '+acno+' and status="active";'
sql2 = 'insert into transaction(amount,type,acno,dot) values(' +
amount +',"deposit",'+acno+',"'+str(today)+'");'
cursor.execute(sql2)
cursor.execute(sql1)
conn.commit()
#print(sql1)
#print(sql2)
print('\n\namount deposited')
print()
print()
else:
print('\n\nClosed or Suspended Account....')

wait= input('Press any key to continue....')


print("="*60)
conn.close()

def withdraw_amount():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
clear()
acno = input('Enter account No :')
amount = input('Enter amount :')
today = date.today()
result = account_status(acno)
if result == None:
print("\n\nINVALID...!ACCOUNT NUMBER")

elif result[0] == 'active' and int(result[1])>=int(amount):


sql1 = "update customer set balance = balance-" + \
amount + ' where acno = '+acno+' and status="active";'
sql2 = 'insert into transaction(amount,type,acno,dot) values(' + \
amount + ',"withdraw",'+acno+',"'+str(today)+'");'

cursor.execute(sql2)
cursor.execute(sql1)
conn.commit()
#print(sql1)
#print(sql2)
print('\n\nAmount Withdrawn')

else:
print('\n\nClosed or Suspended Account.Or Insufficient amount')

wait = input('Press any key to continue....')


print("="*60)
conn.close()

def transaction_menu():
while True:
clear()
print(' Trasaction Menu')
print("\n1. Deposit Amount")
print('\n2. WithDraw Amount')
print('\n3. Back to Main Menu')
print('\n\n')
choice = int(input('Enter your choice ...: '))
if choice == 1:
deposit_amount()
if choice == 2:
withdraw_amount()
if choice == 3:
break

def search_menu():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
while True:
clear()
print(' Search Menu')
print("\n1. Account No")
print('\n2. Aadhar Card')
print('\n3. Phone No')
print('\n4. Email')
print('\n5. Names')
print('\n6. Back to Main Menu')
print('\n\n')
choice = int(input('Enter your choice ...: '))
field_name=''
if choice == 1:
field_name ='acno'
if choice == 2:
field_name ='aadhar_no'
if choice == 3:
field_name = 'phone'
if choice == 4:
field_name = 'email'
if choice == 5:
field_name = 'name'
if choice == 6:
break
msg ='Enter '+field_name+': '
value = input(msg)
if field_name=='acno':
sql = 'select * from customer where '+field_name + ' = '+value+';'
else:
sql = 'select * from customer where '+field_name +' like
"%'+value+'%";'
#print(sql)
cursor.execute(sql)
records = cursor.fetchall()
n = len(records)
clear()
print('Search Result for ', field_name, ' ',value)
print('-'*80)
for record in records:
print("| ACCOUNT NO :",record[0],"|"," NAME
:",record[1],"|", " ADDRESS :",record[2],"|","PHONE
:",record[3],"|","EMAIL ID :",record[4],"|","AADHAR NO
:",record[5],"|","ACCOUNT TYPE :",record[6],"|","STATUS
:",record[7],"|","BALANCE :", record[8],"|")
if(n <= 0):
print(field_name, ' ', value, ' does not exist')
wait = input('Press any key to continue....')
print("="*60)
conn.close()
wait=input('Press any key to continue....')
print("="*60)
def daily_report():
clear()
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
today = date.today()
cursor = conn.cursor()
sql = 'select tid,dot,amount,type,acno from transaction t where
dot="'+ str(today)+'";'
cursor.execute(sql)
records = cursor.fetchall()
clear()
print('Daily Report :',today)
print('-'*120)
for record in records:
print(record[0], record[1], record[2], record[3], record[4])
print('-'*120)
conn.close()
wait = input('Press any key to continue....')
print("="*60)

def monthly_report():
clear()
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
today = date.today()
cursor = conn.cursor()
sql = 'select tid,dot,amount,type,acno from transaction t where
month(dot)="' + \
str(today).split('-')[1]+'";'
cursor.execute(sql)
records = cursor.fetchall()
clear()
#print(sql)
print('Monthly Report :', str(today).split('-')[1], '-',
str(today).split('-')[0])
print('-'*120)
for record in records:
print(record[0], record[1], record[2], record[3], record[4])
print('-'*120)
conn.close()
wait = input('Press any key to continue....')
print("="*60)
def account_details():
clear()
acno = input('Enter account no :')
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
sql ='select * from customer where acno ='+acno+';'
sql1 = 'select tid,dot,amount,type from transaction t where
t.acno='+acno+';'
cursor.execute(sql)
result = cursor.fetchone()
clear()
print('Account Details')
print('-'*120)
print('Account No :',result[0])
print('Customer Name :',result[1])
print('Address :',result[2])
print('Phone NO :',result[3])
print('Email ID :',result[4])
print('Aadhar No :',result[5])
print('Account Type :',result[6])
print('Account Status :',result[7])
print('Current Balance :',result[8])
print('-'*120)
cursor.execute(sql1)
results = cursor.fetchall()
print("######## ACCOUNT HISTORY #########")
for result in results:
print(result[1], result[2], result[3])
conn.close()
print()
print()
wait=input('Press any key to continue.....')
print("="*60)

def report_menu():
while True:
clear()
print(' Report Menu')
print("\n1. Daily Report")
print('\n2. Monthly Report')
print('\n3. Account Details')
print('\n4. Customer Records')
print('\n5. Back to Main Menu')
print('\n\n')
choice = int(input('Enter your choice ...: '))
if choice == 1:
daily_report()
if choice == 2:
monthly_report()
if choice == 3:
account_details()
if choice == 4:
customer_record()
if choice == 5:
break

def add_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
acno = input('Enter Account no:')
name = input('Enter Name :')
addr = input('Enter address ')
phone = input('Enter Phone no :')
email = input('Enter Email :')
aadhar = input('Enter AAdhar no :')
actype = input('Account Type (saving/current ) :')
balance = input('Enter opening balance :')
sql = 'insert into
customer(acno,name,address,phone,email,aadhar_no,acc_type,balanc
e,status) values ( "'+acno + '","'+ name +'","'+
addr+'","'+phone+'","'+email+'","'+aadhar+'","'+actype+'",'+bala
nce+',"active" );'
#print(sql)
cursor.execute(sql)
conn.commit()
conn.close()
print('\n\nNew customer added successfully')
wait= input('Press any key to continue....')
print("="*60)

def modify_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
clear()
acno = input('Enter customer Account No :')
print()
print()
print('Modify screen ')
print('\n 1. Customer Name')
print('\n 2. Customer Address')
print('\n 3. Customer Phone No')
print('\n 4. Customer Email ID')
print()
print()
choice = int(input('What do you want to change ? '))
new_data = input('Enter New value :')
field_name=''
if choice == 1:
field_name ='name'
if choice == 2:
field_name = 'address'
if choice == 3:
field_name = 'phone'
if choice == 4:
field_name = 'email'
sql ='update customer set ' + field_name + '="'+ new_data +'"
where acno='+ acno +';'
#print(sql)
cursor.execute(sql)
conn.commit()
print('\n\nCustomer Information modified..')
print()
wait = input('Press any key to continue....')
print("="*60)

def close_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
clear()
acno = input('Enter customer Account No :')
sql ='update customer set status="close" where acno ='+acno+';'
cursor.execute(sql)
conn.commit()
print('\n\nAccount closed')
wait = input('Press any key to continue....')
print("="*60)

def activate_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='sakthi')
cursor = conn.cursor()
clear()
acno = input('Enter customer Account No :')
sql = 'update customer set status="active" where acno ='+acno+';'
cursor.execute(sql)
conn.commit()
print('\n\nAccount Activated')
wait = input('Press any key to continue....')
print("="*60)

def main_menu():
while True:
clear()
print()
print("="*60)
print(' Main Menu')
print("\n1. Add Account")
print('\n2. Modify Account')
print('\n3. Close Account')
print('\n4. Activate Account')
print('\n5. Transaction Menu')
print('\n6. Search Menu')
print('\n7. Report Menu')
print('\n8. Close application')
print("="*60)
print('\n\n')
choice = int(input('Enter your choice ...: '))
if choice == 1:
add_account()
if choice == 2:
modify_account()
if choice == 3:
close_account()
if choice == 4:
activate_account()
if choice ==5 :
transaction_menu()
if choice ==6 :
search_menu()
if choice == 7:
report_menu()
if choice ==8:
print("<< THANK YOU FOR USING OUR APPLICATION>>")
break

if __name__ == "__main__":
main_menu()
OUTPUT
Output:
ADVANTAGES
&
DISADVANTAGES
Advantages & Disadvantages :

The black box tester has no "bonds" with the code, and a
tester's perception is very simple: a code must have bugs.
Using the principle, "Ask and you shall receive," black box
testers find bugs where programmers don't. But, on the other
hand, black box testing has been said to be "like a walk in a
dark labyrinth without a flashlight," because the tester
doesn't know how the software being tested was actually
constructed.
That's why there are situations when
(1) A black box tester writes many test cases to check
something that can be tested by only one test cases.
(2) Some parts of the back end are not tested at all.
Therefore, black box testing has the advantage of "an
unaffiliated opinion," on the one hand, and the disadvantage
of "blind exploring," on the other.
CONCLUSION
Conclusion:
The project was successfully executed without any lag and met all
our expectations and in future it will help to improve some applications.
This is the end of the project. We‟ve explored the big ideas of
composition of functions, functions as data, recursion, abstraction, and
sequential programming. As a review, you might ensure that our project
has something special. The project had been completed due to the hard
efforts taken by us and we had faced many difficulties while doing this
project. This was a great experience for us in learning
BIBLIOGRAPHY
Bibliography:
 http://www.google.com/
 http://en.wikipedia.org
 http://www.geeksforgeeks.org/
 https://github.com/
 https://pythonprogramming.net/
 https://www.edureka.co/
 https://codescracker.com/
 Computer science with Python by Sumita Arora
CLASS-XII
 Computer science with Python by Preeti Arora
CLASS-XII

***********THANK YOU**********

You might also like