TRIBHUVAN UNIVERSITY
INSTITUTE OF ENGINEERING
ADVANCED COLLEGE OF ENGINEERING AND MANAGEMENT
DEPARTMENT OF ELECTRONICS AND COMPUTER ENGINEERING
KALANKI, KATHMANDU
A PROJECT REPORT ON
“VIRTUAL ATM SIMULATOR USING C++”
Submitted By:
Bipin Aryal- ACE082BCT027
Project Supervisor:
Mukunda Raj Joshi
Date: 2026/08/03
ACKNOWLEDGMENT
We would like to thank all those who helped and advised us in our project
“VIRTUAL ATM SIMULATOR USING C++”. We are particularly thankful to
our instructor for giving us the opportunity to do this project and for giving us
some invaluable advice, recommendations and support throughout the course of
this project. We would like to thank our college and the Department of Electronics
and Computer Engineering for providing us with a conducive academic
environment and necessary resources to complete this project. This project gave us
a practical knowledge of C++ programming and understanding of Object-Oriented
Programming concepts like classes, objects, encapsulation, inheritance,
polymorphism, constructors, destructors, exception handling and file handling.
Finally, we would like to thank our friends, classmates and everyone who has
helped us in any way on this journey.
ABSTRACT
The C++ Virtual ATM simulator is a console-based application, which is intended
to simulate the basic features and functions of Automated Teller Machines (ATM),
using principles of Object-Oriented Programming. The idea behind this project is
to create a simple and interactive environment for doing basic banking operations
such as creating an account, securely logging in using account number and PIN,
checking the balance, depositing cash, withdrawing cash, transferring cash,
changing the PIN and checking transaction history. The application is developed
using C++, taking into consideration core programming concepts such as classes
and objects, encapsulation, constructors and destructors, inheritance,
polymorphism, functions, conditional statements and loops, exception handling
and file managing. All the account details and records of transactions are saved in
files, which guarantees that all the information is kept safe even after the end of the
program. Apart from this, other important elements of this project include input
verification and error management methods used for processing incorrect inputs,
invalid login numbers, invalid accounts and accounts without money in them. This
project illustrates how Object-Oriented Programming concepts can be
implemented in the development of a banking simulation system. The project
serves as a base for future improvements, such as database incorporation, increased
safety, graphical interfaces, and improved banking functionalities.
Keywords: ATM, C++, File Handling, Object-Oriented Programming, Virtual
Banking
TABLE OF CONTENTS
ACKNOWLEDGMENT I
ABSTRACT II
TABLE OF CONTENTS III
CHAPTER 1: INTRODUCTION
1.1 Background of the Project
ATMs are commonly used by modern banking to provide customers with
convenient access to basic banking services. Operations available to users include
checking balance, depositing and withdrawing money, transferring funds, and
viewing transaction history. This project VIRTUAL ATM SIMULATOR USING
C++ is developed as a console-based application to simulate the basic
functionalities of ATM. The project is developed using the basic C++ language &
Object-Oriented Programming concepts like classes, objects, encapsulation,
inheritance, polymorphism, constructor, destructor, exception handling and file
handling etc.
1.2 Motivation
The goal of creating the VIRTUAL ATM SIMULATOR USING C++ is to
implement the theoretical knowledge of C++ and Object-Oriented Programming in
a practical, real-world inspired application. ATM systems are familiar and useful
examples for learning how software can manage user accounts and do different
transactions. This project is an opportunity to learn and practice important
programming concepts like classes, objects, encapsulation, inheritance,
polymorphism, file handling and exception handling while developing a simple
and interactive banking simulation.
1.3 Problem Statement
Traditional ATM systems require complex technologies, databases, network
connections and security mechanisms. A full banking system is well beyond the
scope of a basic C++ OOP lab project. Therefore, a simple system which shows the
basic ATM operations and utilizes simple programming concepts is required. This
requirement is fulfilled by the VIRTUAL ATM SIMULATOR USING C++ with
features like account creation, login, balance inquiry, deposit, withdrawal, transfer
of funds, change of PIN and transaction history. File handling is also used to save
account and transaction details. Simple input validation and exception handling are
also implemented to handle some common errors.
1.4 OBJECTIVES
The objectives of the VIRTUAL ATM SIMULATOR USING C++ are divided into
general and specific objectives as follows:
1.4.1 General Objectives
The general objective of this project is to develop a simple and interactive Virtual
ATM Simulator using C++ that demonstrates basic ATM operations and the
practical implementation of Object-Oriented Programming concepts.
1.4.2 Specific Objectives
The specific objectives of the project are:
1. Developing and deploying a menu-driven banking application in C++.
2. To apply the basic OOP concepts (classes, objects, inheritance,
encapsulation and polymorphism) in a real-world project.
3. To use file handling to permanently store account and transaction data so
that it remains available even after the program is closed and reopened.
4. To use custom exception classes for gracefully handling run-time errors.
5. To gain confidence in structuring a medium-sized C++ program with several
cooperating classes and functions.
1.5 SIGNIFICANCE OF THE STUDY
The VIRTUAL ATM SIMULATOR USING C++ is very important as it is the
practical way to understand the concept of C++ and Object Oriented Programming
concepts in a real world inspired system. The project is mainly useful for students
to develop practical programming skills and understand the concepts of classes,
objects, encapsulation, inheritance, file handling and exception handling. It also
helps students to understand the basics of banking operations and how they can be
managed and organized using software. Teachers and instructors can use the
project as an educational example to demonstrate OOP concepts and programming
techniques. In short, the project is a simple base for building more complex
banking and financial applications in the future.
CHAPTER 2: LITERATURE REVIEW
2.1 Overview
The expansion of ATM and banking systems has enhanced the ways in which
people access and manage their financial services. Today’s ATM systems enable
users to perform a variety of operations including cash withdrawal, checking
account balances, funds transfer and transaction detail viewing without the direct
involvement of bank staff. These systems use software to process transactions,
authenticate users and manage account information.
From a programming point of view, ATM systems are a good practical example to
learn software design and data management. We can use OOP (object-oriented
programming) concepts such as classes, objects, encapsulation, inheritance,
polymorphism to organize different aspects of an ATM system. C++ also includes
file handling and exception handling, which are useful for building a basic ATM
simulation.
Modern banking applications typically include advanced databases, graphical user
interfaces, network connectivity, encryption and various security measures. But
these systems can be difficult to understand for beginners. The VIRTUAL ATM
SIMULATOR USING C++ is focused to simplify the basic ATM operations into
a console based application. It aims to bridge the gap between knowing the C++
OOP concepts in theory and using them in practice, by implementing account
management, authentication, transactions, file based data storage and error
handling in a simple and easily understood system.
CHAPTER 3: METHODOLOGY
This chapter describes the methodology used to develop the VIRTUAL ATM
SIMULATOR USING C++. The project was developed using a structured, step-by-
step approach to achieve the defined objectives. The system was designed using
Object-Oriented Programming concepts and implemented as a menu-driven
console application. The methodology includes system design, account
management, user authentication, transaction processing, file handling, and error
handling. The major steps involved in the development of the project are presented
through the algorithm, flowchart, and source code sections.
3.1 Algorithm