Top Banner
SUMMER TRAINING REPORT ON BANKING MANAGEMENT Submitted in partial fulfilment of the requirement for the Award of degree SUBMITTED BY:
88
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Training Report

SUMMER TRAINING REPORT

ON

BANKING MANAGEMENT

Submitted in partial fulfilment of the requirement for theAward of degree

SUBMITTED BY:PRIYANKA MUNJALB.Tech FINAL YEAR

(Computer Science )

HARYANA ENGINEERING COLLEGE

(JAGADHRI)

Page 2: Training Report

(Software to manage all the data regarding

banking )

Technology used:-

‘C++’

2

Page 3: Training Report

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

Page 4: Training Report

4

Page 5: Training Report

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

Page 6: Training Report

6

Page 7: Training Report

TABLE OF CONTENTS

Part- 1 ORGANIZATIONAL PROFILE & INTRODUCTION

Chapter 1 :- Organizational Profile1.1 Organization Setup1.2 NIC, Chandigarh1.3 NIC Services

Part- 2 INTRODUCTION TO PROJECT

Chapter 2 :- Overview of Project2.1 Objectives of the Software2.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

Page 8: Training Report

8

Page 9: Training Report

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

Page 10: Training Report

The company

Founded in 1988, NIC is headquartered in Chandigarh, India. The activity is focused on the following major activity axes:Software DevelopmentNetworking consultancyProject ManagementSoftware 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

Page 11: Training Report

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

Page 12: Training Report

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

Page 13: Training Report

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

getting a vehicle registered, is an easy as inquiring about the bus timing for different

destination.

13

Page 14: Training Report

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

Page 15: Training Report

15

Page 16: Training Report

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

Page 17: Training Report

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

Page 18: Training Report

18

Page 19: Training Report

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

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.

19

Page 20: Training Report

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

Page 21: Training Report

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

for these items.

21

Page 22: Training Report

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++

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.

22

Page 23: Training Report

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".

Language features

*Operators

*Objects

*Encapsulation

*Inheritance

23

Page 24: Training Report

*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

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.

24

Page 25: Training Report

C++ Glossary:

25

Page 26: Training Report

Aarguments, 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.

D

Declaration -

26

Page 27: Training Report

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.

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);

27

Page 28: Training Report

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.

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

28

Page 29: Training Report

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.

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

29

Page 30: Training Report

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

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

to 0.

30

Page 31: Training Report

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

Page 32: Training Report

CODING USED IN THE PROJECT

// Declaration of header files

32

Page 33: Training Report

#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 menuint ascii;

// To display the main menu optionsoption a[]= {

"NewAccount", "ListofAccounts", "IndAccount", "DailyTrans", "MonthlyReport", "EditAccount", "Exit"};

// Displays the modify menu optionsoption b[] = {

"Modify Account","Closeaccount","Quit"

};

// Function used to do screeningclass 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);char menu();void control_menu();char e_menu();void edit_menu();void help(void);

33

Page 34: Training Report

};

/* 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 customersclass initial{

public:void add_to_file(int, char t_name[30], char t_address[30], float); //

For initial deposits in customers accountvoid display_list(void); // Displaying customers account listvoid delete_account(int); // Deleting customers accountvoid update_balance(int, char t_name[30], char t_address[30], float); //

For updating the customer accountvoid modify(void); // To modify the customer account informationint last_accno(void); // To know the last account numberint 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 accountint accno;char name[30], address[30];float balance;

};

// Class contains the customers daily transaction entry

class account{

public:void new_account(void); // Function to create a new account

34

Page 35: Training Report

void close_account(void); // Function to close an accountvoid display_account(void); // Function to display the accountsvoid transaction(void); // To display the transaction processvoid clear(int, int); // Function to perform a clear screen functionvoid 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 recordsvoid delete_account(int); // Function to delete a transaction recordint no_of_days(int, int, int, int, int, int); // Function to find the total

daysfloat calculate_interest(int, float); // Function for calculating interest of

an accountvoid display(int); // Function to display a transaction accountvoid box_for_display(int); // Function for displaying boxint accno;char type[10]; // Account type as Cheque or Cashint dd, mm, yy; // To store the system date/ Enter datechar tran; // As the account type is Deposit or

Withdrawfloat 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 colorvoid 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){

for(int col=x1;col<x2;col++) {

gotoxy(col,y1); cprintf("%c",196);

35

Page 36: Training Report

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:key = getch();switch (key){

case 72:normalvideo(32, i+10, a[i]);

36

Page 37: Training Report

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 functionbreak;

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

case '3':

37

Page 38: Training Report

box(3, 1, 75, 24);box(5, 2, 73, 23);

_setcursortype(_NORMALCURSOR);a.display_account(); // Displaying individual accounts

all transactionsbreak;

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 accountbreak;

case '6':box(3, 1, 75, 24);box(5, 2, 73, 23);gotoxy(10,10);edit_menu(); // Sub menu for modifying or deleting any

accountbreak;

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{

choice = e_menu();clrscr();switch (choice){

case '1':

38

Page 39: Training Report

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;char l1 = 196, l2 = 179;if (c == ch){

c1 = 218;c2 = 191;

39

Page 40: Training Report

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 lineline_hor(column1, column2, row2, l1);column1--;column2++;row1++;row2--;line_ver(row1, row2, column1, l2); // Vertical lineline_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);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");

40

Page 41: Training Report

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)){

gotoxy(5, 5);cout << "\7Account not found";getch();return;

}

41

Page 42: Training Report

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 dategetdate(&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{

a.clear(15, 15);a.clear(5, 23);gotoxy(5, 23);cout << "Enter Name or Press Enter for No Change";valid = 1;

42

Page 43: Training Report

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

do{

a.clear(5, 23);gotoxy(5, 18);cout << "Do you want to save Changes <Y/N>: ";ch = getche();if (ch == '0')

return;

43

Page 44: Training Report

ch = toupper(ch);}while (ch != 'N' && ch != 'Y');

if (ch == 'N')return;

// Passes the parameter to add in data filemodify_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 filefile.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);strcpy(address, t_address);balance = t_balance;fstream file;

// Appends new account record with the balance into INITIAL.dat data filefile.open("INITIAL.dat", ios::out|ios::app);

44

Page 45: Training Report

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

}

// Function for deleting an account from INITIAL.dat filevoid 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 filewhile (!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 filewhile (!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){

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

45

Page 46: Training Report

cout << "Accounts List in Bank";gotoxy(25, 3);cout << "=====================";int d1, m1, y1;struct date d; // For extracting system dategetdate(&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 << " ";

}}

/* 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);

46

Page 47: Training Report

int found = 0;

// Searches the specified record in INITIAL.dat data filewhile (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);cout << "Global Report of Account";textbackground(WHITE);textcolor(BLACK);textbackground(WHITE);gotoxy(1, 6);for (int i = 1; i <=79; i++)

47

Page 48: Training Report

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();initial ini;if (!ini.found_account(t_accno)){

gotoxy(5, 5);cout << "\7Account not found";getch();

48

Page 49: Training Report

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 balancewhile (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 monthwhile (file.read((char *)this, sizeof(account))){

if ((accno == t_accno) && (mm1 == mm && yy1 <= yy)){

flag = 0;delay(2);gotoxy(4, row);cout << dd << "-" << mm << "-" << yy;gotoxy(16, row);puts(type);if (tran == 'D'){

damt = damt + amount;

49

Page 50: Training Report

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 continuesif (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++;

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

// Deposited amount

50

Page 51: Training Report

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 amountcout << setw(15)

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

gotoxy(66, row);tamt = tamt + pre_balance;// Balance amountcout << 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;s.box(2, 1, 79, 25, 218);s.box(25, 2, 54, 4, 219);

gotoxy(65, 2);cout << "<0>=Exit";gotoxy(3,3);

51

Page 52: Training Report

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 dategetdate(&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 filesif (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 : ";

do{

clear(15, 10);clear(5, 23);gotoxy(5, 23);cout << "Enter Name of the Person";

52

Page 53: Training Report

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;gotoxy(31, 12);gets(vari);strupr(vari);if (vari[0] == '0')

return;if (strlen(vari) == 0 || strlen(vari) > 25)

53

Page 54: Training Report

{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;t_amount = t_balance;t_interest = 0.0;char t_tran, t_type[10];t_tran = 'D';strcpy(t_type, "INITIAL");

54

Page 55: Training Report

// 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 accountwhile (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 filewhile (file.read((char *)this, sizeof(initial))){

count++;if (t_accno == accno)

break;}file.close();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)

55

Page 56: Training Report

{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 filefile.seekp(location); // Searches the insertion position in data file

// Updates the balance amount in INITIAL.dat data filefile.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;

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);

56

Page 57: Training Report

}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);d1 = d.da_day;m1 = d.da_mon;y1 = d.da_year;gotoxy(5, 6);cout << "Date: " << d1 << "/" << m1 << "/" << y1;gotoxy(5, 8);

57

Page 58: Training Report

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 : ";gets(t_type);strupr(t_type);if (t_type[0] == '0')

return;if (strcmp(t_type, "CASH") && strcmp(t_type, "CHEQUE")){

58

Page 59: Training Report

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')

return;float t_interest;

t_interest = calculate_interest(t_accno, t_balance);

if (t_tran == 'D')

59

Page 60: Training Report

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);cprintf("Close account screen");textcolor(LIGHTGRAY);textbackground(BLACK);int d1, m1, y1;struct date d;getdate(&d);

60

Page 61: Training Report

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();

}

OUTPUTS

The Main Menu looks like this:-

61

Page 62: Training Report

When we will click on New Account then:-

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

62

Page 63: Training Report

It will open the list of accounts which are already created

63

Page 64: Training Report

In the account we will get this screen

64

Page 65: Training Report

In daily trans this screen will open:-

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

65

Page 66: Training Report

By clicking on monthly report,the report will be generated

66

Page 67: Training Report

We can edit the account using:-Modify AccountClose Account

Using Modify Account:-

67

Page 68: Training Report

By Quit we will reach in Main menu

68

Page 69: Training Report

By exit we will exit from main menu

69