You are on page 1of 105

A PROJECT REPORT

ON

BANK MANAGEMENT SYSTEM C++

Submitted in Fulfillment of the Requirement of


Bachelor of Computer Application (BCA)
Sikkim Manipal University

UNDER THE GUIDANCE OF: SUBMITTED BY:


Ajay Jain Abhishek Singh
ROLL NO. 581124206

SESSION: 2017

SIKKIM MANIPAL UNIVERSITY


DISTANCE EDUCATION WING
SYNDICATE HOUSE
MANIPAL - 576104

-1-
UNIVERSITY STUDY CENTRE CERTIFICATE

This is to certify that the project report entitled BANK


MANAGEMENT SYSTEM C++ Submitted in partial fulfillment of
the requirement for the degree of Bachelor of Computer Application
(BCA) Sikkim Manipal University, Abhishek Singh, has worked under
my supervision and guidance and that no part of this report has been
submitted for the award of any other degree, Diploma, Fellowship or
other similar titles or prizes and that the work has not been Published in
any journal or Magazine.

Certified

Ajay Jain

-2-
ACKNOWLEDGEMENT

The present work is an effort to throw some light on BANK


MANAGEMENT SYSTEM C++. The work would not have been
possible to come to the present shape without the able guidance,
supervision and help to me by number of people.

I convey my heartfelt affection to all those people who helped and


supported me during the course, for completion of my Project Report.

Abhsiehk Singh

-3-
INDEX

1. INTRODUCTION 1-2
-objective & Goal 2

2. PROJECT INITIATION 3-5


3. SDLC 6-93
3.1 System Analysis 8
-Problem in the Current system 9
-Feature of the proposed system 9
-Feasibility Study 10
-Hardware & Software Requirements 17
3.2 Design 18
-ER Diagram 19
-DFD 20
-Structure chart 29
- Data Dictionary 35
3.3 Source code 40
3.4 Out Put Sourcing/Screenshots Testing 85

4 IMPLEMENTATION 94-100
- User Manual 95
4.3 Maintenance 98
4.4. Limitations 100

5. REFERENCES 101

-4-
INTRODUCTION
This software will be provided as a tool to the INDIAN BANK. The
BANK has been working for Accounts information , Withdrawal(through
Cash/Cheque). Deposit amount. In this Software you can keep record for daily
Banking transactions.

THE OBJECTIVE is to prepare a software or application, which could maintain data


& provide a user friendly interface for retrieving customer related details just in few
seconds, with 100% accuracy. Software is completely computerized, so it is not time
consuming process. No paper work required & can be implemented further.

The application should also facilitate the addition of new Customer A/c, deletion of
A/c& modification of existing customer A/C. To Search for every individual accounts
for a particular customer, show all transaction & any account should be opened with
minimum Rest. 500 etc.

-5-
OBJECTIVE & GOALS

The objective & goals of the proposed system are:-

To allow only authorized user to access various functions and processed available
in the system.

Locate any A/C wanted by the user.

Reduced clerical work as most of the work done by computer.

Provide greater speed & reduced time consumption.

To increase the number of A/C and customer.

This will reduced the manual workload and give information instantly. The software
will maintain the list of A/C and customer record and balance status.

The software will be user friendly so that even a beginner can operate the package and
thus maintain the status of A/C and balance status easily.

-6-
PROJECT INIATION

1. Identify a problem or an opportunity.

2. Analyzing the current system in the light of the problem/opportunity.

3. Justification of a new system or a modification of the old to meet the needs of


the users.

1.1 Problem Definition

Recognition of problem

A new opportunity that the present system cannot handle pressures Managers, non-
managers or environment elements usually recognize problems very rarely by
information specialists.

Managers find out where the problem exists & what the cause might be.

In defining the problem:

a. Find what makes the situation problematic by:


Observing the process
Interviewing the participants
Examining reports and documentation
b. Define the human activity system (ROOT DEFINITION)

Means of transformation of info


Actors
Owners of the system
Customer of the system
Environmental constraints

-7-
c. Form a model of activities and compare it with ROOT DEFINITON

d. Find a consensus solution changes will be structural procedural and in


attitudes.

Requirement Analysis

Calculation of the gap between the present performance of the system and of the best
possible one and finding out the system that can fill in this gap

Using:

Interviews
Surveys
Direct observation

Information requirement of system:

Data to be collected and processed

Output to be produced

The way to make it available for the users

While Determining Information Requirements :

I. FROM PEOPLE

Interviewing: Preferred because:

Two- way communication including body language

Stimulates enthusiasm

Establishing trust between user & IS.

Different or opposing ideas can be expressed.

-8-
But answer will be:

Incomplete

Inaccurate

Not clear

Incorrect emphasis

II. FROM EXISTING SYSTEM

The existing procedure that are going to be replaced

Similar system in other organizations

Standard software solutions

Description of similar system in publications

III. FROM EXPERIMENTAL METHODS

Prototype: Combination of HW & SW exhibiting some features of the information


system, but incomplete.

IV. FROM UTILIZING SYSTEM

Analyst is part of the organization where the new system will be used and
information transformation in this part.

Project Justification

Analyst prepares alternative systems and decides which to propose by doing


COST/BENEFIT analysis.

-9-
- 10 -
SYSTEM DEVELOPMENT LIFE CYCLE

The structured sequence of operation required imaging developing and Making


operational a new information system its a cycle because the System will need
replacement and Development, cycle will begin.

Phases of SDLC

1. System Analysis
2. System Design
3. Coding
4. System Testing
5. System Implementation
6. System Maintenance

- 11 -
- 12 -
PROBLEM FACED IN THE CURRENT SYSTEM

In the current system data related to banking is maintained by writing it on to


various registers.

Registers may lost or damage.

Any unauthorized person can access confidential data.

Any information cannot be easily e\searched.

Each A/C and customer is assigned a unique code. Whenever a new book or
member is added then librarian has to search whether that code is previously
existing or not.

When a particular A/c is to be modified for one or more fields the user can be
modified.

There is time wastage in data accessing, data entry and while data retrieving from
the banking register.

FEATURES PROPOSED IN THE CURRENT SYSTEM

Any information can be easily searched.

All records of A/c`s and customer are stored in separate files. Which

Are maintained constantly update by system.

Particular A/c information can be modified.

A particular customer record can be modified for one or more fields customer
name, address by providing A/c number.

- 13 -
A customer record can be easily deleted by providing A/c number.

The proposed system provides faster data access, data entry and retrieval.

The proposed system is more efficient, fast, reliable, user friendly.

Over and above the proposed system does not have any possibility of data loss
during processing.

FEASIBILITY STUDY

Depending on the result of the initial investigation the survey was expanded to a more
detailed feasibility study.

Feasibility is the process of defining exactly what is and what strategic issue needs to
be considered to access its feasibility, or likelihood of succeeding. Feasibility studies
are useful both when starting a new business and identifying a new opportunity for an
existing business.

Feasibility study is a test of a system proposal according to its workability and impact
on the organization, ability to meet user needs and effective use of resources.

The feasibility study conducted for this project mainly gives answer to these

Questions:-

1. What are the users demonstrable needs and how does a candidate system meet
them?

2. What resources are available for the given candidate system? Is the problem worth
solving?

3. What is likely impact of the candidate system on the organization?

4. How well does it fit within the organizations master plan?

- 14 -
Answer to this question revolves around investigation and evaluation of the problem,
identification and the description of the candidate system, specification of
performance and the cost of each system and the final selection of best system.

The objective of this feasibility study is not solving the problem but acquire a sense of
scope. During the study of the problem definition was crystallized and aspect of the
problem to be included in the system is determined.

Feasibility Consideration

The were three key consideration involved in this feasibility analysis each
consideration has reviewed to depict how it relates to the system effort.

They are as follows:-

1. Economic feasibility

2. Technical feasibility

3. Operational feasibility

ECONOMIC FEASIBILITY

Economic analysis is the most frequently used technique for evaluating the
effectiveness of a proposed system. More commonly known s cost/benefit

Analysis in this procedure we determine the benefits and saving that are

Expected in this procedure we determine the benefits and saving that are expected
from the proposed system and compare the cost; we take a decision and implement
the new proposed system.

The manual efforts involved in maintaining the A/c and customer information, the
withdrawal, the deposit and balance calculation, is tremendous. This is so because the

- 15 -
volume of information to be handled is tremendous. Maintaining the records of these
many customers is not easy and the manpower involved is great. With the help of
computers it is very easy to maintain the detail of book and library and to keep track
of available books.

In case of computerization, the cost involvement is not very high. As it is used to be


about 5-7 years back. All banking management needs initially is a desktop computer,
a printer and a UPS to maintain continuous supply of electricity.

A single operator can handle many queries. On an average, it should not take more
10-15 minutes to enter the information of a customer.

As part of the feasibility study, an estimate is made whether the identified user needs
may be satisfied using the current software and hardware. This study decides that
whether or not the proposed system will be cost effective from a business point of
view.

In this case, user has one head clerk who does all the work. So the one clerk has
maintain records regarding new A/c and deletion of A/c addition and deletion of
customer, balance amount etc.

Since the volume of information to be handled by a single person is tremendous. An


analysis of the various alternatives suggested by the software development team
follows in subsequent pages.

ALTERNATIVES

1. Hire more staff

2. Develop a computerized system using VISUAL BASIC & SQL server as database
provider.

3. Develop a computerized system using VISUAL BASIC & ORACLE as the


database provider.

4. Develop a computerized system using C++ & maintaining data file i.e. *.dat for
database.

- 16 -
Develop a system using C++ and maintaining dat files ( .dat ) for database.

The last option suggested was to develop a Banking management system using Turbo
C++ and storing the data in dat files that are easily.

Its Advantages are:-


1. The system will be platform independent and there will be no need is for
purchasing other very expensive software. The Turbo C++ compiler is easily and
freely available and is compatible with most of the computers. The system can be
upgraded and maintained easily to keep in tune with specific needs of the
customer. The memory required by this software will not be much, so we wont
have to upgrade the present system (computer).

2. The last alternatives suggested by the software development team are the
cheapest possible one . Since the Banking already has a computer the only major
expenditure signaled out. The software is text based so no formal training will
have to be imparted. The compiler is freely available. The only expenditure that
needs to be done is money cost of software team.

RESULT

From the above analysis, the development team suggested that the Banking
management should decide to implement the fourth alternative. i.e. that of developing
a new software system using Turbo C++ and maintaining data in DAT files.

The system will be developed using Turbo C++. The programming language is c++.
Thus without much of an expenditure the bank will get the perfect software according
to their needs.

The system will be very easy to understand and implement. The management can ask
the team for specific reports to be generated and can also decide on the kinds of
interface that it needs.

- 17 -
The various advantage of using DOS executable software is as follows:-

The software can be made exactly as per the needs of the management.

No specific training is required to use the software. The use just has to enter the
fields according to requirements.

Besides, a graphical user interface (GUI) will be much more demanding on


memory.

No overburdening of work for clerk since most of the work will be performed by
the system by the system itself.

And lastly, the cost of development is very less compared to other alternatives.

Plan

The followings plan was made for the development of the software:-

First a prototype was developed and used to know more about the requirements of
the baking management.

The compiler was then installed which is easily available.

The acquired software can be used to execute the up gradation plans of the library
over the next five years.

Since c++ language is used to design the interface. Thus interface can be designed
exactly as per the requirements.

2. Technical Feasibility

This is concerned with specifying equipment and software that will successfully
satisfy the user requirement. The technical needs of the system may vary
considerably, but might include:

- 18 -
o The facility to produce outputs in a given time

o Response time under certain conditions.

o Ability to process a certain volume of transaction at a particular speed.

o Facility to communicate data to distant location.

After examining technical feasibility, we give more importance to the configuration of


the system than the actual make of hardware. The configuration gives the complete
picture about the systems requirements:

Ten to twelve workstations are required, these units should be interconnected through
LAN so that they could operate and communicate smoothly. They should have
enough speeds of input and output to achieve a particular quality of printing.

Operational Feasibility

It is mainly related to human organizational and political aspects. The points to be


considered are:

What changes will be brought with the system?

What organizational structures are distributed?

What new skills will be required? Do the existing staff members have theses
skills?

If not, can they be trained in due course of time?

Generally project will not be rejected simply because of operational infeasibility but
such considerations are likely to critically affect the nature and scope of the eventual
recommendations.

For operational feasibility study we appointed a small group of people who are
familiar with information system techniques, who understand the parts of the business
that are relevant to the project and are skilled in system analysis and design process.

- 19 -
WATER FALL MODEL

SYSTEM PROJECT
FEASIBILITY PLANNING

VALIDATION VALIDATION

SYSTEM DESIGN DETAIL DESIGN

VERIFICATION VERIFICATION

CODING OPERATION

VERIFICATION VERIFICATION

INSTALLATION TESTING AND


INTEGRATION

VERIFICATION VERIFICATION

- 20 -
HARDWARE AND SOFTWARE USED

The hardware used by the programmer for developing our project named Fast

food management system is as follows:-

i. Pentium III computer -700 mhz

ii. Motherboard Intel chipset 800

iii. Hard disk capacity -5 GB

iv. RAM 64 MB

v. Monitors Color monitor with VGA card having a resolution 640 X 480

Software Used:-

The software used by the programmer for developing our project named Bank

Management System is as follows:-

1. Coding of the project C++

2. Components of the project C++

Maintenance and recording of data Datafiles

- 21 -
- 22 -
ENTITY RELATIONSHIP DIAGRAM

Opening
Date
Name Add

Balance
A/c no.

USER CREATE CUSTOMER

- 23 -
DATA FLOW DIAGRAM

ZERO LEVEL OR CONTEXT DIAGRAM

USER /
ADMINISTRATOR

Grant access

Request for a/c details Reports

Queries BANKING Request for access


PROJECT
Request for member details

Grant super
USER /
User access ADMINISTRATOR

- 24 -
1st LEVEL DFD

INITIAL.DAT

USER / VERIFY
Request for a/c info.
A/c
ADMINISTRATOR
NUMBER

If
ok

ACCEPT
CHOICE

SHOW
CUSTOMER
DETAIL

- 25 -
2ND LEVEL DFD

INTIAL.DAT

ACCEPT CHOICE
FORM
USER / PROCESSING USER
ADMINISTRATOR OR
ADMINISTRATOR

7
QUIT

1 2 3 4
SEE LIST OF TRANSA OPEN 6
A/CS A/C CTION NEW A/C HELP

5
EDIT A/C

26
1. SEE ACCOUNT

ESC

1.1
USER / ACCEPT
ADMINISTRATOR CHOICE

1.1.2
ACCEPT
CHOICE

1.1.2.1
ACCEPT
CHOICE

INTIAL.DAT

- 27 -
2.LIST FO ACCOUNTS

ESC

2.1
USER / ACCEPT
ADMINISTRATOR CHOICE

2.1.1
DISPLAY
ALL
ACCOUNT

INTIAL .DAT

- 28 -
3.TRANSACTIONS

3.1
USER /
ACCEPT
ADMINISTRATOR
CHOICE

3.1.1
ENTER
A/C NO.

3.2.1.1
DEPOSIT OR
D WITHDRAW W

3.1.1.1.1 3.1.1.1.2
CASH CASH/CHE
/CHEQUE QUE

Save transaction in the file

INTIAL.DAT

- 29 -
4.OPEN NEW ACCOUNT

3.1.1.1.2
USER / CASH/CHE
ADMINISTRATOR QUE

4.1.1 4.1.2 3.1.1.1.2 4.1.4


NAME ADDRES CASH/CH INTIAL
S EQUE DEPOSIT

BANKING.DAT

- 30 -
5.EDIT ACCOUNT

5.1
USER / ACCEPT
ADMINISTRATOR CHOICE

5.1.1 5.1.2 5.1.3


MODIFY CLOSE QUIT
A/C A/C

5.I.1.1 5.1.2.1
MODIFY ENTER
A/C A/C NO.

5.1.1.1.1 5.1.1.1.2 5.1.2.1.1


MODIFY MODIFY DELETE
NAME ADDRES RECORD
S

BANKING.DAT

- 31 -
6.HELP

HELP
1.6

ABOUT ALL ABOUT ABOUT NEW ABOUT


ABOUT A/C A/C TRANSACTION A/C MODIFY A/C
1.6.1 1.6.2 1.6.3 1.6.4 1.6.5

- 32 -
STRUCTURE CHART

BANKING MANAGEMENT
1

QUIT
1.7

SEE ACCOUNT TRANSACTION EDIT HELP


I.1 1.3 1.5 1.6

LIST OF A/C OPEN A NEW A/C


1.2 1.4
1.2

- 33 -
SEE ACCOUNT
I.1

SEE A/C NO.


I.1.1

DISPLAY A/C
INFORMATION
1.1.1.1

- 34 -
LIST OF ACCOUNT
1.2

DISPLAY ALL THE INFORMATION


1.2.1

- 35 -
TRANSACTION
1.3

ENTER A/C NO
1.3.1

DEPOSIT WITHDRAW
1.3.1.1 1.3.1.2.2

CASH CHEQUE CASH CHEQUE


1.3.1.1.1 1.3.1.1.2 1.3.1.2.2 1.3.1.2.2

- 36 -
OPEN NEW
ACCOUNT
1.4

VERIFYING INTIAL
NAME ADDRESS PERSON DEPOSIT
1.4.1 1.4.2 1.4.3 1.4.4

- 37 -
EDIT ACCOUNT
1.5

MODIFY A/C CLOSE A/C QUIT


1.5.1 1.5.2 1.5.3

ENTER A/C NO. ENTER A/C NO


1.5.1.1 1.5.2.1

MODIFY MODIFY
NAME ADDRESS DELETE A/C
1.5.1.1.1 1.5.1.1.2 1.5.2.1.1

- 38 -
DATA DICTIONARY

This project I have 3 data files.

1. INITIAL.DAT- This data file contains all the information about account. For

example initial deposit, deposited amount withdrawal amount ,interest amount

,account number, opening account date etc.

2. BANKING.DAT- This data file contains all the information about member for

example account number, customer name , customers address etc.

3. TEMP.DAT- This data file is used while deleting some information from

INITIAL.DAT or from BANKING.DAT.

In This project 1 have used global functions:

A. void gra1()

B. void gra2()

C. void box(int, int)

These global function are use to display some graphics in program segment.

In this project 1 have used 4 classes:

A. shape

B. control

C. initial

D. account

- 39 -
A.shape-the class contain function related to draw box etc.

Following are the public member function of this class:

Void line hor. (int, int, int , char):-This function helps to draw horizontal line.

Void line ver (int, int, int , char):- This function helps to draw vertical lines.

Void box (int, int, int , char):- This function helps to draw box lines.

B.Control- This class control all the function in the menu.

Following are the member function of their class:

Void main_menu (void)- This function helps to display main menu.

Void help(void)- This function helps to display help about project.

Void edit_menu(void)- This function helps to display edit menu.

C.Initial- This class contain function related to initial deposit.

Variable name Data type Size Information Stored

Acc no Integer variable 2 Account no

Name Array of char 30 Name of the customer

Address Array of char 60 Add of the customer

Balance Float variable 1 balance

Size- number of Bytes allocated to Variable.

- 40 -
Following are the member function of this class:

Void add to file (int , char t_name [30], char t_address [60],float):- This function

adds the given data into the file initial.dat

Void display_list(void):- This function display the list of account in file initial.dat.

Void delete account (int):-This function deletes records for the given account no.

from the file initial.dat.

void update balance(int,float):- This function update balance for the given account

no. in the file initial.dat.

void modify(void):- This function gives the data to modify the record in the file

initial.dat.

int last acc no.(void):- This function return last account no. in the file initial.dat.

int found account(int):- This function returns 1 if the given account no. found in the

file initial.dat.

char *return name(int):- This function return name for the given account no. in the

file initial.dat.

char *return address(int):-This function return address for the given a/c no. in the

file initial.dat.

float give balance(int):- This function return balance for the given account no. in the

file initial.dat.

int record no(int):-This function return record no. of the given account no. in the file

initial.dat.

void display(int):-This function display the account for given account no. from the

file initial.dat.

void modify account(int , char t_name[30], char_t address[60]):- This function

modifies the record for the given data in the file initial.dat

- 41 -
void box for_list(void):- This function display draws the box for the list of accounts.

D. Account:- This class contain function related to transactions.

Variable name Data type Size Information stored

Acc no Integer variable 2 Account number

Type Character variable 10 Type of the withdrawal

dd ,mmm ,yy Integer variable 2 Date

Tran Character array 1 Deposit or withdrawal

Interest Float variable 2 Interest

Amount Float variable 2 Amount

Balance Float variable 2 Balance

Size:- Number of bytes allocated to variable.

Following are the member function of This class.

Void new account(void):- This function accept the data to add records in the file

banking.dat.

void close account(void):- This function close the account (delete account).

Void display account (void):- This function display records from the file

banking.dat.

Void transaction(void):-This function makes transaction(deposit /withdraw)

Void clear(int , int):- This function clear the given row and colmn.

- 42 -
Void add to file (int , int , int , int , char , char t-type[10], float ,float, float):- This

function adds the given data into the file banking.dat.

Void delete account (int ):- This function deletes the record for given account no.

from file banking.dat.

Int no of days ( int ,int ,int .int .int , int):- This function returns the difference

between

Two dates.

Float calculate interest (int , float):- This function calculate interest.

Void display(int):- This function is used to delete the information of a member.

Void box for display(int):- This function draws the box for displaying records from

file banking.dat

- 43 -
- 44 -
/*Program to bank account management*/

#include <iostream.h>
#include <fstream.h>
#include <process.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>

class shape
{
public :
void l_hor(int, int, int, char) ;
void l_ver(int, int, int, char) ;
void box(int,int,int,int,char) ;
} ;

class control
{
public :
void main_menu(void) ;
void help(void) ;
private :
void edit_menu(void) ;
} ;

class acc
{
public :

- 45 -
void add_to_file(int, char t_name[30],
char t_address[60], float);
void display_list(void) ;
void delete_account(int) ;
void update_balance(int, float,int ,int
,int) ;
float calculate_interest(int, float) ;
void modify(void) ;
int last_accno(void) ;
int found_account(int) ;
char *return_name(int) ;
char *return_address(int) ;
float give_balance(int) ;
int recordno(int) ;
void display(int) ;

private :
void modify_account(int, char
t_name[30], char t_address[60]) ;
void box_for_list(void) ;
int accno ;
char name[30], address[60] ;
float balance ;
int dd, mm, yy;
} ;

class account
{
public: void new_account(void) ;
void close_account(void) ;
void display_account(void) ;
int no_of_days(int, int, int, int, int,
int) ;

- 46 -
void transaction(void) ;
void clear(int,int) ;
private:
void add_to_file(int, int, int, int,
char, char t_type[10], float, float,
float);
void delete_account(int) ;
void display(int) ;
void box_for_display(int) ;
int accno ;
char type[10] ;
int dd, mm, yy ;
char tran ;
float interest, amount, balance ;
} ;

void shape :: l_hor(int column1, int column2,


int row, char c)
{
for (column1; column1<=column2;
column1++) {
gotoxy(column1,row) ;
cout <<c ;
}
}

void shape :: l_ver(int row1, int row2, int


column, char c)
{
for (row1; row1<=row2; row1++ ) {
gotoxy(column,row1) ;
cout <<c ;
}

- 47 -
}

void shape :: box(int column1, int row1, int


column2, int row2, char c)
{
char ch=218 ;
char c1, c2, c3, c4 ;
char l1=196, l2=179 ;
if (c == ch)
{
c1=218 ;
c2=191 ;
c3=192 ;
c4=217 ;
l1 = 196 ;
l2 = 179 ;
}
else
{
c1=c ;
c2=c ;
c3=c ;
c4=c ;
l1 = c ;
l2 = c ;
}
gotoxy(column1,row1) ;
cout <<c1 ;
gotoxy(column2,row1) ;
cout <<c2 ;
gotoxy(column1,row2) ;
cout <<c3 ;
gotoxy(column2,row2) ;

- 48 -
cout <<c4 ;
column1++ ;
column2-- ;
l_hor(column1,column2,row1,l1) ;
l_hor(column1,column2,row2,l1) ;
column1-- ;
column2++ ;
row1++ ;
row2-- ;
l_ver(row1,row2,column1,l2) ;
l_ver(row1,row2,column2,l2) ;
}

void control :: main_menu(void)


{
char ch ;
while (1)
{
clrscr() ;
shape s ;
s.box(10,5,71,21,219) ;
s.box(9,4,72,22,218) ;
textcolor(BLUE) ;
textbackground(WHITE) ;
gotoxy(32,7) ;
cprintf(" B A N K I N G ") ;
gotoxy(35,9) ;
cprintf(" OPTIONS ") ;
textcolor(GREEN) ;
textbackground(BLUE) ;
gotoxy(30,11) ;
cout <<"1: SEE ACCOUNT" ;
gotoxy(30,12) ;

- 49 -
cout <<"2: LIST OF ACCOUNTS" ;
gotoxy(30,13) ;
cout <<"3: TRANSACTIONS" ;
gotoxy(30,14) ;
cout <<"4: OPEN NEW ACCOUNT" ;
gotoxy(30,15) ;
cout <<"5: EDIT ACCOUNTS" ;
gotoxy(30,16) ;
cout <<"6: HELP" ;
gotoxy(30,17) ;
cout <<"0: QUIT" ;
gotoxy(30,19) ;
cout <<"Enter your choice: " ;
ch = getche() ;
if (ch == 27)
break ;
else
if (ch == '1')
{
account a ;
a.display_account() ;
}
else
if (ch == '2')
{
acc ini ;
ini.display_list() ;
}
else
if (ch == '3')
{
account a ;
a.transaction() ;

- 50 -
}
else
if (ch == '4')
{
account a ;
a.new_account() ;
}
else
if (ch == '5')
edit_menu() ;
else
if (ch == '6')
help() ;
else
if (ch == '0')
break ;
}

void control :: edit_menu(void)


{

char ch ;
while (1)
{
clrscr() ;
shape s ;
s.box(10,5,71,21,219) ;
s.box(9,4,72,22,218) ;
textcolor(BLUE) ;
textbackground(WHITE) ;
gotoxy(34,10) ;

- 51 -
cprintf(" EDIT MENU ") ;
textcolor(GREEN) ;

textbackground(BLUE) ;
gotoxy(31,12) ;
cout <<"1: MODIFY ACCOUNT" ;
gotoxy(31,13) ;
cout <<"2: CLOSE ACCOUNT" ;
gotoxy(31,14) ;
cout <<"0: QUIT" ;
gotoxy(31,16) ;
cout <<"Enter your choice: " ;
ch = getche() ;
if (ch == 27)
break ;
else
if (ch == '1')
{
acc ini ;
ini.modify() ;
break ;
}
else
if (ch == '2')
{
account a ;
a.close_account() ;
break ;
}
else
if (ch == '0')
break ;
}

- 52 -
}

void control :: help(void)


{
clrscr() ;
shape s ;

s.box(2,1,79,25,218) ;
s.box(25,2,54,4,219) ;
textcolor(GREEN) ;
gotoxy(27,3); cprintf("WELCOME TO
INDIAN BANK") ;
textcolor(GREEN) ;
delay(10) ;
gotoxy(10,6);
cout <<"This Bank can keep record of
daily banking" ;
delay(10) ;
gotoxy(10,7);
cout <<"transactions. " ;
delay(10) ;
gotoxy(10,9);
cout <<" This Bank is capable of holding
any no. of account." ;
delay(10) ;
gotoxy(10,11);
cout <<"- With OPTION-1 you can see
the account of a perticular" ;
delay(10) ;
gotoxy(10,12);
cout <<" person by giving simply
account no. of that person." ;
delay(10) ;

- 53 -
gotoxy(10,14);
cout <<"- With OPTION-2 you can see
the List of all the accounts." ;
delay(10) ;
gotoxy(10,16);
cout <<"- With OPTION-3 you can do
banking transactions" ;
delay(10) ;
gotoxy(10,17);
cout <<" (Deposit/Withdraw)." ;
delay(10) ;
gotoxy(10,19);
cout <<"- With OPTION-4 you can
Open New Account." ;
delay(10) ;
gotoxy(10,20);
cout <<" (NOTE: Opening amount
should not be less than Rs.500/-" ;
delay(10) ;
gotoxy(10,22);
cout <<"- With OPTION-5 you can
Modify or Delete any account." ;
delay(10) ;
gotoxy(10,24);
cout <<"- With OPTION-6 you can call
help. " ;
delay(10) ;

textcolor(BLUE+BLINK) ;
textbackground(WHITE) ;
gotoxy(26,25) ; cprintf(" Press any key to
continue ") ;

- 54 -
textcolor(GREEN) ; textbackground(BLUE)
;
gotoxy(25,2) ;
getch() ;
}

int acc :: last_accno(void)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int count=0 ;
while (file.read((char *) this,
sizeof(acc)))
count = accno ;
file.close() ;
return count ;
}

int acc :: recordno(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int count=0 ;
while (file.read((char *) this,
sizeof(acc)))
{
count++ ;
if (t_accno == accno)
break ;
}
file.close() ;

- 55 -
return count ;
}

void acc :: display(int t_accno)


{
shape s ;
s.box(8,7,73,11,219) ;
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
while (file.read((char *) this,
sizeof(acc)))
{
if (t_accno == accno)
{
gotoxy(8,5) ;
cout <<"ACCOUNT NO. " <<accno ;
gotoxy(10,8) ;
cout <<"Name : " <<name ;
gotoxy(10,9) ;
cout <<"Address : " <<address ;
gotoxy(10,10) ;
cout <<"Balance : " <<balance ;
break ;
}
}
file.close() ;
}

char *acc :: return_name(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;

- 56 -
file.seekg(0,ios::beg) ;

char t_name[30] ;
while (file.read((char *) this,
sizeof(acc)))
{
if (accno == t_accno)
{
strcpy(t_name,name) ;
break ;
}
}
file.close() ;
return t_name ;
}

char *acc :: return_address(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
char t_address[60] ;
while (file.read((char *) this,
sizeof(acc)))
{
if (accno == t_accno)
{
strcpy(t_address,address) ;
break ;
}
}
file.close() ;
return t_address ;

- 57 -
}

float acc :: give_balance(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
float t_balance ;
while (file.read((char *) this,
sizeof(acc)))
{
if (accno == t_accno)
{
t_balance = balance ;
break ;
}
}
file.close() ;
return t_balance ;
}

int acc :: found_account(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int found=0 ;
while (file.read((char *) this,
sizeof(acc)))
{
if (accno == t_accno)
{
found = 1 ;

- 58 -
break ;
}
}
file.close() ;
return found ;
}

void acc :: box_for_list()


{
shape s ;
s.box(2,1,79,25,218) ;
s.l_hor(3,78,3,196) ;
s.l_hor(3,78,5,196) ;
s.l_hor(3,78,23,196) ;
textbackground(WHITE) ;
gotoxy(3,4) ;
for (int i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE) ; textbackground(WHITE)
;
gotoxy(4,4) ;
cprintf("ACCOUNT NO. NAME
OF PERSON BALANCE");
textcolor(GREEN) ; textbackground(BLUE)
;
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
gotoxy(4,2) ;

- 59 -
cout <<"Date: " <<d1 <<"/" <<m1 <<"/"
<<y1 ;
}

void acc :: display_list(void)


{
clrscr() ;
box_for_list() ;
int row=6, flag ;
fstream file ;
file.open("ACC.DAT", ios::in) ;
while (file.read((char *) this,
sizeof(acc)))
{
flag = 0 ;
delay(10) ;
gotoxy(7,row) ;
cout <<accno ;
gotoxy(25,row) ;
cout <<name ;
gotoxy(57,row) ;
cout <<balance ;
row++ ;
if (row == 23)
{
flag = 1 ;
row = 6 ;
gotoxy(4,24) ;
cout <<"Press any key to
continue..." ;
getch() ;
clrscr() ;
box_for_list() ;

- 60 -
}
}
file.close() ;
if (!flag)
{
gotoxy(4,24) ;
cout <<"Press any key to continue..." ;
getch() ;
}
}

void acc :: add_to_file(int t_accno, char


t_name[30], char t_address[60], float
t_balance)
{
accno = t_accno ;
strcpy(name,t_name) ;
strcpy(address,t_address) ;
balance = t_balance ;
fstream file ;
file.open("ACC.DAT", ios::out | ios::app) ;
file.write((char *) this, sizeof(acc)) ;
file.close() ;
}

void acc :: delete_account(int t_accno)


{
fstream file ;
file.open("ACC.DAT", ios::in) ;
fstream temp ;
temp.open("temp.dat", ios::out) ;
file.seekg(0,ios::beg) ;
while ( !file.eof() )

- 61 -
{
file.read((char *) this, sizeof(acc)) ;
if ( file.eof() )
break ;
if ( accno != t_accno )
temp.write((char *) this,
sizeof(acc)) ;
}
file.close() ;
temp.close() ;
file.open("ACC.DAT", ios::out) ;
temp.open("temp.dat", ios::in) ;
temp.seekg(0,ios::beg) ;
while ( !temp.eof() )
{
temp.read((char *) this, sizeof(acc)) ;
if ( temp.eof() )
break ;
file.write((char *) this, sizeof(acc)) ;
}
file.close() ;
temp.close() ;
}

void acc :: update_balance(int t_accno, float


t_balance,int d1,int m1,int y1)
{
int recno ;
recno = recordno(t_accno) ;
fstream file ;
file.open("ACC.DAT", ios::out | ios::ate) ;
balance = t_balance ;
dd=d1;

- 62 -
mm=m1;
yy=y1;
int location ;
location = (recno-1) * sizeof(acc) ;
file.seekp(location) ;
file.write((char *) this, sizeof(acc)) ;
file.close() ;
}

void acc :: modify_account(int t_accno, char


t_name[30], char t_address[60])
{
int recno ;
recno = recordno(t_accno) ;
fstream file ;
file.open("ACC.DAT", ios::out | ios::ate) ;
if(strlen(t_name)==0)
strcpy(name,name) ;
else
strcpy(name,t_name);
if(strlen(t_address)==0)
strcpy(address,address);
else
strcpy(address,t_address);
int location ;
location = (recno-1) * sizeof(acc) ;
file.seekp(location) ;
file.write((char *) this, sizeof(acc)) ;
file.close() ;
}

void acc :: modify(void)


{

- 63 -
clrscr() ;
char t_acc[10] ;
int t, t_accno ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
gotoxy(5,5) ;
cout <<"Enter the account no. " ;
gets(t_acc) ;
t = atoi(t_acc) ;
t_accno = t ;
if (t_accno == 0)
return ;
clrscr() ;
if (!found_account(t_accno))
{
gotoxy(5,5) ;
cout <<"\7Account not found" ;
getch() ;
return ;
}
shape s ;
s.box(2,2,79,24,218) ;
s.l_hor(3,78,4,196) ;
s.l_hor(3,78,22,196) ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
textbackground(WHITE) ;
gotoxy(3,3) ;
for (int i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE+BLINK) ;
textbackground(WHITE) ;
gotoxy(30,3) ;

- 64 -
cprintf("MODIFY ACCOUNT SCREEN") ;
textcolor(GREEN) ;
textbackground(GREEN);
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
gotoxy(62,5) ;
cout <<"Date: "<<d1 <<"/" <<m1 <<"/"
<<y1 ;
char ch ;
display(t_accno) ;
account a ;
do
{
a.clear(5,13) ;
gotoxy(5,13) ;
cout <<"Modify this account (y/n): " ;
ch = getche() ;
if (ch == '0')
return ;
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;
if (ch == 'N')
return ;
int modified=0, valid ;
char t_name[30], t_address[60] ;
gotoxy(5,15) ;
cout <<"Name : " ;
gotoxy(5,16) ;

- 65 -
cout <<"Address : " ;
do
{
a.clear(15,15) ;
a.clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER NAME or PRESS
<ENTER> FOR NO CHANGE" ;
valid = 1 ;
gotoxy(15,15) ;
gets(t_name) ;
strupr(t_name) ;
if (t_name[0] == '0')
return ;
if (strlen(t_name) > 25)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7NAME SHOULD NOT
HAVE GREATER THAN 25 CHARACTERS")
;
getch() ;
}
} while (!valid) ;
if (strlen(t_name) > 0)
modified = 1 ;
do
{
a.clear(15,16) ;
a.clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER ADDRESS or
PRESS <ENTER> FOR NO CHANGE" ;

- 66 -
valid = 1 ;
gotoxy(15,16) ;
gets(t_address) ;
strupr(t_address) ;
if (t_address[0] == '0')
return ;
if (strlen(t_address) > 55)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7SHOULD NOT
BE BLANK OR GREATER THAN 50
CHARACTERS") ;
getch() ;
}
} while (!valid) ;
if (strlen(t_address) > 0)
modified = 1 ;
if (!modified)
return ;
a.clear(5,23) ;
do
{

a.clear(5,18) ;
gotoxy(5,18) ;
cout <<"Do you want to save
changes (y/n): " ;
ch = getche() ;
if (ch == '0')
return ;
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;

- 67 -
if (ch == 'N')
return ;
modify_account(t_accno,t_name,t_address)
;
gotoxy(5,21) ;
cout <<"\7Record Modified" ;
gotoxy(5,23) ;
cout <<"Press any key to continue..." ;
getch() ;
}

void account :: clear(int col, int row)


{
for (int i=col; i<=78; i++)
{
gotoxy(i,row) ;
cout <<" " ;
}
}

void account :: add_to_file(int t_accno, int d1,


int m1, int y1, char t_tran, char t_type[10],
float t_interest, float t_amount, float
t_balance)
{
fstream file ;
file.open("TRANSACT.DAT", ios::app) ;
accno = t_accno ;
dd = d1 ;
mm = m1 ;
yy = y1 ;
tran = t_tran ;
strcpy(type,t_type) ;

- 68 -
interest = t_interest ;
amount = t_amount ;
balance = t_balance ;
file.write((char *) this, sizeof(account)) ;
file.close() ;
}

void account :: delete_account(int t_accno)


{
fstream file ;
file.open("TRANSACT.DAT", ios::in) ;
fstream temp ;
temp.open("temp.dat", ios::out) ;
file.seekg(0,ios::beg) ;
while ( !file.eof() )
{
file.read((char *) this,
sizeof(account)) ;
if ( file.eof() )

break ;
if ( accno != t_accno )
temp.write((char *) this,
sizeof(account)) ;
}
file.close() ;
temp.close() ;
file.open("TRANSACT.DAT", ios::out) ;
temp.open("temp.dat", ios::in) ;
temp.seekg(0,ios::beg) ;
while ( !temp.eof() )
{

- 69 -
temp.read((char *) this,
sizeof(account)) ;
if ( temp.eof() )
break ;
file.write((char *) this,
sizeof(account)) ;
}
file.close() ;
temp.close() ;
}

void account :: new_account(void)


{
char ch ;
int i, valid ;
clrscr() ;
acc ini ;
shape s ;
s.box(2,2,79,24,218) ;
s.l_hor(3,78,4,196) ;
s.l_hor(3,78,22,196) ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
textbackground(WHITE) ;
gotoxy(3,3) ;
for (i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE+BLINK) ;
textbackground(WHITE) ;
gotoxy(32,3) ;
cprintf("OPEN NEW ACCOUNT") ;
textcolor(GREEN) ; textbackground(BLUE)
;

- 70 -
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
int t_accno ;
t_accno = ini.last_accno() ;
t_accno++ ;
if (t_accno == 1)
{

ini.add_to_file(t_accno,"abc","xyz",1.1) ;
ini.delete_account(t_accno) ;

add_to_file(t_accno,1,1,1997,'D',"INIT
IAL",1.1,1.1,1.1) ;
delete_account(t_accno) ;
}
char t_name[30], t[10], t_address[60] ;
float t_bal=0.0, t_balance=0.0 ;

gotoxy(5,6) ;
cout <<"Date : "<<d1 <<"/" <<m1 <<"/"
<<y1 ;
gotoxy(5,8) ;
cout <<"Account no. # " <<t_accno ;
gotoxy(5,10) ;
cout <<"Name : " ;
gotoxy(5,11) ;
cout <<"Address : " ;
gotoxy(5,12) ;

- 71 -
cout <<"Name of Verifying person : " ;
gotoxy(5,14) ;
cout <<"Initial Deposit : " ;
do
{
clear(15,10) ;
clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER NAME OF THE
PERSON" ;
valid = 1 ;
gotoxy(15,10) ;
gets(t_name) ;
strupr(t_name) ;
if (t_name[0] == '0')
return ;
if (strlen(t_name) == 0 ||
strlen(t_name) > 25)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7NAME SHOULD NOT
BE BLANK OR GREATER THAN 25
CHARACTERS") ;
getch() ;
}
} while (!valid) ;
do

{
clear(15,11) ;
clear(5,23) ;
gotoxy(5,23) ;

- 72 -
cout <<"ENTER ADDRESS OF
THE PERSON" ;
valid = 1 ;
gotoxy(15,11) ;
gets(t_address) ;
strupr(t_address) ;
if (t_address[0] == '0')
return ;
if (strlen(t_address) == 0 ||
strlen(t_address) > 55)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7SHOULD NOT
BE BLANK OR GREATER THAN 50
CHARACTERS") ;
getch() ;
}
} while (!valid) ;
do
{
char vari[30] ;
clear(31,12) ;
clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER NAME OF THE
VERIFYING PERSON" ;
valid = 1 ;
gotoxy(31,12) ;
gets(vari) ;
strupr(vari) ;
if (vari[0] == '0')
return ;

- 73 -
if (strlen(vari) == 0 || strlen(vari) >
25)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7SHOULD NOT
BE BLANK OR GREATER THAN 25
CHARACTERS") ;
getch() ;
}
} while (!valid) ;
do
{
clear(23,14) ;
clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER INITIAL AMOUNT
TO BE DEPOSITED" ;
valid = 1 ;
gotoxy(23,14) ;
gets(t) ;
t_bal = atof(t) ;
t_balance = t_bal ;
if (t[0] == '0')
return ;
if (t_balance < 500)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7SHOULD NOT
BE LESS THAN 500 RUPEES ") ;
getch() ;
}

- 74 -
} while (!valid) ;
clear(5,23) ;
do
{
clear(5,17) ;
valid = 1 ;
gotoxy(5,17) ;
cout <<"Do you want to save
the record (y/n) : " ;
ch = getche() ;
if (ch == '0')
return ;
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;
if (ch == 'N')
return ;
float t_amount, t_interest ;
t_amount = t_balance ;
t_interest = 0.0 ;
char t_tran, t_type[10] ;
t_tran = 'D' ;
strcpy(t_type,"INITIAL") ;
ini.add_to_file(t_accno,t_name,t_addre
ss,t_balance) ;
ini.update_balance(t_accno,t_balance,d1,m
1,y1);
add_to_file(t_accno,d1,m1,y1,t_tran,t_type
,t_interest,t_amount,t_balance) ;
}

void account :: box_for_display(int t_accno)


{
shape s ;

- 75 -
s.box(2,1,79,25,218) ;
s.l_hor(3,78,4,196) ;
s.l_hor(3,78,6,196) ;
s.l_hor(3,78,23,196) ;
textbackground(WHITE) ;
gotoxy(3,5) ;
for (int i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE) ; textbackground(WHITE)
;
gotoxy(4,5) ;
cprintf("DATE PARTICULAR
DEPOSIT WITHDRAW INTEREST
BALANCE") ;
textcolor(GREEN) ; textbackground(BLUE)
;
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
gotoxy(63,2) ;
cout <<"Date: " <<d1 <<"/" <<m1 <<"/"
<<y1 ;
gotoxy(4,2) ;
cout <<"Account no. " <<t_accno ;
acc ini ;
char t_name[30] ;
strcpy(t_name,ini.return_name(t_accno)) ;
char t_address[60] ;
strcpy(t_address,ini.return_address(t_accn
o)) ;

- 76 -
gotoxy(25,2) ;
cout <<t_name ;
gotoxy(25,3) ;
cout <<t_address ;
}

void account :: display_account(void)


{
clrscr() ;
char t_acc[10] ;
int t, t_accno ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
gotoxy(5,5) ;
cout <<"Enter the account no. " ;
gets(t_acc) ;
t = atoi(t_acc) ;
t_accno = t ;
if (t_accno == 0)
return ;
clrscr() ;
acc ini ;
if (!ini.found_account(t_accno))
{
gotoxy(5,5) ;
cout <<"\7Account not found" ;
getch() ;
return ;
}
box_for_display(t_accno) ;
int row=7, flag ;
fstream file ;
file.open("TRANSACT.DAT", ios::in) ;

- 77 -
while (file.read((char *) this,
sizeof(account)))
{
if (accno == t_accno)

{
flag = 0 ;
delay(10) ;
gotoxy(4,row) ;
cout <<dd <<"/" <<mm <<"/" <<yy
;
gotoxy(16,row) ;
cout <<type ;
if (tran == 'D')
gotoxy(30,row) ;
else
gotoxy(42,row) ;
cout <<amount ;
gotoxy(56,row) ;
printf("%.2f",interest);//DONE BY
US
gotoxy(66,row) ;
printf("%.2f",balance);//DONE BY
US
row++ ;
if (row == 23)
{
flag = 1 ;
row = 7 ;
gotoxy(4,24) ;
cout <<"Press
any key to continue..." ;
getch() ;

- 78 -
clrscr() ;
box_for_display(t_accno) ;
}
}
}
file.close() ;
if (!flag)
{
gotoxy(4,24) ;
cout <<"Press any key to continue..." ;
getch() ;
}
}

int account :: no_of_days(int d1, int m1, int


y1, int d2, int m2, int y2)
{
static int month[] =
{31,28,31,30,31,30,31,31,30,31,30,31} ;
int days = 0 ;
while (d1 != d2 || m1 != m2 || y1 != y2)
{
days++ ;
d1++ ;
if (d1 > month[m1-1])
{
d1 = 1 ;
m1++ ;
}
if (m1 > 12)
{
m1 = 1 ;
y1++ ;

- 79 -
}
}
return days ;
}

float acc :: calculate_interest(int t_accno,


float t_balance)
{
account ini;
fstream file ;
file.open("ACC.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int d1, m1, y1, days ;
while (file.read((char *) this,
sizeof(acc)))
{
if (accno == t_accno)
{
d1 = dd ;
m1 = mm ;
y1 = yy ;
break ;
}
}
int d2, m2, y2 ;
struct date d;
getdate(&d);
d2 = d.da_day ;
m2 = d.da_mon ;
y2 = d.da_year ;
float t_interest=0.0 ;
if ((y2<y1) || (y2==y1 && m2<m1) ||
(y2==y1 && m2==m1 && d2<d1)/*done by

- 80 -
us*/ || (y2==y1 && m2==m1 &&
d2==d1))/**/
return t_interest ;
days = ini.no_of_days(d1,m1,y1,d2,m2,y2)
;
int months=0 ;
if (days >= 30)
{
months = days/30 ;
t_interest = ((t_balance*2)/100) *
months ;
}
file.close() ;
return t_interest ;
}

void account :: transaction(void)


{
clrscr() ;
char t_acc[10] ;
int t, t_accno, valid ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
gotoxy(5,5) ;
cout <<"Enter the account no. " ;
gets(t_acc) ;
t = atoi(t_acc) ;
t_accno = t ;
if (t_accno == 0)
return ;
clrscr() ;
acc ini ;
if (!ini.found_account(t_accno))

- 81 -
{
gotoxy(5,5) ;
cout <<"\7Account not found" ;
getch() ;
return ;
}
shape s ;
s.box(2,2,79,24,218) ;
s.l_hor(3,78,4,196) ;
s.l_hor(3,78,22,196) ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
textbackground(WHITE) ;
gotoxy(3,3) ;
for (int i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE+BLINK) ;
textbackground(WHITE) ;
gotoxy(29,3) ;
cprintf("TRANSACTION IN ACCOUNT") ;
textcolor(GREEN) ; textbackground(BLUE)
;
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
gotoxy(5,6) ;
cout <<"Date : "<<d1 <<"/" <<m1 <<"/"
<<y1 ;
gotoxy(5,8) ;
cout <<"Account no. # " <<t_accno ;

- 82 -
char t_name[30] ;
char t_address[60] ;
float t_balance ;
strcpy(t_name,ini.return_name(t_accno)) ;
strcpy(t_address,ini.return_address(t_a
ccno)) ;
t_balance = ini.give_balance(t_accno) ;
s.box(25,10,75,13,218) ;
gotoxy(27,11) ;
cout <<"Name : " <<t_name ;
gotoxy(27,12) ;
cout <<"Address: " <<t_address ;
gotoxy(5,15) ;
cout <<"Last Balance : Rs." <<t_balance ;
char t_tran, t_type[10], tm[10] ;
float t_amount, t_amt ;
do
{
clear(5,18) ;
valid = 1 ;
gotoxy(5,18) ;
cout <<"Deposit or Withdraw (D/W) : "
;
t_tran = getche() ;
if (t_tran == '0')
return ;
t_tran = toupper(t_tran) ;
} while (t_tran != 'D' && t_tran != 'W') ;
do
{
clear(5,19) ;
clear(5,23) ;
gotoxy(5,23) ;

- 83 -
cout <<"ENTER TRANSACTION
BY CASH OR CHEQUE" ;
valid = 1 ;
gotoxy(5,19) ;
cout <<"(Cash/Cheque) : " ;
gets(t_type) ;
strupr(t_type) ;
if (t_type[0] == '0')
return ;
if (strcmp(t_type,"CASH") &&
strcmp(t_type,"CHEQUE"))
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7ENTER
CORRECTLY ") ;
getch() ;
}
} while (!valid) ;
do
{
clear(5,21) ;
clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER AMOUNT FOR
TRANSACTION" ;
valid = 1 ;
gotoxy(5,21) ;
cout <<"Amount : Rs." ;
gets(tm) ;
t_amt = atof(tm) ;
t_amount = t_amt ;
if (tm[0] == '0')

- 84 -
return ;
if ((t_tran == 'W' && t_amount >
t_balance) || (t_amount < 1))
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7INVALID
DATA ENTERED ") ;
getch() ;
}
} while (!valid) ;
char ch ;
clear(5,23) ;
do
{
clear(40,20) ;
valid = 1 ;
gotoxy(40,20) ;
cout <<"Save transaction (y/n): " ;
ch = getche() ;
if (ch == '0')
return ;
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;
if (ch == 'N')
return ;
float t_interest=0.00 ;
t_interest =
ini.calculate_interest(t_accno,t_balance) ;
if (t_tran == 'D')
t_balance = t_balance + t_amount +
t_interest;
else

- 85 -
t_balance = (t_balance - t_amount) +
t_interest;
ini.update_balance(t_accno,t_balance,d1,m
1,y1) ;
add_to_file(t_accno,d1,m1,y1,t_tran,t_type
,t_interest,t_amount,t_balance) ;
}

void account :: close_account(void)


{
clrscr() ;
char t_acc[10] ;
int t, t_accno ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
gotoxy(5,5) ;
cout <<"Enter the account no. " ;
gets(t_acc) ;
t = atoi(t_acc) ;
t_accno = t ;
if (t_accno == 0)
return ;
clrscr() ;
acc ini ;
if (!ini.found_account(t_accno))
{
gotoxy(5,5) ;
cout <<"\7Account not found" ;
getch() ;
return ;
}
shape s ;
s.box(2,2,79,24,218) ;

- 86 -
s.l_hor(3,78,4,196) ;
s.l_hor(3,78,22,196) ;
gotoxy(71,1) ;
cout <<"<0>=Exit" ;
textbackground(WHITE) ;
gotoxy(3,3) ;
for (int i=1; i<=76; i++) cprintf(" ") ;
textbackground(BLUE) ;
textcolor(BLUE+BLINK) ;
textbackground(WHITE) ;
gotoxy(30,3) ;
cprintf("CLOSE ACCOUNT SCREEN") ;
textcolor(GREEN) ; textbackground(BLUE)
;
int d1, m1, y1 ;
struct date d;
getdate(&d);
d1 = d.da_day ;
m1 = d.da_mon ;
y1 = d.da_year ;
gotoxy(62,5) ;
cout <<"Date: "<<d1 <<"/" <<m1 <<"/"
<<y1 ;
char ch ;
ini.display(t_accno) ;
do
{
clear(5,15) ;
gotoxy(5,15) ;
cout <<"Close this account (y/n): " ;
ch = getche() ;
if (ch == '0')
return ;

- 87 -
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;
if (ch == 'N')
return ;
ini.delete_account(t_accno) ;
delete_account(t_accno) ;
gotoxy(5,20) ;
cout <<"\7Record Deleted" ;
gotoxy(5,23) ;
cout <<"Press any key to continue..." ;
getch() ;
}

void main(void)
{

control c ;
c.help() ;
c.main_menu() ;
}

- 88 -
OUT PUT SOURCING/SCREENSHOTS

- 89 -
- 90 -
- 91 -
- 92 -
- 93 -
- 94 -
- 95 -
- 96 -
- 97 -
- 98 -
IMPLEMENTATION

A crucial phase in the system life cycle is the successful implementation of the new

system design. Implementation simply means converting a new system design into

operation. This involves creating computer compatible files, training the operating

staff and installing hardware terminals, and telecommunication network before the

system is up and running.

In system implementation, user training is crucial for minimizing resistance to change

and giving the new system a chance to prove its worth. Training aids such as user-

friendly manuals, a data dictionary and job performance aids that communicate

information about the new system and help screens. Provide the user with a good start

on the new system.

USER MANUAL

Installation

How to use

Installation:- Banking project can easily be installed on to your system.

To install do the following steps

1. Insert floppy disk into floppy drive.

2. Copy "Project" folder from there and paste it to C Drive.

3. A file banking.exe is present in Project folder.

- 99 -
Now Banking project has installed onto your system.

To use banking project double click on banking.exe.

How to use:-

ACCOUNT

If you want to show an information pertaining to account then enter the account no.

CUSTOMER

Of you want to add an information pertaining to customer then choose 4th option

OPEN NEW A/C and then enter CUSTOMER INFORMATION.

If you want to modify an information pertaining to customer then choose the 5th

option EDIT ACCOUNT and then choose 1st option & enter modify

CUSTOMER INFORMATION.

If you want to delete an information pertaining to customer then choose the 5th

option EDIT ACCOUNT and then choose 2nd option & delete CUSTOMER

INFORMATION.

TRANSACTIONS

If you want to deposit/withdraw amount(cash/cheque) choose the 3rd option

TRANSACTION and then make a transaction.

- 100 -
HELP

In case you face any problem regarding operating BANKING PROJECT. At the

running time. Then you can use BANKING PROJECT HELP. For using HELP

choose HELP from the main menu.

- 101 -
- 102 -
SYSTEM MAINTENANCE

Maintenance is the enigma of system development. It holds the software industry

captive, tying up programming resources. Analyst and programmers Spend far more

time in maintaining programs than writing them.

Primary activities of a maintenance procedure

Maintenance activities begin where conversion leaves off. Maintenance is handled by

same planning and control used in a formal system project. Documentation is as much

a part of maintenance as it is of system development. The source program and written

procedures for the system are acquired from the programming banking. Program

changes are then tested and submitted to the user for approval. Once ap0roved, the

modified documentation is filed with the banking management and a project

completion notice is sent to the user, signaling the termination of the project.

BACKUP & RECOVERY

In case of system crash a user may lose all his/her valuable data. To cope with this

problem backup option is given in this system.

This system provides the facility of backup and recovery. Only an administrator can

take the backup and can recover all the files.

To utilize this facility user must have floppy drive on his or her system.

- 103 -
LIMITATIONS

In this world every thing has its own limitations. And limitation in a project is quite

obvious. Even famous software's and operating systems have its own limitations. For

example win 3x does not support USB port. So it's a limitation of win3x that it does

not support USB port.

Due to shortage of time this project has some limitation.

Some of them are as follows:

In this project a book code cannot be more than 30,000. So it's a limitation of this

project that this system cannot maintain more than 30000 books.

Same with member, a member number cannot be more than 30000.

No checks have been made in relation to the entry of duplicate records in book

section. This limitation is also present in the function when we create new

members.

And there are some other limitations, which will be faced by USER when he/she

will use this project.

- 104 -
REFERENCES

For the successful completion of this project I referred few books.

I referred M.AWAD for creating ship diagram. Data flow diagram, structure chart etc.

I referred Ashok N. Kamthane while designing the interface of this project.

I also got information form Balagurusamy, Robert Lafore and Yashavant

Kanetkar.

- 105 -