Bank Management System C++ 128P
Bank Management System C++ 128P
A PROJECT REPORT
ON
BANK MANAGEMENT
SYSTEM C++
Page: 3
Reg. No:-
.
(PROJECT CO-ORDINATOR)
Page: 4
Reg. No:-
Index
Certificate
Acknowledgment
1. Introduction
-objective & Goal
2. Project Initiation
3. SDLC
3.1 System Analysis
-Problem in the Current system
-Feature of the proposed system
-Feasibility Study
-Gantt Chart
-Methodology used
-Hardware & Software Requirements
3.2 Design
-ER Diagram
-DFD
-Structure chart
- Data Dictionary
3.3Source code
3.4Testing
- Input & Output Screens
Page: 5
Reg. No:-
3.5Implementation
- User Manual
3.6Maintenance
4. Limitations
5. References
6. Suggestions
Page: 6
Reg. No:-
CERTIFICATE
This is to certify that .. Institute assigned Mr.
, Registration Number-
the project BANKING. He has submitted this project report in
accordance with the third year syllabi requirements of Bachelor
of Computer Application by .., Amritsar for the
academic year 2007-2008.
(Project Guide)
Page: 7
Reg. No:-
ACKNOWLEGEMENT
I consider it a privilege to express through the pages of this report,
a few words of gratitude and respect to all those guided and
inspired in the completion of the project.
It was a pleasure working at the library of our college. I found the
library to be very useful. I m thankful to the librarian for allowing
me to access the facilities available.
I m deeply indebted to our guide
who
constantly encouraged me and I tender my utmost gratitude and
appreciation for the her invaluable guidance and suggestions. I m
also thankful to our program director respected
for providing such an excellent teacher and a well organized
laboratory.
I wish to express my indebtedness to the rest of the staff of the
organization for their help and encouragement. Their untiring
enthusiasm and zeal has always inspired me in my project.
Last but not the least I m thankful to my parents who were and
always be a guiding spirit for all the efforts I do for my studies. All
the good word, in which I may express my feelings, are less to
thank them. Please pardon me, if by mistaken I have forgotten to
thank someone for the support in his/her support to this project.
Page: 8
Reg. No:-
INTRODUCTION
This software will be provided as a tool to the INDIAN BANK.
The
BANK
has
been
working
for
Accounts
information
Page: 9
Reg. No:-
Page: 10
Reg. No:-
PROJECT INIATION
1.1
1.2
1.3
a.
b.
Actors
Environmental constraints
c.
DEFINITON
d.
Requirement Analysis
Using:
Interviews
Surveys
Direct observation
Output to be produced
FROM PEOPLE
Stimulates enthusiasm
Page: 13
Reg. No:-
Incomplete
Inaccurate
Not clear
Incorrect emphasis
III.
Reg. No:-
Prototype: Combination
of HW & SW
IV.
1.3
Project Justification
Analyst prepares alternative systems and decides
which to propose by doing COST/BENEFIT
analysis.
Page: 15
Reg. No:-
Page: 16
Reg. No:-
Page: 17
Reg. No:-
Phases of SDLC
1
System Analysis
System Design
Coding
System Testing
System Implementation
System Maintenance
Page: 18
Reg. No:-
Page: 19
Reg. No:-
Page: 20
Reg. No:-
FEASIBILITY STUDY
Page: 22
Reg. No:-
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
1) ECONOMIC FEASIBILITY
Economic analysis is the most frequently used technique for
evaluating the effectiveness of
commonly known s cost/benefit
Page: 24
Reg. No:-
Page: 25
Reg. No:-
Page: 26
Reg. No:-
3.
4.
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.
Reg. No:-
Page: 28
Reg. No:-
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.
The various advantage of using DOS executable software is as
follows:
Reg. No:-
Page: 30
Reg. No:-
Plan
Technical Feasibility
Page: 31
Reg. No:-
Operational Feasibility
Page: 32
Reg. No:-
Page: 33
Reg. No:-
SYSTEM
FEASIBILITY
PROJECT
PLANNING
VALIDATION
VALIDATION
DETAIL DESIGN
VERIFICATION
VERIFICATION
CODING
OPERATION
VERIFICATION
INSTALLATION
Reg. No:-
VERIFICATION
VERIFICATION
Page: 34
TESTING AND
INTEGRATION
VERIFICATION
ii.
iii.
iv.
RAM 64 MB
v.
Software Used:-
Page: 35
Reg. No:-
Page: 36
Reg. No:-
Name
Balanc
e
A/c
no.
Page: 37
Reg. No:-
Add
Opening
Date
USER
CREAT
E
CUSTOMER
USER /
ADMINISTRATOR
Grant access
Request for a/c details
Reports
BANKING
PROJECT
Page: 38
Reg. No:-
Grant super
User access
USER /
ADMINISTRATOR
INITIAL.DAT
USER /
ADMINISTRATOR
VERIFY
A/c
NUMBER
If
ok
Page: 39
Reg. No:-
ACCEPT
CHOICE
SHOW
CUSTOMER
DETAIL
Page: 40
Reg. No:-
INTIAL.DAT
USER /
ADMINISTRATOR
PROCESSING
ACCEPT CHOICE
FORM
USER
OR
ADMINISTRATOR
7
QUIT
1
SEE
A/CS
2
LIST
OF A/C
3
TRANSA
CTION
4
OPEN
NEW
A/C
6
HELP
5
EDIT A/C
Page: 41
Reg. No:-
1. SEE ACCOUNT
ESC
USER /
ADMINISTRATOR
1.1
ACCEPT
CHOICE
1.1.2
ACCEPT
CHOICE
1.1.2.1
ACCEPT
CHOICE
INTIAL.DAT
Page: 42
2.LIST FO ACCOUNTS
ESC
USER /
ADMINISTRATOR
2.1
ACCEPT
CHOICE
2.1.1
DISPLAY
ALL
ACCOUNT
INTIAL .DAT
Page: 43
3.TRANSACTIONS
3.1
ACCEPT
CHOICE
USER /
ADMINISTRATOR
3.1.1
ENTER
A/C NO.
3.2.1.1
DEPOSIT
OR
WITHDRAW
3.1.1.1.1
CASH
/CHEQUE
3.1.1.1.2
CASH/CHE
QUE
Page: 44
3.1.1.1.2
CASH/CHE
QUE
USER /
ADMINISTRATOR
4.1.1
NAME
4.1.2
ADDRES
S
3.1.1.1.2
CASH/C
HEQUE
4.1.4
INTIAL
DEPOSI
T
BANKING.DAT
Page: 45
5.EDIT ACCOUNT
5.1
ACCEPT
CHOICE
USER /
ADMINISTRATOR
5.1.1
MODIFY
A/C
5.1.2
CLOSE
A/C
5.I.1.1
MODIFY
A/C
5.1.1.1.1
MODIFY
NAME
5.1.3
QUIT
5.1.2.1
ENTER
A/C NO.
5.1.1.1.2
MODIFY
ADDRES
S
5.1.2.1.1
DELETE
RECORD
BANKING.DAT
Page: 46
6.HELP
ESC
5.1.2.1
ENTER
A/C NO.
USER /
ADMINISTRATOR
6.1.1
HELP
ABOUT
A/C NO.
6.1.1
HELP
ABOUT
LIST OF
A/C.
6.1.1
HELP
ABOUT
TRANS.
6.1.1
HELP
ABOUT
NEW
A/C
6.1.1
HELP
ABOUT
MODIFY
Page: 47
STRUCTURE CHART
BANKING MANAGEMENT
1
QUIT
1.7
SEE ACCOUNT
I.1
TRANSACTION
1.3
EDIT
1.5
HELP
1.6
Page: 48
SEE ACCOUNT
I.1
DISPLAY A/C
INFORMATION
1.1.1.1
Page: 49
LIST OF ACCOUNT
1.2
Page: 50
TRANSACTION
1.3
ENTER A/C NO
1.3.1
DEPOSIT
1.3.1.1
CASH
1.3.1.1.1
WITHDRAW
1.3.1.2.2
CHEQUE
1.3.1.1.2
CASH
1.3.1.2.2
CHEQUE
1.3.1.2.2
Page: 51
OPEN NEW
ACCOUNT
1.4
NAME
1.4.1
ADDRESS
1.4.2
VERIFYING
PERSON
1.4.3
INTIAL
DEPOSIT
1.4.4
Page: 52
EDIT ACCOUNT
1.5
MODIFY A/C
1.5.1
CLOSE A/C
1.5.2
ENTER A/C NO
1.5.2.1
MODIFY
NAME
1.5.1.1.1
MODIFY
ADDRESS
1.5.1.1.2
QUIT
1.5.3
DELETE A/C
1.5.2.1.1
Page: 53
HELP
1.6
ABOUT A/C
1.6.1
ABOUT ALL
A/C
1.6.2
ABOUT
TRANSACTION
1.6.3
ABOUT NEW
A/C
1.6.4
ABOUT
MODIFY A/C
1.6.5
Page: 54
DATA DICTIONARY
Page: 55
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
Page: 56
Variable name
Acc no
Name
Address
Balance
Data type
Integer variable
Array of char
Array of char
Float variable
Size
2
30
60
1
Information Stored
Account no
Name of the customer
Add of the customer
balance
Page: 57
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
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.
Page: 58
Variable name
Data type
Acc no
Integer variable
Type
Character
dd ,mmm ,yy
Tran
Interest
Amount
Balance
variable
Integer variable
Character array
Float variable
Float variable
Float variable
Size
2
10
Information
stored
Account number
Type of the withdrawal
2
1
2
2
2
Date
Deposit or withdrawal
Interest
Amount
Balance
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
Page: 60
#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
Page: 62
{
public :
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
char t_address[60]) ;
void
int
char
box_for_list(void) ;
accno ;
name[30], address[60] ;
float balance ;
int dd, mm, yy;
} ;
Page: 63
class account
{
public: void new_account(void) ;
void close_account(void) ;
void display_account(void) ;
int
void transaction(void) ;
void clear(int,int) ;
private:
void
delete_account(int) ;
void
display(int) ;
void
box_for_display(int) ;
int
char
int
char
accno ;
type[10] ;
dd, mm, yy ;
tran ;
cout <<c ;
}
}
void shape :: l_ver(int row1, int row2, int column,
char c)
{
for (row1; row1<=row2; row1++ )
gotoxy(column,row1) ;
cout <<c ;
}
}
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 ;
Page: 65
}
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) ;
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) ;
Page: 66
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) ;
cout <<"2: LIST OF ACCOUNTS" ;
gotoxy(30,13) ;
cout <<"3: TRANSACTIONS" ;
gotoxy(30,14) ;
Page: 67
account a ;
a.transaction() ;
}
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)
Page: 69
{
clrscr() ;
shape s ;
s.box(10,5,71,21,219) ;
s.box(9,4,72,22,218) ;
textcolor(BLUE) ;
textbackground(WHITE) ;
gotoxy(34,10) ;
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 ;
Page: 70
ini.modify() ;
break ;
}
else
if (ch == '2')
{
account a ;
a.close_account() ;
break ;
}
else
if (ch == '0')
break ;
}
}
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) ;
Page: 71
delay(10) ;
gotoxy(10,6);
cout <<"This Bank can keep
daily
record
of
banking" ;
delay(10) ;
gotoxy(10,7);
cout <<"transactions.
" ;
delay(10) ;
gotoxy(10,9);
cout <<"
no. of
account." ;
delay(10) ;
gotoxy(10,11);
cout <<"- With OPTION-1 you can see the
account of
perticular" ;
delay(10) ;
gotoxy(10,12);
cout <<"
delay(10) ;
gotoxy(10,17);
cout <<"
(Deposit/Withdraw)." ;
delay(10) ;
gotoxy(10,19);
cout <<"- With OPTION-4
New Account." ;
delay(10) ;
gotoxy(10,20);
cout <<"
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 ;
}
Page: 74
file.close() ;
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() ;
Page: 75
}
char *acc :: return_name(int t_accno)
{
fstream file ;
file.open("ACC.DAT", ios::in) ;
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] ;
Page: 76
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 ;
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) ;
Page: 78
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.
PERSON
NAME OF
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) ;
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) ;
Page: 79
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() )
{
file.read((char *) this, sizeof(acc)) ;
Page: 81
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 ;
Page: 82
int location ;
location = (recno-1) * sizeof(acc) ;
file.seekp(location) ;
file.write((char *) this, sizeof(acc)) ;
file.close() ;
}
void acc :: modify(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() ;
if (!found_account(t_accno))
{
gotoxy(5,5) ;
cout <<"\7Account not found" ;
getch() ;
Page: 84
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) ;
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) ;
Page: 85
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) ;
cout <<"Address : " ;
do
{
a.clear(15,15) ;
a.clear(5,23) ;
gotoxy(5,23) ;
cout <<"ENTER NAME or PRESS
<ENTER> FOR NO CHANGE" ;
Page: 86
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
H AVE GREATER TH AN 25 CH ARACTERS " ) ;
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" ;
valid = 1 ;
gotoxy(15,16) ;
gets(t_address) ;
Page: 87
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')
Page: 88
return ;
ch = toupper(ch) ;
} while (ch != 'N' && ch != 'Y') ;
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 ;
Page: 89
file.open("TRANSACT.DAT", ios::app) ;
accno = t_accno ;
dd = d1 ;
mm = m1 ;
yy = y1 ;
tran = t_tran ;
strcpy(type,t_type) ;
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 ;
Page: 90
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() )
{
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 ;
Page: 91
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) ;
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)
{
Page: 92
ini.add_to_file(t_accno,"abc","xyz",1.1) ;
ini.delete_account(t_accno) ;
add_to_file(t_accno,1,1,1997,'D',"INITIAL",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) ;
cout <<"Name of Verifying person : " ;
gotoxy(5,14) ;
cout <<"Initial Deposit : " ;
do
{
clear(15,10) ;
clear(5,23) ;
Page: 93
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) ;
cout <<"ENTER ADDRESS OF THE
PERSON" ;
Page: 94
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) ;
Page: 95
gets(vari) ;
strupr(vari) ;
if (vari[0] == '0')
return ;
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')
Page: 96
return ;
if (t_balance < 500)
{
valid = 0 ;
gotoxy(5,23) ;
cprintf("\7SHOULD NOT BE
LESS THAN 500
RUPEES ") ;
getch() ;
}
} 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 ;
Page: 97
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_address,t_bal
ance) ;
ini.update_balance(t_accno,t_balance,d1,m1,y1);
add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_inter
est,t_amount,t_balance) ;
}
void account :: box_for_display(int t_accno)
{
shape s ;
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) ;
Page: 98
cprintf("DATE
DEPOSIT
WITHDRAW
PARTICULAR
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_accno)) ;
gotoxy(25,2) ;
cout <<t_name ;
gotoxy(25,3) ;
cout <<t_address ;
}
void account :: display_account(void)
{
Page: 99
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) ;
while (file.read((char *) this,
sizeof(account)))
Page: 100
{
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..." ;
Page: 101
getch() ;
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])
{
Page: 102
d1 = 1 ;
m1++ ;
}
if (m1 > 12)
{
m1 = 1 ;
y1++ ;
}
}
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 ;
Page: 103
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 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)
{
Page: 104
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))
{
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" ;
Page: 105
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 ;
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_accno)) ;
t_balance = ini.give_balance(t_accno) ;
s.box(25,10,75,13,218) ;
Page: 106
gotoxy(27,11) ;
cout <<"Name
: " <<t_name ;
gotoxy(27,12) ;
cout <<"Address: " <<t_address ;
gotoxy(5,15) ;
cout <<"Last Balance : Rs." <<t_balance ;
char
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) ;
Page: 108
t_amt = atof(tm) ;
t_amount = t_amt ;
if (tm[0] == '0')
return ;
if ((t_tran == 'W' && t_amount >
t_balance) || (t_amount < 1))
{
valid = 0 ;
gotoxy(5,23) ;
c p r i n t f ( " \ 7 I N VAL I D D ATA
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') ;
Page: 109
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
t_balance = (t_balance - t_amount) +
t_interest;
ini.update_balance(t_accno,t_balance,d1,m1,y1)
;
add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_inter
est,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. " ;
Page: 110
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) ;
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) ;
Page: 111
Page: 113
Page: 114
Page: 115
Page: 116
Page: 117
Page: 118
Page: 119
Page: 120
Page: 121
Page: 122
Page: 123
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
Page: 124
Installation
How to use
ACCOUNT
Page: 126
HELP
Page: 127
SYSTEM MAINTENANCE
Page: 128
Page: 129
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.
Page: 130
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.
Page: 131
REFERENCES
Page: 132