Anda di halaman 1dari 69

SUMMER TRAINING REPORT

ON

BANKING MANAGEMENT

Submitted in partial fulfilment of the requirement for the


Award of degree

SUBMITTED BY:
PRIYANKA MUNJAL
B.Tech FINAL YEAR
(Computer Science )

HARYANA ENGINEERING COLLEGE

(JAGADHRI)
(Software to manage all the data regarding
banking )

Technology used:-

‘C++’

2
Abstract

I am the students of Haryana Engineering College, Jagadhri and studying


in CSE 7th semester. As a part of four year degree course we have
undergone a project as a work on “Manage – All” to facilitate them with
automated software besides the error prone manual work.

Present is the age of computers and technology. Practical knowledge has


its own importance. Without practical knowledge one can not be
specialized in one’s field. We have automated the practical knowledge of
institutes and their work in the project.

The technology used in this project is C++. This report provides the
knowledge regarding the platform used in the project.

In this project, we have tried best to incorporate the knowledge we have


about this department.

3
4
ACKNOWLEDGEMENT

To matter what accomplishment we achieve somebody helps me. For


every accomplishment we need the cooperation and help of others. As
knowledge advances by steps not by leaps so, ability advances by
encouragement and guidance. Although you have ability and knowledge
but it is worthless unless and until you can develop it if somebody
encourages you.

While developing the project, I have learnt a lot. Firstly I got the
explosure to the industry. We got to learn the work culture of a company.
This will be an unforgetful experience. While developing this project, a
lot of difficulties were faced by me. But it was the help of some special
people that I have gained much confidence and developed the project
quite well. Hereby, I shall like to thank all the employees of NIC to
coordinate with me and provide me the information needed to complete
the analysis part of this project. I shall like to thank everyone who in
anyway helped me in this project.

My heartiest thanks to Mr. Hari Chand , Training Coordinate Officer,


NIC Chandigarh who helped me in providing the required infrastructure,
good work culture, make me learn a lot of new things, guiding me
throughout the project and for providing me such a golden opportunity to
experience the work culture before actually working for a company.

At last I am greatly thankful to the lectures of HARYANA


ENGINEERING COLLEGE (JAGADHRI) whose inspiration &
teaching are strong tool for completion of this training.

Priyanka Munjal

5
6
TABLE OF CONTENTS

Part- 1 ORGANIZATIONAL PROFILE & INTRODUCTION

Chapter 1 :- Organizational Profile


1.1 Organization Setup
1.2 NIC, Chandigarh
1.3 NIC Services

Part- 2 INTRODUCTION TO PROJECT

Chapter 2 :- Overview of Project


2.1 Objectives of the Software
2.2 Problem Listings

Part- 3 INITIAL STUDY

Chapter 3 :- Initial Study


3.1 Introduction
3.2 Technology used in the project
3.2.1 C++ Description
3.3 C++ Glossary

Part- 4 CODING

Chapter 4:- Coding used in the project

Part- 5 BIBLIOGRAPHY

Chapter 5 :- Biblography

7
8
NATIONAL INFORMATIC CENTER (NIC) : A Profile

Organization Setup

The organizational set up of NIC encompasses its headquaters at New Delhi State
units in all the 29 State Capitals and 6 Union Territory Headquaters, and District
centers of India. The Organization employs a large pool of efficient technical
manpower. At the NIC Headquaters, a large number of Application Divisions exit
which provide total Informatics Support to the Ministeries and Departments of the
Central Government. NIC software is a leading technology company with the global
out reach specializing in providing top solutions for all category users. Their strong
commitment towards quality has secured us a privileged position in a fast evolving
market, the key advantage being a state of art of product based on cutting edge
technologies.
The company delivers a full service offerings that helps numerous customers achieve
maximum return on their investment through dedicated software experts, management
tools and product selection consultation on business critical soft wares, including
desktop, storage, security infrastructure and data management.

Company History

NIC was founded in 1988 and is Government owned. Since its first day of Business,
NIC has required no financial Banking or assistance the company has been self
sufficient and profitable in all years of operation.
The training Coordinator of company are Mr. Hari Chand who are highly educated
and each having 9 to 10 years of experience in this industry. The company mission
and culture has reminded constant over the years.

Goal

The goal of NIC is to be responsive to its users and provide them with software
solution to assist them in being more efficient and productive in their work.
The company plans on continually improving software to help its clients take
advantage new technology.

9
The company

Founded in 1988, NIC is headquartered in Chandigarh, India. The activity is


focused on the following major activity axes:
Software Development
Networking consultancy
Project Management
Software Export

The Company is
 Producing, developing and internationally distributing high quality
software products.
 Providing integrated solutions for data security and reliable services in
files like software distribution, consultancy and technical support.
 Providing solutions in banking, healthcare, insurance and publishing
industry.

The People
The people are their key strength. They pick and nurture the best to create an
awesome base of expertise and talent. They are a team of young professionals,
enthusiastic and talented people.
Software programmers, product managers or technical support people, the company is
committed to provide their clients with high quality products and flawless technical
support. The people working in sales, marketing and administration divisions are all
client driven, closely co-operating with the software developers, therefore making
them as an unbeatable team.

The Capabilities
The reliability of the products, the flexible licensing program and the low
prices show their commitment towards their clients. NIC software strategic
partnership with reputable companies allover the world has created a global network
with excellent results and outstanding performance in the distribution of software
products.

10
The Product
The products are characterized by innovation hip, ease of use and multiplatform
supports. The software developed is supporting the large variety of operating systems.
The systems undertaken by NIC are as under:
 Developed publishing software for ICCC publications, which involved the
compilation of all the cases of all high court and Supreme Court and effective
search engine utility for finding relevant cases.
 Developing an in-house EPR projects for US based company, electrical
company radius power. The company is into design, manufacturing and sales
of electrical equipments like SNMPS, filters and EMI etc. The ERP software
being developed cover productions, finance, marketing and sales & purchase
modules.
 Designed and developed management system for a reputed employment or
organization, VSS private limited, which specializes in human resource
development.
 Developed an office Automation suite for the various offices of Vardaan
sales LTD, a leading garment manufacturer of north India.
 Designed and developed an accounting software package for sporting LTD.
Ludhiana.
 Developed a hospital Management System for a group of hospitals located in
Jalandhar viz. Sanjivani Hospital, Navjeevan Hospital
 Designing and developing an in-house software IMMS integrated
manufacturing management system for manufacturing industries
incorporating the following functions:
• Financial Management
• Inventory management
• Store and purchase
• Human Resource management

11
NIC, CHANDIGARH

The Haryana State Unit was set up in the year 1988 and ever since, it has been
providing unstained IT support to the State Government. During the formulation of
the recent Action Plan, it has been decided by the Government to accord the highest
priority to the IT sector and this has given a big opportunity to NIC Haryana in
implementing its e- governance policies effectively in the State. As an important step,
a Secretariat for Information Technology has been setup at the Haryana Civil
Secretariat and Chief Minister has dedicated a special “Center for e-governance”. The
NIC center in Chandigarh Civil Secretariat is functioning since 1992. This center
works for the Control and Management, Application Development & Management,
Internet/E-mail and Web servers Management and Data Management.

12
NIC Services

The spectrum of services provided by NIC encompasses various dimensions of the


Information Arena and can be brodly listed as under:

 Consultancy/guidance
 Software Design & Development
 Networking
 Internet Services
 WWW hosting Services
 Video Conferencing
 Multimedia
 Geographical Information System (GIS)
 Bibliographic Informatics

♦ MEDLARS
♦ Patent Information
♦ Web Services

The former chief minister of Haryana inaugurated another Intranet web server with
NAI DISHA services on 16th Dec 2001. NAI DISHA is an IT driven electronic
interface between the Government and Citizen. It is a step towards making
government services available to citizen any time, anywhere. Neither the time of the
day nor location hinder from obtaining information from the Government.
Readdressal of grievances, or even the procedure of getting a driving license or

13
getting a vehicle registered, is an easy as inquiring about the bus timing for different
destination.
NAI DISHA is the first product of District minimum agenda program (D-
MAP)/District Network (D-NET). About 25 services of public importance are already
incorporated into it. More services and databases would be added with the passage of
time.

Services & Information provided by NAIDISHA are:


 Public grievances
 Various Forms and Procedures
 Collector rates
 Below poverty line services
 Old age pension
 Widow pension
 Handicapped pension
 Birth & Death Certificate
 Yellow Pages
 Bus Timings
 Train Timings
 Public Holidays
 Census 2001 data
 Sarkar Apke Dwaar Programme
 Missing persons
 Passport Enquiry Services
 House Tax Survey
 Banking Management
 Revenue court Case causes list

14
15
Overview of Project

Objective of the Software

On the basis of analysis the following objectives are framed in order to achieve
the required goals :-

• To make information easily accessible.

• Decrease complexity of business and management.

• Analyze large amount of business data.

• Select, sort & analyze data in an unlimited no. of ways.

• Minimize data redundancy by eliminating duplicate entries.

• It is used to create, close and modify the account.

• It is used to display the list of accounts.

• It is used to generate monthly report.

• It is used for calculating the interest of an account.

• It is used to display a transaction account.

16
Problem Listing

Main problems in the existing system:-

 Searching cannot be performed, each and every record is to be checked manually


in the database.

 History of a particular case are only stored in files not in database.

 Unable to get accurate, timely information.

 Application not complete for existing business practices

 Modifications are time consuming or not feasible

 The software uses concepts of C++, hence doing all the tasks like Data Hiding,
Data encapsulation, etc. the data or information about the customers within the
bank is saved to files by using FILE HANDLING property of C++.

 The software provides a user friendly environment to the DBA and helps him/her
to enter the information properly, without any difficulty and then store it on files.

17
18
Initial Study

Introduction

The project “Manage - All” has been implemented to create, close, modify the
accounts regarding customers of a bank in a proper and safe manner. It can also
calculate the interest, see the transacation of an individual account. The main
objective of this project is to resolve the problems which a person faces regarding
information about its account.

There is a Data Base Administrator, who enters all the information about an
individual customer who as an account or wants to create,close,modify an account on
to the system and allows it to get stored at proper location using file handling.

Here we can also search particular customer on the basis of :


Account no.
Name of the customer.
Date when the account was created.

There are various tasks of entering, editing and managing customer account. To do
these tasks every organization hires a Data Base Administrator. But he/she who plays
the role of DBA can never to this task manually. This is because, there is very large
number of customers who have an account in bank and there are very large fields of
information related with a single customer. So, if we consider the whole scenario, we
will come to know that it is a very complex and difficult task which can never be done

19
manually. So, in order to remove this problem, we use computers to store the data.
The data in computer is stored with the help of SOFTWARE.

This project provides the DBA all those services, which he/she requires while
managing the database.

The software provides a user friendly environment to the DBA and helps him/her to
enter the information properly, without any difficulty and then store it on files.
The software uses concepts of C++, hence doing all the tasks like Data Hiding, Data
encapsulation, etc. the data or information about the customer within a bank is saved
to files by using FILE HANDLING property of C++.

The data stored on file is not understandable to any human, it is written in machine
language which can only be interpreted by a computer. Hence, it also provides
security from unwanted access to the data.

20
TECHNOLOGY USED IN THE PROJECT

C++ Description

History

Stroustrup began work on C with Classes in 1979. The idea of creating a new
language originated from Stroustrup's experience in programming for his Ph.D. thesis

In 1980 the name was C with classes but after that in 1983, the name of the language
was changed from C with Classes to C++. C++ is an extension of language C because
new features were added in C that’s why he name as C++ means C with an increment
operator. New features that were added to the language included virtual functions,
function name and operator overloading, references, constants, user-controlled free-
store memory control, improved type checking, and a new comment style (//).

The name "C++"


This name is credited to Rick Mascitti (mid-1983) and was first used in December
1983. Earlier, during the research period, the developing language had been referred
to as "new C", then "C with Classes".

According to Stroustrup: "the name signifies the evolutionary nature of the changes
from C".

Old problems
Traditionally, C++ compilers have had a range of problems. The C++ standard does
not cover implementation of name decoration, exception handling, and other
implementation-specific features, making object code produced by different compilers
incompatible; there are, however, 3rd-party standards for particular machines or
operating systems which attempt to standardize compilers on those platforms (for
example C++ ABI[2]), and now many compilers have adopted a secondary standard

21
for these items.

Future development

C++ continues to evolve to meet future requirements.

Philosophy
Bjarne Stroustrup describes some rules that he uses for the design of C++.

*C++ is designed to be a statically typed, general-purpose language that is as efficient


and portable as C

*C++ is designed to directly and comprehensively support multiple programming


styles (procedural programming, data abstraction, object-oriented programming,

and generic programming)

*C++ is designed to give the programmer choice, even if this makes it possible for
the programmer to choose incorrectly

*C++ is designed to be as compatible with C as possible, therefore providing a


smooth transition from C

*C++ avoids features that are platform specific or not general purpose

*C++ does not incur overhead for features that are not used

*C++ is designed to function without a sophisticated programming environment

Compatibility of C and C++

The C and C++ programming languages are closely related.

C++ introduces many features that are not available in C— C++ code is not valid C
code

Constructs valid in C but not C++

22
One commonly encountered differences is that C allows a void* pointer to be
assigned to any pointer type without a cast, whereas C++ does not; this idiom appears
often in C code using malloc memory allocation.

Another portability issue from C to C++ are the numerous additional keywords that
C++ introduced. This makes C code that uses them as identifiers invalid in C++.

There are many other C syntaxes which are invalid or behave differently in C++ :

• The comma operator can result in an "l-value" (a quantity that can be used for
the left-hand side of an assignment) in C++, but not in C.

• C does not allow a given typedef to be duplicated in the same scope, whereas
C++ allows redundant typedefs.

• Enumeration constants (enum values) are always of type int in C, whereas


they are distinct types in C++ and may have size different from int.

• C++ identifiers are not allowed to contain two or more consecutive


underscores, whereas C identifiers may.

• C++ also changes some C standard-library functions to add additional const


qualifiers, e.g. strchr returns char* in C and const char* in C++.

• In both C and C++ one can define nested struct types, but the scope is
interpreted differently (in C++, a nested struct is defined only within the
scope/namespace of the outer struct).

• Non-prototype ("K&R"-style) function declarations are not allowed in C++,


although they have also been deprecated in C since 1990. Similarly, implicit
function declarations (using functions that have not been declared) are not
allowed in C++, but have also been deprecated in C since 1999.

• C allows struct, union, and enum types to be declared in function prototypes,


whereas C++ does not. A struct, union, or enum declaration in C++ declares
an implicit typedef, while in C it does not.

In order to intermix C and C++ code, any C++ functions which are to be called from
C-compiled code must be declared as extern "C".

23
Language features
*Operators
*Objects
*Encapsulation

*Inheritance

*Polymorphism

*Polymorphism through inheritance

*Template functions and classes

*Operator overloading

*Function overloading

*Virtual member functions

*Criticism

C++ has been the subject of much debate. Some of the most commonly levelled
criticisms include:

• Since C++ is based on, and largely compatible with, C, it also inherits most of
the criticisms levelled at that language.

• Taken as a whole C++ is a large and complicated language, and so is difficult


to fully master. However, by its multi-paradigm approach programmers are
free to use the subset of C++ features that they're comfortable with, adding
new features to their repertoire only as required and at their own pace.

• It is extremely difficult to write a good C++ parser .This is partly because the
C++ grammar is not LALR(1). Because of that, there are very few tools for
analyzing or performing non-trivial transformations (e.g., refactoring) of
existing code.

• C++ is sometimes compared unfavorably with single-paradigm object-oriented


languages such as Java, on the basis that it allows programmers to "mix and
match" object-oriented and procedural programming, rather than strictly
enforcing a single paradigm. This is part of a wider debate on the relative
merits of the two programming styles.

• The abundance of language features can lead less experienced programmers to

24
bring unnecessarily advanced or complicated solutions to simple problems.

• For embedded systems C++ is sometimes considered too bloated, especially


for language features like exceptions and RTTI which add to code size. Thus
Embedded C++ standard has been specified, but has also received criticism for
leaving out useful parts of the language that incur no runtime penalty.

25
C++ Glossary:

A
arguments, function - Arguments in function declarations may have names, but the
names are ignored (they are positional). In C++ (unlike C), an empty argument list
means a function with no arguments, since the C "wild card" style would prevent
type-checking, e.g., int func2(); this behavior is different than the result you would
have expected in C.

Assignment operator: = *= /= %= += -= <<= >>= &= ^= != "All require an


lvalue as left operand, and the lvalue must be modifiable: it must not be an array, and
must not have an incomplete type, or be a function." .At least the = operator is
overloadable.

Automatic type conversion - e.g., casting a short to a void pointer (cannot do


the reverse in C++).

B
Base class - The most generalized class in a class structure. Most applications have
many such root classes. Some languages define a primitive base class, which serves as
the ultimate superclass of all classes.

C
Character constant - single byte char enclosed by single quotes.

Class - An abstract data type. A keyword which defaults a struct class to private. A
class binds into one unit the data structure and its functions, also called a user-defined
type. Variables, or instances of that class, are called objects.

26
D
Declaration -

Dynamic memory allocation - In C and Pascal, a method to create space for


variables at run time. For situations where you don't know at compile time how many
objects you'll need, or what their lifetimes (scope) will be.

specifies to the compiler the types of all the elements of an identifier; "this function or
this piece of data exists somewhere else, and here is what it should look like."
Declarations normally go in header files with extensions of .h.

Derived class - declaration keyword specifying that a declared class has


inheritance of all of the data members and member functions of the class from which
it is declared to derive, e.g., class Derived : Base.

Derived objects receive their own copies of called base object members. The compiler
automatically calls constructors and destructors for called copies.

E
Extern - keyword in C and C++ to help tell the compiler or user how to distinguish a
definition from a declaration, when the definition is elsewhere, e.g.,

extern int func1(int length, int


width);

F
Friend - keyword designating a class or single member function as having access to
(1) a specified entire class, (2) a member function of another class, or (3) a designated
nonmember function. If a friend declaration omits function's parameters, compiler
checks for functions or overloaded functions with matching signatures, else reports
error.

27
function declaration - in C and C++, gives the function name, the argument types
passed to a function, and the return type of the function; e.g.,

int func1(int, int);


H
Header file

Function definition - looks like function declarations, except with bodies,


collections of statements inside curly braces, e.g.,

int func1(int length, int width) { ...}

The arguments in the function definition must have names if you also want to use the
arguments in the function body; otherwise, they are optional.

- contains the external declarations for a library, using a filename extension


of .h . To use a library, you must include its header file. The programmer who
provides the library provides the header file; to include it, use the #include
preprocessor directive, and the compiler will insert it if the search is
successful:

#include "local.h" //search the current directory;


//report err if file does not exist.

#include <local.h> (use LT & GT brackets)


//search another, specified
//environment
In C, a header file should not contain any function or data defs because the header can
be included in more than one file, causing the linker to complain. In C++, there are
two exceptions: inline, and const.

28
I
Inheritance - A C++ property which allows the defining of one class in terms of
another. The compiler physically implements inheritance by making a copy of the
data structure of the original base class into a declared derived class, and providing
access to the member functions ion the base class. Inheritance allows you to add or
modify members without corrupting the original class code. Conserves effort, and
creates extensible programs through sub classing.

Inline function - keyword forcing compiler to copy body of a called function into
the calling function. Best for recursive and loop calls. Provides type safety and side-
effects protection not afforded by #define.

L
Lvalue - "An lvalue is an expression referring to an object ... an object is a named
region of storage" . The left-hand side of the assignment operator (=) equation; what
the rvalue is copied into.

M
Manipulators - special iostream functions permitting specific i/o operations while
in the middle of stream insertion or extraction. These functions switch appropriate
iostream format flags.

O
Object - a named region of storage (whether it has yet been allocated or not).

Operator overload - Compiler replacement of a C++ operator with a function


called to overload it with a new meaning. Form: operator<c++ operator>; Example:
float operator+(parm1, parm2){return (...)} would intercept and replace the plus (+)
operator. Operator overloading means you can give an operator like + or - a special
meaning when used with a new data type you create.

29
P
Pointers vs. references (USG) - a pointer must be dereferenced to access what
it points to; a reference need not be. The entity to which a reference refers may only
be set when the reference is created; in this respect it is somewhat like a const pointer
that gets a virtual * put in front of it when it is used, and puts a virtual ampersand in
front of the expression from which it is initialized.

Polymorphism - lets you use objects of different classes by means of the same
program element (CRS); use of identical interfaces with different implementations
(CIO p.18). A program designed around polymorphism manages a collection of base-
class objects, and the precise result of a message sent to one of these cannot be
determined at compile time, since only the base class is known, not the subclass.
Polymorphism is the proper behavior of a derived-class object when treated as a base-
class object .. The specific function called is determined at run time.

S
Scope - Generally, the domain of objects and calls within which an object can exist.
A struct name or enum in an inner scope can obscure a global of the same name in an
outer scope. In C++, enum constants embedded in a struct def have the same scope as
that struct's fields.

Scope resolution operator (::) - operator telling compiler to look outside the
current block for variable of the same name (e.g., a global, or a member function of a
base class.)

Static member - like a global variable whose scope is limited to the class in which
it is declared. Especially true if declared as private or protected.

Static data member - shared by all objects of a class for each instantiation of that
template class. All static data members are defined within the scope of the file in
which they exist, by prefixing the definition with a template specification. The def

30
should appear in that .cp file, not in the header. Like globals, automatically initialized
to 0.

Static member function - a member function declared as static; can access and
modify static data members; cannot be of type const or virtual.

String constant - zero or more chars surrounded by double quotes.

Structure - an object "consisting of a sequence of named members of various


types" , typically containing one or more data members, and/or member functions
which specify the list. May not contain a member of incomplete type.

Struct - Structure; keyword whose default structure class is public.

31
32
CODING USED IN THE PROJECT

// Declaration of header files


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

typedef char option[15];


const int ROW = 10,COL = 10;

int scan; // To hold the special characters for moving the prompt in menu
int ascii;

// To display the main menu options


option a[]= {
"NewAccount",
"ListofAccounts",
"IndAccount",
"DailyTrans",
"MonthlyReport",
"EditAccount",
"Exit"};

// Displays the modify menu options


option b[] = {
"Modify Account",
"Closeaccount",
"Quit"
};

// Function used to do screening


class main_menu
{
int i,done;

public:
void normalvideo(int x,int y,char *str);
void reversevideo(int x,int y,char *str);
void box(int x1,int y1,int x2,int y2);

33
char menu();
void control_menu();
char e_menu();
void edit_menu();
void help(void);
};

/* Class member functions for drawing boxes */


class shape
{
public:
void line_hor(int, int, int, char);
void line_ver(int, int, int, char);
void box(int, int, int, int, char);
};

// Class contains the initial deposit of customers


class initial
{
public:
void add_to_file(int, char t_name[30], char t_address[30], float); //
For initial deposits in customers account
void display_list(void); // Displaying customers account list
void delete_account(int); // Deleting customers account
void update_balance(int, char t_name[30], char t_address[30], float); //
For updating the customer account
void modify(void); // To modify the customer account information
int last_accno(void); // To know the last account number
int found_account(int); // To found the account is in "INITIAL.dat" or
not

char *return_name(int); // Function for validation entry of customer


name
char *return_address(int); // Function for validation entry of customer
address
float give_balance(int); // To print the balance amount of a particular
customer
int recordno(int);
void display(int); // To display the customer account

private:
void modify_account(int, char t_name[30], char t_address[30]); //
Function to modify the customer account
int accno;
char name[30], address[30];
float balance;
};

// Class contains the customers daily transaction entry

34
class account
{
public:
void new_account(void); // Function to create a new account
void close_account(void); // Function to close an account
void display_account(void); // Function to display the accounts
void transaction(void); // To display the transaction process
void clear(int, int); // Function to perform a clear screen function
void month_report(void); // Function to list monthWise transaction
report

private:
void add_to_file(int, int, int, int, char, char t_type[10], float, float,
float); // Function to add transaction records
void delete_account(int); // Function to delete a transaction record
int no_of_days(int, int, int, int, int, int); // Function to find the total
days
float calculate_interest(int, float); // Function for calculating interest of
an account
void display(int); // Function to display a transaction account
void box_for_display(int); // Function for displaying box
int accno;
char type[10]; // Account type as Cheque or Cash
int dd, mm, yy; // To store the system date/ Enter date
char tran; // As the account type is Deposit or
Withdraw
float interest, amount, balance;
};

// Function to displays all the menu prompt messages from the pointer array of option
a[]
void main_menu::normalvideo(int x,int y,char *str)
{
gotoxy(x,y);
cprintf("%s",str);
}

// Function to move the cursor on the menu prompt with a reverse video color
void main_menu::reversevideo(int x,int y,char *str)
{
textcolor(5+143);
textbackground(WHITE);
gotoxy(x,y);
cprintf("%s",str);
textcolor(GREEN);
textbackground(BLACK);
}

void main_menu::box(int x1,int y1,int x2,int y2)

35
{
for(int col=x1;col<x2;col++)
{
gotoxy(col,y1);
cprintf("%c",196);
gotoxy(col,y2);
cprintf("%c",196);
}

for(int row=y1;row<y2;row++)
{
gotoxy(x1,row);
cprintf("%c",179);
gotoxy(x2,row);
cprintf("%c",179);
}
gotoxy(x1,y1);
cprintf("%c",218);
gotoxy(x1,y2);
cprintf("%c",192);
gotoxy(x2,y1);
cprintf("%c",191);
gotoxy(x2,y2);
cprintf("%c",217);
}

char main_menu::menu()
{
clrscr();

textcolor(22);
box(20, 6, 65, 20);
box(18, 4, 67, 22);
textcolor(5+143);
gotoxy(36, 5);
textbackground(BLUE);
cprintf("B A N K I N G");
textbackground(BLACK);
textcolor(22);
for(i = 1; i < 7; i++)
normalvideo(32, i+10, a[i]);
reversevideo(32, 10, a[0]);
i = done = 0;
_setcursortype(_NOCURSOR);
do
{
int key = getch();
switch (key)
{
case 00:

36
key = getch();
switch (key)
{
case 72:
normalvideo(32, i+10, a[i]);
i--;
if (i == -1)
i = 6;
reversevideo(32,i+10,a[i]);
break;
case 80:
normalvideo(32, i+10, a[i]);
i++;
if (i == 7)
i = 0;
reversevideo(32, i+10, a[i]);
break;
}
break;
case 13:
done = 1;
}
}
while (!done);
_setcursortype(_NOCURSOR);
return(i+49);
}

/* The function main_menu() is used to display the main menu of banking system */
void main_menu::control_menu()
{

char choice;
account a;

do
{
choice = menu();
clrscr();
switch (choice)
{
case '1':
_setcursortype(_NORMALCURSOR);
box(3, 1, 75, 24);
box(5, 2, 73, 23);

a.new_account(); // New account member function


break;
case '2':
box(3, 1, 75, 24);

37
box(5, 2, 73, 23);
initial ini;
ini.display_list(); // Glogal list of account function
break;
case '3':
box(3, 1, 75, 24);
box(5, 2, 73, 23);

_setcursortype(_NORMALCURSOR);
a.display_account(); // Displaying individual accounts
all transactions
break;
case '4':
box(3, 1, 75, 24);
box(5, 2, 73, 23);

account a;
_setcursortype(_NORMALCURSOR);
a.transaction(); // Daily transaction for individual
account
break;
case '5':
box(3, 1, 75, 24);
box(5, 2, 73, 23);

_setcursortype(_NORMALCURSOR);
a.month_report(); // Monthly report for any account
break;
case '6':
box(3, 1, 75, 24);
box(5, 2, 73, 23);
gotoxy(10,10);
edit_menu(); // Sub menu for modifying or deleting any
account
break;
case '7' :exit(0);
}
} while (choice != 6);
}

/* Function for edit menu with account modification and close */


void main_menu::edit_menu()
{

char choice;
account a;

do
{

38
choice = e_menu();
clrscr();
switch (choice)
{
case '1':
box(3, 1, 75, 24);
box(5, 2, 73, 23);
initial ini;
_setcursortype(_NORMALCURSOR);
ini.modify();
break;

case '2':
box(3, 1, 75, 24);
box(5, 2, 73, 23);
account a;
_setcursortype(_NORMALCURSOR);
a.close_account();
break;
case '3':
return;
}
} while (choice != 6);
}

/* Function to draw horizontal line */


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

/* Function to draw vertical line */


void shape::line_ver(int row1, int row2, int column, char c)
{
for (row1; row1 <= row2; row1++)
{
gotoxy(column, row1);
cout << c;
}
}

/* Function for drawing box */


void shape::box(int column1, int row1, int column2, int row2, char c)
{
char ch = 218;
char c1, c2, c3, c4;

39
char l1 = 196, l2 = 179;
if (c == ch)
{
c1 = 218;
c2 = 191;
c3 = 217;
c4 = 217;
l1 = 196;
l2 = 179;
}
else
{
c1 = c;
c2 = c;
c3 = c;
c4 = c;
l1 = c;
c2 = c;
}
gotoxy(column1, row1);
cout << c1;
gotoxy(column2, row1);
cout << c2;
gotoxy(column1, row2);
cout << c3;
gotoxy(column2, row2);
cout << c4;
column1++;
column2--;
line_hor(column1, column2, row1, l1); //Horizontal line
line_hor(column1, column2, row2, l1);
column1--;
column2++;
row1++;
row2--;
line_ver(row1, row2, column1, l2); // Vertical line
line_ver(row1, row2, column2, l2);
}

/* Function to display help about this project */


void main_menu::help(void)
{
clrscr();

setbkcolor(7);
settextstyle(7,HORIZ_DIR,5);
outtextxy(70,20,"Welcome to Banking Project");
settextstyle(2,HORIZ_DIR,5);

40
outtextxy(60,100, "This project your can keep record of daily banking
transaction");
delay(2);
outtextxy(60,130, "This program is capable of holding any no. of account.");
delay(2);
outtextxy(60,160, "-In first option you can open new account");
delay(2);
outtextxy(60,190, "-In second option you can see the list of all the accounts");
delay(2);
outtextxy(60,220,"-In third option you can see all the transaction of individual
account");
delay(2);
outtextxy(60,250, "-Through fourth optiion you can do banking transactions");
delay(2);
outtextxy(60,280, "(Deposit/Withdraw)");
delay(2);
outtextxy(60,310, "-In fifth option you can take monthWise individual account
report");
delay(2);
outtextxy(60,340,"-In sixth option you can modify or delete any account");
delay(2);
outtextxy(60,370, "Note-: Opening amount should not less that Rs. 500/-");
delay(2);
outtextxy(60,400, "-And last option is Quit (Exit to Window)");
delay(2);

settextstyle(7,HORIZ_DIR,4);
outtextxy(80,420,"Press any key to continue...");
getch();

/* Function for modifying the existing accounts */


void initial::modify(void)
{
clrscr();
int j;
char t_acc[10];
int t, t_accno;
gotoxy(17, 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))

41
{
gotoxy(5, 5);
cout << "\7Account not found";
getch();
return;
}
gotoxy(71, 1);
cout << "<0>=Exit";
textbackground(WHITE);
gotoxy(3, 3);
for (j = 1; j<= 76; j++)
cprintf(" ");
textbackground(BLACK);
textcolor(BLACK+BLINK);
textbackground(WHITE);
gotoxy(30, 3);
cprintf("Modify Account Screen");
textcolor(LIGHTGRAY);
textbackground(BLACK);
int d1, m1, y1;
struct date d; // For extracting system date
getdate(&d);
d1 = d.da_day;
m1 = d.da_mon;
y1 = d.da_year;
gotoxy(4, 2);
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[30];
gotoxy(5, 15);
cout << "Name : ";
gotoxy(5, 16);
cout << "Address : ";

do

42
{
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 greater than 25");
getch();
}
} while (!valid);

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);
strupr(t_address);
if (t_address[0] == '0')
return;
if (strlen(t_address) > 25)
{
valid = 0;
gotoxy(5, 23);
cprintf("\7Address should not greater than 25");
getch();
}
}while (!valid);

if (strlen(t_address) > 0)
modified = 1;
if (!modified)
return;
// clears the screen at 23rd row and from 5th column
a.clear(5,23);

do
{

43
a.clear(5, 23);
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');

if (ch == 'N')
return;

// Passes the parameter to add in data file


modify_account(t_accno, t_name, t_address);
gotoxy(5, 21);
cout << "\7Record modified";
gotoxy(5, 23);
cout << "Press any key to continue...";
getch();
}

/* Function for updating the modified account into INITIAL.dat file */


void initial::modify_account(int t_accno, char t_name[30], char t_address[30])
{
int recno;
recno = recordno(t_accno);
fstream file;
file.open("INITIAL.dat", ios::out|ios::ate);
strcpy(name, t_name);
strcpy(address, t_address);
int location;
// finds the position in data file

location = (recno-1) * sizeof(initial);


file.seekp(location);

// Overwrites the modified record into INITIAL.dat data file


file.write((char *)this, sizeof(initial));
file.close();
return;
}

/* This function add_to_file() is used to create new/fresh record in the data file */
void initial::add_to_file(int t_accno, char t_name[30], char t_address[30], float
t_balance)
{
accno = t_accno;
strcpy(name, t_name);

44
strcpy(address, t_address);
balance = t_balance;
fstream file;

// Appends new account record with the balance into INITIAL.dat data file
file.open("INITIAL.dat", ios::out|ios::app);
file.write((char *)this, sizeof(initial));
file.close();
}

// Function for deleting an account from INITIAL.dat file


void initial::delete_account(int t_accno)
{
fstream file;
file.open("INITIAL.dat", ios::in);
fstream temp;
temp.open("TEMP.dat", ios::out);
file.seekg(0,ios::beg);

// Uses a copy method to delete the account from INTITAL.dat data file
while (!file.eof())
{
file.read((char *)this, sizeof(initial));
if (file.eof())
break;
if (accno != t_accno)
temp.write((char *)this, sizeof(initial));
}
file.close();
temp.close();
file.open("INITIAL.dat", ios::out);
temp.open("TEMP.dat", ios::in);
temp.seekg(0, ios::beg);

// Copy the TEMP.dat contents into INTITAL.dat data file


while (!temp.eof())
{
temp.read((char *)this, sizeof(initial));
if (temp.eof())
break;
if (accno != t_accno)
file.write((char *)this, sizeof(initial));
}
file.close();
temp.close();
}

/* Function for displaying an account from "INITIAL.dat". */


void initial::display_list(void)

45
{
clrscr();
int flag;
float t_bal = 0.0;
fstream file;
gotoxy(25,2);

cout << "Accounts List in Bank";


gotoxy(25, 3);
cout << "=====================";
int d1, m1, y1;
struct date d; // For extracting system date
getdate(&d);
d1 = d.da_day;
m1 = d.da_mon;
y1 = d.da_year;
gotoxy(62, 3);
cout << "Date: " << d1 << "/" << m1 << "/" << y1;
gotoxy(1, 4);
for (int j = 1; j <= 79; j++)
cout << "=";

gotoxy(1, 5);
cout << "Accno#";
gotoxy(10,5);
cout << "Name";
gotoxy(30,5);
cout << "Address";
gotoxy(65,5);
cout << "Balance";
gotoxy(1, 6);
for (j = 1; j <= 79; j++)
cout << "=";
file.open("INITIAL.dat", ios::in);
file.seekg(0,ios::beg);
int row = 7;

/* Function for clearing specified row and column. */


void account::clear(int col, int row)
{
for (int j = col; j <= 79; j++)
{
gotoxy(j, row);
cout << " ";
}
}

46
/* Function to found an account for display account function. */
int initial::found_account(int t_accno)
{
fstream file;
file.open("INITIAL.dat", ios::in);
file.seekg(0, ios::beg);
int found = 0;

// Searches the specified record in INITIAL.dat data file


while (file.read((char *)this, sizeof(initial)))
{
if (accno == t_accno)
{
found = 1;
break;
}
}
file.close();
return found;
}

/* Function for display account details */


void account::box_for_display(int t_accno)
{
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;

initial ini;

char t_name[30];
strcpy(t_name, ini.return_name(t_accno));

char t_address[30];
strcpy(t_address, ini.return_address(t_accno));

gotoxy(25, 2);
cout << t_name;
gotoxy(25, 3);
cout << t_address;
gotoxy(4, 5);

47
cout << "Global Report of Account";
textbackground(WHITE);
textcolor(BLACK);
textbackground(WHITE);
gotoxy(1, 6);
for (int i = 1; i <=79; i++)
cout << "=";
gotoxy(4, 7);
cprintf("Date Particular Deposit Withdraw Balance");
gotoxy(1, 8);
for (i = 1; i <=79; i++)
cout << "=";
textcolor(LIGHTGRAY);
textbackground(BLACK);
}

/* Function to list monthWise transaction report. */


void account::month_report(void)
{

int dd1, mm1, yy1;


clrscr();
gotoxy(10, 5);
cout << "Enter any date of a month ";
gotoxy(38, 5);
cin >> dd1;
gotoxy(40, 5);
cout << "-";
gotoxy(41, 5);
cin >> mm1;
gotoxy(43, 5);
cout << "-";
gotoxy(44, 5);
cin >> yy1;
clrscr();
char t_acc[10];
int j;
int tamt = 0, damt = 0, wamt = 0;
int t, t_accno;
gotoxy(71, 1);
cout << "<0>=Exit";
gotoxy(5, 5);
cout << "Enter account no. ";
gets(t_acc);
t = atoi(t_acc);
t_accno = t;
if (t_accno == 0)
return;
clrscr();

48
initial ini;
if (!ini.found_account(t_accno))
{
gotoxy(5, 5);
cout << "\7Account not found";
getch();
return;
}
box_for_display(t_accno);
gotoxy(4, 5);
cout << "Statement Month: " << dd1 << "/" << mm1 << "/" << yy1;
getch();

int row = 9, flag;


fstream file;
file.open("BANKING.dat", ios::in);
float pre_balance = 0.0; // Previous balance amount

// The loop finds the last months balance


while (file.read((char *)this, sizeof(account)))
{
// Checks the account no. and till the previous month and till current
year
if ((accno == t_accno) && ((mm < mm1 && yy <= yy1) || (mm1 <
mm && yy < yy1)))
{
pre_balance = balance;
}
}

file.close();
file.open("BANKING.dat", ios::in);
gotoxy(54, row);

cout << "B/F .... " << setw(15)


<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< pre_balance;
row++;

// The loop displays the current months transaction after previous month
while (file.read((char *)this, sizeof(account)))
{
if ((accno == t_accno) && (mm1 == mm && yy1 <= yy))
{
flag = 0;
delay(2);
gotoxy(4, row);

49
cout << dd << "-" << mm << "-" << yy;
gotoxy(16, row);
puts(type);
if (tran == 'D')
{
damt = damt + amount;
tamt = tamt + amount;
gotoxy(30, row);
}
else
{
wamt = wamt + amount;
tamt = tamt - amount;
gotoxy(42, row);
}

cout << setw(15)


<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< amount;

gotoxy(66, row);
cout << setw(15)
<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< balance;
row++;

// If row increases 23 then the next screen continues


if (row > 23)
{
flag = 1;
row = 7;
gotoxy(4, 24);
cout << "Press any key to continue";
getch();
clrscr();
box_for_display(t_accno);
}
}
}
file.close();
gotoxy(1, row);
for (j = 1; j <= 79; j++)
cout << "=";
row++;

50
gotoxy(4, row);
cout << "Total-->:";
gotoxy(30, row);

// Deposited amount
cout << setw(15) // setwidth
<< setprecision(2) // set position of decimal point
<< setiosflags(ios::left) // set left justified output
<< setiosflags(ios::showpoint) // always show decimal point
<< setiosflags(ios::fixed) // set fixed notation for display
<< damt;

gotoxy(42, row);
// Withdraw amount
cout << setw(15)
<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< wamt;

gotoxy(66, row);
tamt = tamt + pre_balance;
// Balance amount
cout << setw(15)
<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< tamt;

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

/* Function for creating new account for new customer. */


void account::new_account(void)
{
char ch;
int i, valid;
clrscr();
initial ini;

shape s;

51
s.box(2, 1, 79, 25, 218);
s.box(25, 2, 54, 4, 219);

gotoxy(65, 2);
cout << "<0>=Exit";
gotoxy(3,3);
for (i = 1; i<= 76; i++)
cprintf(" ");
textbackground(BLACK);
textcolor(BLACK+BLINK);
textbackground(WHITE);
gotoxy(30, 3);
cprintf("Open New Account");
textcolor(LIGHTGRAY);
textbackground(BLACK);
int d1, m1, y1;
struct date d; // For extracting system date
getdate(&d);
d1 = d.da_day;
m1 = d.da_mon;
y1 = d.da_year;
int t_accno;
t_accno = ini.last_accno();
t_accno++;

// Appends and deletes a false record to create primary position in data files
if (t_accno == 1)
{
ini.add_to_file(t_accno, "abc", "xyz", 1.1);
ini.delete_account(t_accno);
cout << "Prese xxxxxxx";
getch();
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[30];
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 : ";

52
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 greater than 25");
getch();
}
}while (!valid);

do
{
clear(25, 15);
clear(5, 23);
gotoxy(5, 23);
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) > 25)
{
valid = 0;
gotoxy(5, 23);
cprintf("\7Address should not greater than 25");
getch();
}
}while (!valid);

do
{
char vari[30];
clear(13, 12);
clear(5, 23);
gotoxy(5, 23);
cout << "Enter name of the varifying Person ";
valid = 1;

53
gotoxy(31, 12);
gets(vari);
strupr(vari);
if (vari[0] == '0')
return;
if (strlen(vari) == 0 || strlen(vari) > 25)
{
valid = 0;
gotoxy(5, 23);
cprintf("Should not blank or greater than 25");
getch();
}
}while (!valid);

do
{
clear(13, 12);
clear(5, 23);
gotoxy(5, 23);
cout << "Enter initial amount to be deposit ";
valid = 1;
gotoxy(23, 14);
gets(t);
t_bal = atof(t);
t_balance = t_bal;
if (t[0] == '0')
{
valid = 0;
gotoxy(5, 23);
cprintf("\7Should not less than 500");
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;

54
t_amount = t_balance;
t_interest = 0.0;
char t_tran, t_type[10];
t_tran = 'D';
strcpy(t_type, "INITIAL");

// Appends the records contents into both INITIAL.dat and BANKING.dat


data files
ini.add_to_file(t_accno, t_name, t_address, t_balance);
add_to_file(t_accno, d1, m1, y1, t_tran, t_type, t_interest, t_amount,
t_balance);
}

/* Function for returning balance amount of an account. */


float initial::give_balance(int t_accno)
{
fstream file;
file.open("INITIAL.dat", ios::in);
file.seekg(0, ios::beg);
float t_balance;

// Gives the last balance of an individual account


while (file.read((char *)this, sizeof(initial)))
{
if (accno == t_accno)
{
t_balance = balance;
break;
}
}
file.close();
return t_balance;
}

/* Function for returning the record no. for updating balance */


int initial::recordno(int t_accno)
{
fstream file;
file.open("INITIAL.dat", ios::in);
file.seekg(0, ios::beg);
int count = 0;

// Finds the record position in INITIAL.dat data file


while (file.read((char *)this, sizeof(initial)))
{
count++;
if (t_accno == accno)
break;
}
file.close();

55
return count;
}

/* Function for updating the balance for the given account no. */
void initial::update_balance(int t_accno, char t_name[30], char t_address[30], float
t_balance)
{
int recno;
recno = recordno(t_accno);
fstream file;
file.open("INITIAL.dat", ios::out|ios::ate);
strcpy(name, t_name);
strcpy(address, t_address);
balance = t_balance;
int location;
location = (recno-1) * sizeof(initial); // Find the location in file
file.seekp(location); // Searches the insertion position in data file

// Updates the balance amount in INITIAL.dat data file


file.write((char *)this, sizeof(initial));
file.close();
}

/* Function for calculates interest */


float account::calculate_interest(int t_accno, float t_balance)
{
fstream file;
file.open("BANKING.dat", ios::in);
file.seekg(0, ios::beg);
int d1, m1, y1, days;
while (file.read((char *)this, sizeof(account)))
{
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))
return t_interest;

56
days = 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;
}

/* Function for making daily transaction (Deposit 'D'/Withdraw 'W'. */


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();
initial ini;
if (!ini.found_account(t_accno))
{
gotoxy(5, 5);
cout << "\7Account not found";
getch();
return;
}
gotoxy(71, 1);
cout << "<0>=Exit";
gotoxy(3, 3);
for (int i = 1; i <= 76; i++)
cprintf(" ");
textbackground(BLACK);
textcolor(BLACK+BLINK);
textbackground(WHITE);
gotoxy(29, 3);
cprintf ("Transaction in Account");
textcolor(LIGHTGRAY);
textbackground(BLACK);
int d1, m1, y1;
struct date d;
getdate(&d);

57
d1 = d.da_day;
m1 = d.da_mon;
y1 = d.da_year;
gotoxy(5, 6);
cout << "Date: " << d1 << "/" << m1 << "/" << y1;
gotoxy(5, 8);
cout << "Accnount no. " << t_accno;
char t_name[30];
char t_address[30];
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);
gotoxy(27, 11);
cout << "Name : " << t_name;
gotoxy(27, 12);
cout << "Address : " << t_address;

gotoxy(5, 15);
cout << "Last balance Rs. " << setw(15)
<< setprecision(2)
<< setiosflags(ios::left)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::fixed)
<< t_balance;

char t_tran, t_type[10], tm[10];


float t_amount, t_amt;

do
{
clear(5, 10);
valid = 1;
gotoxy(5, 10);
cout << "Deposit or Withdraw (D/W) : ";
t_tran = getch();
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);
cout << "Enter Transaction by Cash or Cheque ";
valid = 1;
gotoxy(5, 19);
cout << "Cash/Cheque : ";

58
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')
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(20, 23);
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')

59
return;
float t_interest;

t_interest = 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;

// Modified records are updated in data bases.


ini.update_balance(t_accno, t_name, t_address, t_balance);
add_to_file(t_accno, d1, m1, y1, t_tran, t_type, t_interest, t_amount,
t_balance);
}

/* Function for closing any account after inputing account number. */


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();
initial ini;
if (!ini.found_account(t_accno))
{
gotoxy(5, 5);
cout << "\7Account not found ";
getch();
return;
}
gotoxy(71, 1);
cout << "<0>=Exit";
gotoxy(3, 3);
textbackground(WHITE);
for (int i = 1; i <= 76; i++)
cprintf(" ");
textbackground(BLACK);
textcolor(BLACK+BLINK);
textbackground(WHITE);
gotoxy(30, 3);

60
cprintf("Close account screen");
textcolor(LIGHTGRAY);
textbackground(BLACK);
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;
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;
ch = toupper(ch);
}while (ch != 'N' && ch != 'Y');
if (ch == 'N')
return;

// Function calls to delete the existing account no.


ini.delete_account(t_accno);
delete_account(t_accno);
gotoxy(5, 20);
cout << "\7Account Deleted";
gotoxy(5, 23);
cout << "Press any key to continue...";
getch();
}

// Main program logic which control the class members and member functions.
void main(void)
{
main_menu m_menu;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");

m_menu.help();
closegraph();
m_menu.control_menu();
}

61
OUTPUTS
The Main Menu looks like this:-

When we will click on New Account then:-

The new account is created. After creating new account we will return into main
menu

62
It will open the list of accounts which are already created

63
In the account we will get this screen

64
In daily trans this screen will open:-

This screen will tell about the daily transaction which take place.

65
By clicking on monthly report,the report will be generated

66
We can edit the account using:-
Modify Account
Close Account

Using Modify Account:-

67
By Quit we will reach in Main menu

68
By exit we will exit from main menu

69