Tooooo
Tooooo
A Project Report
Submitted in the partial fulfilment of the requirements for
the award of the degree of
PROJECT
by
Session : 2021-2023
1
ACKNOWLEDGEMENT
I would also like to take this opportunity to thank my friends & class mates, without them
this project could not have been completed in a short duration they also help me when I got
stuck in coding.
2
CERTIFICATE OF ORIGINALITY
This is to certify that Mr. Sarfraj Ahmad of MCA Roll No.: 21MCA127
Regd. No. MCA0040/21 Session: 2021-2023 is a bonafide student of this
department. He has completed hir project work on the topic “Online Banking
System” from organization University Department of Mathematics place
Ranchi University in semester IV of the session 2021-23. He has completed
the project under the supervision of Mr(prof ). Anupam Gupta .
1. INTRODUCTION
2. PROBLEM DEFINITIONS
2.1 Existing System
2.2 Proposed System
3. SYSTEM ANALYSIS
3.1 Feasibility Analysis
4. SYSTEM REQUIREMENTS
4.1 Hardware Requirements
4.2 Software Requirements
5. SYSTEM DESIGN
5.1 E-R diagram
5.2 Data Dictionary
5.3 Data Flow Diagram
6. SYSTEM DESCRIPTION
7. SOURCE CODE
8. SYSTEM TESTING
11. CONCLUSION
BIBILIOGRAPHY
7
8
INTRODUCTION
The main purpose that banks have been serving since their inception is keeping our
money safe for us. While keeping our money safe, they also let us earn a certain amount
of interest on the money deposited with them. Traditional banks have been doing this,
and internet banks continue the same function. The only difference is in the way the
transactions are made.
They all know about internet banking and most of us use it quite often as well,
but few of us actually understand about the history of internet banking and how it all
came out. Knowing the history of internet banking can be incredibly useful,
especially since it will allow us to have more respect for the little things that we take
for granted.
Internet banking has been around for quite a few years now, but has really only
become prominent over the past year or so in particular. Internet banking offers an
array of different advantages to the user, including account balances and history
including year-to-date information, the ability to transfer money from one account to
another and to payees for bill payments, check history, reorders, and stop payments,
check credit card balances and statements, complete online loan applications, secure
interactive messaging with staff, and much more. Internet banking basically allows you
to be able to do everything that you can in your regular banking institution, only with
the benefit that you can do it all right from the convenience of your own home. Not
only is this great because you can be comfortable and have peace of mind knowing that
you can keep track yourself of all your banking issues, but as well it allows for more
ease because you never have to worry about rushing out and making it to the bank.
9
Online Banking System
10
11
PROBLEM DESCRIPTION
Existing System
Proposed System
12
13
SYSTEM ANALYSIS
System analysis is a logical process; the objective of this stage is not actually to
solve the problem but to determine what must be done to solve the problem. The
basic objective of the analysis stage is to develop the logical model of the system
using tools such as UML (Unified modeling language).
MAIN OBJECTIVE
FEASIBILITY ANALYSIS
Application Requirements
XAMPP
Database Server
My SQL
Any Browser
Frontend
L
CSS
JS
BOOTSTRAP
Language
PHP
16
Hardware Requirements
Hardware Requirements
Windows (Any)
2gb RAM.
Communication Interface
Client on Internet will be using HTTP/HTTPS protocol.
17
18
Data Flow Diagrams
Admin Panel:
Login
19
Transaction:
Transaction Verification
Choose Transaction
Processing:
Reporting
Custom Authority
er Database Update
Candid
ate
20
ER-Diagrams
❖ The set of primary components that are identified by the ER-Diagram are
Data object
Relationships
Attributes
❖ The primary purpose of the ERD is to represent data objects and their
relationships.
21
ER-Diagram
Customer
id
Admin id Password
Password
Manage
Customer Address
Administrator s
Phone no
Date of Birth
Age
IS
Email
Balance_enq
Funds_transfer Mini stmts
Accounts_types
Availabl
Perfor Generat
Generat e
m e
e the amount
transac trans_lis
account tions t
s
Displays
22
Activity Diagram for overall system
Valid
user
Transfer update
Balance enquiry Funds transfer Mini statements
profile
Your account
balance Transaction
ammount
Log out
Start
23
Accessing view:
User after logging into his/her account a page is displayed with the basic
requirements:
1) Balance Enquiry.
2) Funds Transfer
Description:
Client can view the balance left in his account, if once he has
entered into his account.
Preconditions:
The client has already been logged in.
24
Fund Transfer:
25
Users of the system:
In this online internet banking system, the users are
➢ Administrators
➢ Customers
Mini statements: He also can take a mini statement print out upon his
requirement.
27
Database Design
CustomerAI
Field Name Data Type SIZ
E
AccountNo Varchar 50
A_Sno Int 4
UserID Varchar 50
AccountName Varchar 50
AccountType Varchar 50
Balance Int -
Login Details
Field Name Data Type SIZ
E
Sno Int 15
UserID Varchar 20
Password Varchar 20
Mini_stat
Field Name Data Type SIZ
E
UserID Varchar 50
T_date Date -
T_Id Int 20
T_Accountno Int 20
T_Amount Int -
28
CustomerPI
Field Name Data Type SIZ
E
UserID Varchar 50
FirstName Varchar 50
LastName Varchar 50
FatherName Varchar 50
R_Address Varchar 500
DOB Varchar 50
Age Int 2
Landline_No Varchar 20
Mobile_Phone Varchar 10
Nationality Varchar 10
Email Varchar 50
Occupation Varchar 50
O_Address Varchar 50
Office_phone Varchar 50
Employer Varchar 50
City Varchar 50
Pincode Varchar 50
State Varchar 50
Country Varchar 50
29
Bankdb (Transaction List)
Field Name Data Type SIZ
E
T_Id Int 30
AccountNo Varchar 50
TDate Varchar 50
Debit Int 20
Credit Int 20
Balance Int -
DepositAcct Varchar 50
WithdrawAcct Varchar 50
30
31
Overall Description
The Online banking Application project will be divided into 4 modules
namely:
Login
Registration
Account Information
Transaction
Description
Login: The customer is asked to enter user name & password.
When the user enters the details & submits it goes to a validation
engine where it checks valid/not. If valid he is shown with list of
accounts he has with the bank.
32
Authorisation service manages authentication, authorization,
and access control to user accounts, subject to approval from the
account holder. several account authorization APIs to accommodate
different types of access. After Authentication a user will be verified
for performing the various tasks, It access is limited it is known as
authorization
33
Account Information:
34
35
Tools and Technologies used
PHP
PHP was originally created by Rasmus Lerdorf in 1995 and has been
in continuous development ever since. The main implementation of PHP is
now produced by The PHP Group and serves as the de facto standard for
PHP as there is no formal specification. PHP is free software released
under the PHP License, which is incompatible with the GNU General
Public License (GPL) because restrictions exist regarding the use of the
term PHP.
36
Security
37
Hosting PHP applications on a server requires a careful and constant
attention to deal with these security risks. There are advanced protection
patches such as Suhosin and Hardening-Patch, especially designed for web
hosting environments.
Speed optimization
Another approach for reducing overhead for high load PHP servers is
using an Opcode cache. Opcode caches work by caching the compiled
form of a PHP script (opcodes) in shared memory to avoid the overhead of
parsing and compiling the code every time the script runs.
38
Resources
PHP includes free and open-source libraries with the core build. PHP
is a fundamentally Internet-aware system with modules built in for
accessing FTP servers, many database servers, embedded SQL libraries
such as embedded PostgreSQL, MySQL and SQLite, LDAP servers, and
others. Many functions familiar to C programmers such as those in the
stdio family are available in the standard PHP build.
39
My- SQL
MySQL is a relational database management system (RDBMS)
40
Database
A collection of programs that enables you to store, modify, and
extract information from a database. Information of the users gets stored in
a relational database. The application works well with MS- Access as
database, it also works well with MySQL, SQL Server 2000 and Oracle.
41
Official
43
44
HOME USER LOGIN
<?php
include "header.php";
include "navbar.php";
if (isset($_GET['loginFailed'])) {
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-background">
<div class="flex-container">
<div class="flex-item-0">
</div>
</div>
<div class="flex-container">
<div class="flex-item-1">
<div class="flex-item-login">
<h2>Welcome</h2>
</div>
<div class="flex-item">
</div>
<div class="flex-item">
</div>
<div class="flex-item">
<button type="submit">Login</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
TRANSACTION
<?php
session_start();
include "validate_admin.php";
include "connect.php";
include "header.php";
include "user_navbar.php";
include "admin_sidebar.php";
include "session_timeout.php";
if (isset($_GET['cust_id'])) {
$_SESSION['cust_id'] = $_GET['cust_id'];
$_GET if (isset($_GET['sort'])) {
$sort = $_GET['sort'];
$_SESSION['search_term'] = $_POST['search_term'];
if (isset($_POST['date_from'])) {
$_SESSION['date_from'] = $_POST['date_from'];
if (isset($_POST['date_to'])) {
$_SESSION['date_to'] = $_POST['date_to'];
}
$filter_indicator = "None";
if (!empty($_SESSION['search_term'])) {
$filter_indicator = "Remarks";
if (empty($_SESSION['search_term'])) {
}
if (empty($_SESSION['date_from']) && !empty($_SESSION['date_to']))
{
// Sort Queries
if (isset($_GET['sort'])) {
if ($sort == 'tid_down') {
if ($sort == 'tid_up') {
if ($sort == 'date_down') {
if ($sort == 'date_up') {
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="search-bar-wrapper">
<button id="search"
onclick="document.getElementById('id01').style.display='block'">Filter</button>
<div class="flex-item-by">
</div>
<div class="flex-item-search-by">
<?php } ?>
</option>
</select>
</div>
</div>
</div>
</div>
<div class="imgcontainer">
</div>
<div class="container">
<h1 id="filter">Filter</h1>
<div class="duration-container">
<div class="date-container">
</div>
<p id="minus">−<b</p>
<div class="date-container">
</div>
</div>
<button id="submit" type="submit">Go</button>
</div>
</form>
</div>
<div class="flex-container">
</div>
<div class="flex-container">
<?php
$result = $conn->query($sql0);
<table id="transactions">
<tr>
<th>Trans. ID</th>
<th>Remarks</th>
<th>Debit (INR)</th>
<th>Credit (INR)</th>
<th>Balance (INR)</th>
</tr>
<?php
<tr>
<td>
<?php
$time = strtotime($row["trans_date"]);
echo $sanitized_time;
?>
</td>
</tr>
<?php } ?>
</table>
<?php
} else { ?>
<?php }
$conn->close(); ?>
</div>
<script>
// Sticky search-bar
$(document).ready(function() {
var curr_scroll;
$(window).scroll(function () {
curr_scroll = $(window).scrollTop();
$("#the-search-bar").addClass('search-bar-fixed');
if ($(window).width() > 855) {
$("#fi-search-bar").addClass('fi-search-bar-fixed');
$("#the-search-bar").removeClass('search-bar-fixed');
$("#fi-search-bar").removeClass('fi-search-bar-fixed');
});
$(window).resize(function () {
$("#fi-search-bar").removeClass('fi-search-bar-fixed');
$("#fi-search-bar").addClass('fi-search-bar-fixed');
});
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display =
"none";
});
</script>
</body>
</html>
SEND/RECEIVE
<?php
include "validate_customer.php";
include "header.php";
include "customer_navbar.php";
include "customer_sidebar.php";
include "session_timeout.php";
if (isset($_GET['cust_id'])) {
$id = $_GET['cust_id'];
$result0 = $conn->query($sql0);
$row0 = $result0->fetch_assoc();
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-form_header">
</div>
<div class="flex-container">
<div class=container>
<label>
To : <label id="info_label">
</label>
</label>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class="container">
</div>
<div class="container">
<button type="submit">Submit</button>
</div>
<div class="container">
</div>
</div>
</form>
<script>
function confirmReset() {
</script>
</body>
</html>
ATM SIMULATOR
<?php
include "validate_customer.php";
include "header.php";
include "customer_navbar.php";
include "customer_sidebar.php";
include "session_timeout.php";
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-form_header">
</div>
<div class="flex-container">
<div class=container>
<label>Enter Amount:</label><br>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Type :</label>
</div>
<div class="flex-container-radio">
<div class="container">
</div>
<div class="container">
</div>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>PIN(4 digit) :</b></label><br>
</div>
</div>
<div class="flex-container">
<div class="container">
<button type="submit">Submit</button>
</div>
<div class="container">
</div>
</div>
</form>
<script>
function confirmReset() {
</script>
</body>
</html>
CONTECT US
<?php
include "header.php";
include "navbar.php";
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-background">
<div class="flex-container-heading">
</div>
border-top-left-radius: 10px;
border-top-right-radius: 10px;">
<div class="flex-item">
<p id="sub-contact">
Toll-Free: 1111-111-1111<br>
Phone: 222-222-2222<br>
Fax: 333-333-3333<br>
Email: suarez081119@gmail.com
</p>
</div>
</div>
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;">
</div>
</div>
</body>
</html>
ADMIN LOGIN
<?php
include "header.php";
if (isset($_GET['loginFailed'])) {
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-1">
<div class="flex-item">
<h2>Administrator Login</h2>
</div>
<label><b>Username</b></label>
<div class="flex-item">
</div>
<label><b>Password</b></label>
<div class="flex-item">
</div>
</div>
<div class="flex-container-2">
<div class="flex-item">
<button type="submit">Login</button>
</div>
<div class="flex-item">
</div>
</form>
</body>
</html>
ADMIN HOME
<?php
include "validate_admin.php";
include "header.php";
include "user_navbar.php";
include "admin_sidebar.php";
include "session_timeout.php";
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container">
<div class="flex-item">
<h1 id="customer">
Welcome Admin
</h1>
From here you can manage all of core Internet Banking settings.
details and even delete them. You can also post news on the website.
create trouble.
</p>
</div>
</div>
</body>
</html>
include "validate_admin.php";
include "header.php";
include "user_navbar.php";
include "admin_sidebar.php";
include "session_timeout.php";
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-form_header">
<div class="flex-container">
<div class=container>
</div>
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Gender :</label>
</div>
<div class="flex-container-radio">
<div class="container">
</div>
<div class="container">
</div>
<div class="container">
</div>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Citizenship No :</label><br>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Email-ID :</label><br>
</div>
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Address :</label><br>
</div>
<div class="flex-container">
<div class=container>
</div>
<div class=container>
<select name="branch">
<option value="lalpur">Lalpur</option>
<option value="morabadi">Morabadi</option>
<option value="katchhari">Katchhari</option>
<option value="karmtoli">Karmtoli</option>
</select>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Account No :</label><br>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Username :</label><br>
</div>
<div class=container>
<label>Password :</b></label><br>
</div>
</div>
<div class="flex-container">
<div class="container">
<button type="submit">Submit</button>
</div>
<div class="container">
</div>
</div>
</form>
<script>
function confirmReset() {
return confirm('Do you really want to reset?')
</script>
</body>
</html>
EDIT/DELETE CUSTOMER
<?php
isset($_SESSION)) {
session_start();
include "validate_admin.php";
include "connect.php";
include "header.php";
include "user_navbar.php";
include "admin_sidebar.php";
include "session_timeout.php";
if (isset($_GET['cust_id'])) {
$_SESSION['cust_id'] = $_GET['cust_id'];
$result0 = $conn->query($sql0);
$result1 = $conn->query($sql1);
if ($result0->num_rows > 0) {
while($row = $result0->fetch_assoc()) {
$fname = $row["first_name"];
$lname = $row["last_name"];
$gender = $row["gender"];
$dob = $row["dob"];
$aadhar = $row["aadhar_no"];
$email = $row["email"];
$phno = $row["phone_no"];
$address = $row["address"];
$branch = $row["branch"];
$acno = $row["account_no"];
$pin = $row["pin"];
$cus_uname = $row["uname"];
$cus_pwd = $row["pwd"];
if ($result1->num_rows > 0) {
while($row = $result1->fetch_assoc()) {
$balance = $row["balance"];
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="flex-container-form_header">
<h1 id="form_header">Edit/View Customer details . . .</h1>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<input name="fname" size="30" type="text" value="<?php echo $fname ?>" required />
</div>
<div class=container>
<input name="lname" size="30" type="text" value="<?php echo $lname ?>" required />
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Gender :
<label id="info_label">
<?php
?>
<label>
</label>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Citizenship No :</label><br>
<input name="aadhar" size="25" type="text" value="<?php echo $aadhar ?>" required />
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Email-ID :</label><br>
<input name="email" size="30" type="text" value="<?php echo $email ?>" required />
</div>
<div class=container>
<label>Phone No. :</b></label><br>
<input name="phno" size="30" type="text" value="<?php echo $phno ?>" required />
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Address :</label><br>
</div>
</div>
<div class="flex-container">
<div class=container>
</div>
<div class=container>
<select name="branch">
</select>
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Account No :</label><br>
<input name="acno" size="25" type="text" value="<?php echo $acno ?>" required />
</div>
</div>
<div class="flex-container">
<div class=container>
<input name="pin" size="15" type="text" value="<?php echo $pin ?>" required />
</div>
</div>
<div class="flex-container">
<div class=container>
<label>Username :</label><br>
</div>
<div class=container>
<label>Password :</b></label><br>
</div>
</div>
<div class="flex-container">
<div class="container">
</div>
<div class="container">
<button type="submit">Update</button>
</div>
</div>
</form>
</body>
</html>
46
TESTING
Software testing is a process of analyzing or operating software for
the purpose of finding bugs. Test activities that are associated with
analyzing the products of software development include code inspections,
walkthroughs, and desk checks.
UNIT TESTING
Test cases were designed to check the results retrieved from the
database and the validation of all user inputs. All the modules were tested
thoroughly. The module interface was also tested to ensure that
information flows into and out of the program units.
48
INTEGRATION TESTING
REQUIREMENT TO BE TESTED
49
SYSTEM TESTING
50
PERFORMANCE TESTING
This is a unit testing method where a unit will be taken at a time and
tested thoroughly at a statement level to find the maximum possible errors.
I tested step wise every piece of code, taking care that every statement in
the code is executed at least once. The white box testing is also called
Glass Box Testing. I have generated a list of test cases, sample data. which
is used to check all possible combinations of execution paths through the
code at every module level.
51
box that will take some input and generate output. Output for a given set
of input combinations are forwarded to other modules.
TEST CASES
VALIDATE LOGIN
52
Test Test case Input data Expected Result resul
no t
1 For logi and Client ,152fg An exception with the False
n
invalid error identifier
password INVALID_LOGIN_ is
thrown Validate the
result
with Data in the database.
2 For expired login Client 2, An exception with the error False
and password Purity identifier
INVALID_LOGIN_ is
thrown. Validate the result
with data in the
database.
3 For reports 12/07/14 to An exception with the error False
between two 01/12/08 identifier NON_ DATE is
invalid dates thrown
4 For reports 02/12/07 to The report generated from True
the
between two valid 07/12/08 was
dates database
53
54
FUTURE ENHANCEMENT
Today, online banking services are quite varied. One of the best
features of online banking is putting the user in control. The user controls
all bill paying, transfers, and investments from home.
55
56
CONCLUSION
This section discuss the result of the work done in this project And
also mentions the future scope for improvement.
Conclusion
57
58
Bibliography
BOOK REFERENCES
W. Lecky-Thompson,” Web Programming with HTML, PHP
and MySQL”, 2nd Edition, 2008
W. Jason Gilmore,” Beginning PHP and MySQL”, 3rd Edition,2008
WEB SITES
Online banking of National City bank www.Nationalcity.com
Online banking of Bank one www.BankOne.com
Online banking of ICICI bank www.ICICI.com
PHP tutorials www.phpbuilder.com
PHP tutorials www.php-learn-it.com
59