Project Report (ATM SIMULATOR) PDF
Project Report (ATM SIMULATOR) PDF
on
Submitted in partial fulfillment of the requirements for the award of the degree of
BACHELOR OF TECHNOLOY
Undertaken at:
Submitted by:
NAME : Khushi
CLASS : B.Tech.CSE(3CE1)
2021
1
CERTIFICATE
2
DECLARATION
I, Khushi, hereby affirm that the project report titled ―ATM Simulator, submitted to Punjabi
University, Patiala in partial fulfillment of the requirements for the award of the degree of
B.Tech.(Computer Science and Engineering) is an authentic record of my own work and that to
the best of my knowledge and belief, it contains no written material which has been accepted for
the qualification of any other degree or diploma of a university or other institution of higher
learning except where due acknowledge is made.
Signature of student:
Group: 3Ce1
3
ACKNOWLEDGEMENT
It is great pleasure to present this report on the project named as ―ATM SIMULATOR‖
undertaken by me as a part of my B.Tech.CSE curriculum. I am heartily thankful to my
Department of Computer Science and Engineering, Punjabi University, Patiala for offering
me such a wonderful challenging opportunity to express my deepest thanks to all the
coordinators and my mates for providing me all the possible help and assistance .It is our earnest
duty to express our thanks to all those who contributed directly or indirectly to our project .First
and foremost, I would like to thank Center for Development of Advanced Computing, Mohali
for giving me an opportunity .I would like to thank Ms. Nandita Singla, who initiated me to
complete this project and for placing complete faith and confidence in my ability to carry out this
project and guided me timely.
There might be some problems and extra requirements with this system. In future these problems
will be corrected accordingly. For this your valuable suggestions are most welcomed.
4
TABLE OF CONTENTS
1. Training Certificate 2
2. Declaration 3
3. Acknowledgement 4
9. Snapshots 29-38
10. Conclusion` 39
11. References 40
5
INSTITUTE PROFILE
Centre for Development of Advanced Computing (C-DAC) is the premier R&D organization of
the Ministry of Electronics and Information Technology (MeitY) for carrying out R&D in IT,
Electronics and associated areas. Different areas of C-DAC, had originated at different times,
many of which came out as a result of identification of opportunities.
The setting up of C-DAC in 1988 itself was to built Supercomputers in context of denial
of import of Supercomputers by USA. Since then C-DAC has been undertaking building
of multiple generations of Supercomputer starting from PARAM with 1 GF in 1988.
Almost at the same time, C-DAC started building Indian Language Computing Solutions
with setting up of GIST group (Graphics and Intelligence based Script Technology);
National Centre for Software Technology (NCST) set up in 1985 had also initiated work
in Indian Language Computing around the same period.
With the passage of time as a result of creative ecosystem that got set up in C-DAC, more
areas such as Health Informatics, etc., got created; while right from the beginning the
focus of NCST was on Software Technologies; similarly C-DAC started its education &
6
training activities in 1994 as a spin-off with the passage of time, it grew to a large efforts
to meet the growing needs of Indian Industry for finishing schools.
C-DAC has today emerged as a premier R&D organization in IT&E (Information Technologies
and Electronics) in the country working on strengthening national technological capabilities in
the context of global developments in the field and responding to change in the market need in
selected foundation areas. In that process, C-DAC represents a unique facet working in close
junction with MeitY to realize nation‘s policy and pragmatic interventions and initiatives in
Information Technology. As an institution for high-end Research and Development (R&D), C-
DAC has been at the forefront of the Information Technology (IT) revolution, constantly
building capacities in emerging/enabling technologies and innovating and leveraging its
expertise, caliber, skill sets to develop and deploy IT products and solutions for different sectors
of the economy, as per the mandate of its parent, the Ministry of Electronics and Information
Technology, Ministry of Communications and Information Technology, Government of India
and other stakeholders including funding agencies, collaborators, users and the market-place.
Institute’s vision:
To emerge as the premier R&D institution for the design, development and deployment of world
class electronic and IT solutions for economic and human advancement.
Institute’s Mission:
Share experience and know-how to help build advanced competence in the areas of
Electronics and Information Technology.
7
Bring benefits of Electronics and Information Technology to society.
CORE VALUES
The essence of C-DAC's philosophy and the bed rock of our Corporate Culture...
The primary activity in all centres of C-DAC is research and development in specific areas of
information and communication technology and electronics (ICTE). Across all these centres, we
span a wide range of topics in ICTE. Broadly, we can divide the R&D activities into two broad
classes: the enabling technologies and application verticals. The research activities are usually
driven by specific application areas, and hence mostly applied in nature.
Based on the vision charted by the parent ministry (MCIT), international trends, Indian
requirements, etc CDAC identifies significant thrust areas for focus across the various centres.
The thrust areas, at present, are:
8
cloud computing.
Multi-lingual Computing spanning the entire range from fonts and encoding to speech
and language translation, which includes fonts for Indian languages, encoding standards,
information extraction and retrieval, machine aided translation, speech recognition and
synthesis, etc.
Professional Electronics covering electronic devices and embedded systems. This area
covers work such as underwater electronics, software radio, ubiquitous computing.
Information and Cyber Security including intrusion detection and prevention, malware
analysis, cyber forensics, network security, etc.
Institute’s Details:
9
INTRODUCTION TO JAVA
Java programming language was originally developed by Sun Microsystems which was initiated
by James Gosling and released in 1995 as core component of Sun Microsystems' Java platform .
James Gosling initiated Java language project in June 1991 for use in one of his many set-top
box projects. The language, initially called ‗Oak‘ after an oak tree that stood outside Gosling's
office, also went by the name ‗Green‘ and ended up later being renamed as Java, from a list of
random words.
Sun released the first public implementation as Java 1.0 in 1995. It promised Write Once, Run
Anywhere (WORA), providing no-cost run-times on popular platforms.
The latest release of the Java Standard Edition is Java SE 8. With the advancement of Java and
its widespread popularity, multiple configurations were built to suit various types of platforms.
For example: J2EE for Enterprise Applications, J2ME for Mobile Applications.
If that were all Java was, it would still be more interesting than a <marquee> or <frame> tag in
some new browser beta, but there's a lot more. Java isn't just for web sites. Java is a
programming language that can do almost anything a traditional programming language like
FORTRAN, Basic or C++ can do. However Java has learned from the mistakes of its
predecessors. It is considerably easier to program and to learn than those languages without
giving up any of their power.
The Java language shares many superficial similarities with C, C++, and Objective C. For
instance, loops have identical syntax in all four languages, However, Java is not based on any of
these languages, nor have efforts been made to make it compatible with them.
10
Java is sometimes referred to as C++++--. James Gosling invented Java because C++ proved
inadequate for certain tasks. Since Java's designers were not burdened with compatibility with
existing languages, they were able to learn from the experience and mistakes of previous object-
oriented languages. They added a few things C++ doesn't have like garbage collection and
multithreading (the ++) and they threw away C++ features that had proven to be better in theory
than in practice like multiple inheritance and operator overloading (the --). A few advanced
features like closures and parameterized types that the Java team liked were nonetheless left out
of the language due to time constraints. There's still argument over whether the right choices
were made. Parameterized types (templates to C++ programmers) may be added in a later
revision of Java.
Java has learned a lot from previous languages. Let's look at some of the advantages Java offers
programmers.
Java is Simple
Java was designed to make it much easier to write bug free code. According to Sun's Bill Joy,
shipping C code has, on average, one bug per 55 lines of code. The most important part of
helping programmers write bug-free code is keeping the language simple.
Java has the bare bones functionality needed to implement its rich feature set. It does not add lots
of syntactic sugar or unnecessary features. The language specification for Java is only about
eighty pages long compared to a couple of hundred pages for C and even more for C++. Despite
its simplicity Java has considerably more functionality than C.
Because Java is simple, it is easy to read and write. Obfuscated Java isn't nearly as common as
obfuscated C. There aren't a lot of special cases or tricks that will confuse beginners.
About half of the bugs in C and C++ programs are related to memory allocation and
deallocation. Therefore the second important addition Java makes to providing bug-free code is
automatic memory allocation and deallocation. The C library memory allocation functions
malloc() and free() are gone as are C++'s destructors.
11
Java is an excellent teaching language, and an excellent choice with which to learn
programming. The language is small so it's easy to become fluent in it. The language is
interpreted so the compile-link-run cycle is much shorter. (In fact, the link phase is eliminated
entirely.) The runtime environment provides automatic memory allocation and garbage
collection so there's less for the programmer to think about. Java is object-oriented (unlike Basic)
so the beginning programmer doesn't have to unlearn bad programming habits when moving into
real world projects. Finally, it's very difficult (if not quite impossible) to write a Java program
that will crash your system, something that you can't say about any other language.
Java is Object-Oriented
Object oriented programming was the catch phrase of computer programming in the 1990's.
Although object oriented programming has been around in one form or another since the Simula
language was invented in the 1960's, it really took hold in modern GUI environments like
Windows, Motif and the Mac. In object-oriented programs data is represented by objects.
Objects have two sections, fields (instance variables) and methods. Fields tell you what an object
is. Methods tell you what an object does. These fields and methods are closely tied to the object's
real world characteristics and behavior. When a program runs messages are passed back and
forth between objects. When an object receives a message, it responds accordingly as defined by
its methods.
In practice object-oriented programs have been just as slow, expensive and buggy as traditional
non-object-oriented programs. In large part this is because the most popular object-oriented
12
language is C++. C++ is a complex, difficult language that shares all the obfuscation of C while
sharing none of C's efficiencies. It is possible in practice to write clean, easy-to-read Java code.
In C++ this is almost unheard of outside of programming textbooks.
Java was designed to not only be cross-platform in source form like C, but also in compiled
binary form. Since this is frankly impossible across processor architectures, Java is compiled to
an intermediate form called byte-code.
A Java program never really executes natively on the host machine. Rather a special native
program called the Java interpreter reads the byte code and executes the corresponding native
machine instructions. Thus to port Java programs to a new platform, all you need to do is run it
with an interpreter written for the new platform. You don't even need to recompile. Even the
compiler is written in Java. The byte codes are precisely defined, and remain the same on all
platforms.
The second important part of Java's cross-platform savvy is the elimination of undefined and
architecture dependent constructs. Integers are always four bytes long, and floating point
variables follow the IEEE 754 standard for computer arithmetic exactly. You don't have to worry
that the meaning of an integer is going to change if you move from a Pentium to a PowerPC. In
Java everything is guaranteed.
However the virtual machine itself and some parts of the class library must be written in native
code. These are not always as easy or as quick to port as pure Java programs. This is why for
example, there's not yet a version of Java 1.2 for the Mac.
Java is Safe
Java was designed from the ground up to allow for secure execution of code across a network,
even when the source of that code was untrusted and possibly malicious.
13
This required the elimination of many features of C and C++. Most notably there are no pointers
in Java. Java programs cannot access arbitrary addresses in memory. All memory access is
handled behind the scenes by the (presumably) trusted runtime environment. Furthermore Java
has strong typing. Variables must be declared, and variables do not change types when you aren't
looking. Casts are strictly limited to casts between types that make sense. Thus you can cast an
int to a long or a byte to a short but not a long to a Boolean or an int to a String.
Java implements a robust exception handling mechanism to deal with both expected and
unexpected errors. The worst that a Java program can do to a host system is bringing down the
runtime environment. It cannot bring down the entire system.
Most importantly Java applets can be executed in an environment that prohibits them from
introducing viruses, deleting or modifying files, or otherwise destroying data and crashing the
host computer. A Java enabled web browser checks the byte codes of an applet to verify that it
doesn't do anything nasty before it will run the applet.
However the biggest security problem is not hackers. It's not viruses. It's not Visual Basic worms
transmitted by Outlook Express. It's not even insiders erasing their hard drives and quitting your
company to go to work for your competitors. No, the biggest security issue in computing today is
bugs. Regular, ordinary, non-malicious, unintended bugs are responsible for more data loss and
lost productivity than all other factors combined. Java, by making it easier to write bug-free
code, substantially improves the security of all kinds of programs.
Java byte codes can be compiled on the fly to code that rivals C++ in speed using a "just-in-time
compiler." Several companies are also working on native-machine-architecture compilers for
Java. These will produce executable code that does not require a separate interpreter, and that is
indistinguishable in speed from C++. While you'll never get that last ounce of speed out of a Java
program that you might be able to wring from C or FORTRAN, the results will be suitable for all
but the most demanding applications.
14
As of May, 1999, the fastest VM, IBM's Java 1.1 VM for Windows, is very close to C++ on
CPU-intensive operations that don't involve a lot of disk I/O or GUI work; C++ is itself only a
few percent slower than C or FORTRAN on CPU intensive operations.
It is certainly possible to write large programs in Java. The Hot Java web browser, the JBuilder
integrated development environment and the javac compiler are large programs that are written
entirely in Java.
Java is Multi-Threaded
Java is inherently multi-threaded. A single Java program can have many different processes
executing independently and continuously. Three Java applets on the same page can run
simultaneously with each getting equal time from the CPU with very little extra effort on the part
of the programmer. This makes Java incredibly responsive to user input. It also helps to
contribute to Java's robustness and provides a mechanism whereby the Java environment can
ensure that a malicious applet doesn't steal all of the host's CPU cycles.
Unfortunately multithreading is so tightly integrated with Java, that it makes Java rather difficult
to port to architectures like Windows 3.1 or the PowerMac that don't natively support preemptive
multi-threading.
There is another cost associated with multi-threading. Multi-threading is to Java what pointer
arithmetic is to C; that is, a source of devilishly hard to find bugs. Nonetheless, in simple
programs it's possible to leave multi-threading alone and normally be OK.
Java does not have an explicit link phase. Java source code is divided into .java files, roughly
one per each class in your program. The compiler compiles these into .class files containing byte
15
code. Each .java file generally produces exactly one .class file. (There are a few exceptions we'll
discuss later, non-public classes and inner classes).
The compiler searches the current directory and a few other well specified places to find other
classes explicitly referenced by name in each source code file. If the file you're compiling
depends on other, non-compiled files, then the compiler will try to find them and compile them
as well. The Java compiler is quite smart, and can handle circular dependencies as well as
methods that are used before they're declared. It also can determine whether a source code file
has changed since the last time it was compiled.
More importantly, classes that were unknown to a program when it was compiled can still be
loaded into it at runtime. For example, a web browser can load applets of differing classes that
it's never seen before without recompilation.
Furthermore, Java .class files tend to be quite small, a few kilobytes at most. It is not necessary
to link in large runtime libraries to produce an executable. Instead the necessary classes are
loaded from the user's local system.
COMPONENTS:
16
Runtime Instance: An instance of JVM is created whenever you write a command on
the command prompt and run the class.
JRE refers to a runtime environment in which bytecode can be executed. It implements the JVM
and provides all the class libraries and other support files that JVM uses at runtime. So JRE is a
software package that contains what is required to run a program. Basically, it‘s an
implementation of the JVM which physically exists.
Compile
Document
The JDK completely includes JRE which contains tools for programmers. The Development Kit
is provided free of charge. Along with JRE, it includes an interpreter/loader, a compiler (javac),
an archiver (jar), a documentation generator and other tools needed in Java development. In
short, it contains JRE + development tools.
AWT
The Abstract Window Toolkit (AWT) package enables you to create GUIs in your applets and
applications. Different Windows API from different platforms were looked at and components
were identified that were common to all of them. The AWT API communicates with the
platform's native API's as to give your application the native look and feel. Because they
associate with their own native screen resources, AWT components are called heavyweight
components. Swing components do not associate with native resources and are called lightweight
17
components. The AWT consists of components, both container and non-container ones (eg.
Button, Checkbox, Choice, ...) Container components (eg. Frame, Dialog, Window, Panel)
control the layout of other components. As containers are themselves components, they can be
placed inside other containers. Check out these links and subcategories on how to create and
work with these containers and components.
Subcategories
Button Insets
Color List
Dialog Robot
Event ScrollPane
Frame Toolkit
Graphics
18
Swing
Swing is not an acronym. It packages a set of GUI components. Unlike AWT components, that
are associated to native screen resources (heavyweight), Swing components draw themselves on
the screen (lightweight). This results in slower execution but a Swing application will look the
same on all platforms. Because Swing supports pluggable look-and-feel, you could have a
Windows look in your Unix environment (if you would ever want that). Check out the numerous
subcategories for code examples for each component!
Subcategories
Swing Events
19
MSSQL
MSSQL is the world‘s most popular database .MSSQL uses Structured Query Language (SQL),
the most popular language for adding, accessing, and processing data in a database. MSSQL is
also noted for its speed, reliability, and flexibility. However, the use of MSSQL is not essential
for this system and any other SQL compliant database could be used in its place.
JDBC
The Java DataBase Connectivity (JDBC) API allows java programs to connect to a wide range of
SQL databases. It is a simple SQL-level API that capitalizes on the experience of existing
database APIs like ODBC (Open DataBase Connectivity). JDBC allows us to construct SQL
statements and embed them in Java. It provides a smooth transition between the Java application
and the database. The results from the database are returned as Java variables. A JDBC driver is
required to implement the JDBC protocol for a particular database engine. This project uses a
free-ware third- party driver for MySQL.
The answer lies primarily with the exhaustive testing, updating and consistency of delivery that
Java has historically provided. Java has been tested, refined, extended, and proven by a dedicated
community of Java developers, architects and enthusiasts. Despite origins dating back almost
two decades, Java has consistently evolved over the years.
Java is designed to enable development of portable, high-performance applications for the widest
range of computing platforms possible, hence enabling the fundamental tenets of overarching
accessibility as well as cross-platform interaction. By making applications available across
heterogeneous environments, businesses can provide more services and boost end-user
productivity, communication, and collaboration—and dramatically reduce the cost of ownership
of both enterprise and consumer applications.
20
Java has become invaluable to developers by enabling them to:
Write software on one platform and run it on virtually any other platform.
Create programs that can run within a web browser and access available web services.
Develop server-side applications for online forums, stores, polls, HTML forms processing, and
more.
Combine applications or services using the Java language to create highly customized
applications or services.
Write powerful and efficient applications for mobile phones, remote processors,
microcontrollers, wireless modules, sensors, gateways, consumer products, and practically any
other electronic device.
The underlying principle that has enabled Java‘s success is the ability of the developers and
coders consistently upgrading the model to be competitive to modern technological standards.
Application
According to Sun, 3 billion devices run Java. There are many devices where Java is currently
used. Some of them are as follows:
4. Mobile
5. Embedded System
6. Smart Card
7. Robotics
8. Games, etc.
21
Introduction to ATM Simulator:-
The main goal of this application is to provide very reliable & efficient service to bank account
holder at any time & any location.
1. Login
2. Signup
3. Cash Withdrawal.
4. Balance Enquiry.
5. Mini Statement.
6. PIN Change.
7. Cash Deposit.
8. Fast Cash.
22
Detail information about system modules,
1. Login:-
Any authorized ATM card holder first have to login to the ATM system which
requests for its Card no. and PIN no to continue its services.
2. Signup :-
If you want to create new account you can easily create by filling some personal
information and some other information, then this ATM Simulator will display your
Cardno and PIN no to you, with that you can easily enjoy all the services.
3. Cash Withdrawal :-
It mainly used for withdrawal of cash as per customer demand. By writing PIN no
customer can withdraw amount.
4. Balance Enquiry :-
It refers to enquiry of bank balance of an authorized ATM card holder account
to check for the resulting balance after certain transactions.
5. Mini Statement:-
It refers to enquiry of last transactions of an authorized ATM card holder. It
includes deposit & withdrawal amount of transaction & also contains respective
transaction date and current available balance.
23
6. PIN Change:-
It refers to the Change of PIN no of an authorized ATM card holder. I require
giving system old PIN no of the ATM card & then giving new PIN no & confirm the new
PIN no.
7. Cash Deposit:-
It mainly used for deposit cash amount to their bank account as per customer
demand. It is easy process of deposit amount to their bank accounts without filling
deposit form.
8. Fast Cash:-
It mainly used for withdrawing small amount of cash ie Rs 100, Rs 500, Rs1000,
Rs 2000, Rs 5000, Rs 10000 .
24
Hardware Requirements:-
Software Requirements:-
Java Run Time Environment (JRE) – jdk1.5 (As Front End Tool).
Mysql-connector-java-5.1.22-bin.
25
1) Table Name: - signup It stores the information about new account holder personal
information.
Table 1 signup
26
2) Table Name: - signup2 It stores the information about new account holder personal
account information.
Table 2 signup2
3) Table Name: - login It stores the login information of ATM card holders.
Table 3 login
27
4) Table Name: - bank It stores the information about each transaction created by ATM
card holder.
Table 4 bank
28
1) Welcome screen:
29
2) New Account Application Form: if want to create new account ,Press SIGN UP
30
3) New Account Application Form – Page 2
31
4) If want to login to old account, press SIGN IN, if enter wrong ATM no or PIN no.
32
5) Transaction screen: on success, the transaction menu screen will open.
33
6) Cash withdrawal screen: if cash withdrawal is success then appear below screen
34
7) If want to check balance
35
8) Cash deposit screen: if cash deposit is success then appear below screen.
36
9) PIN change screen: if we enter old pin no correct and new & confirm pin no same then
appear below screen.
37
10) PIN change screen: if we enter old pin no wrong and new & confirm pin no same then
appear below screen.
38
Conclusion:-
Great skills have been achieved during the development of this project, time management being
one of them, research in various areas of web and database and at the end of the day it can be
said that the task has been a great success incorporated with extraordinary challenges. All in all
the sleepless nights, stressful days and hard work have paid off and besides some good moments
were also experienced. These experiences will be used for ever.
ATM Simulator is a Java based project in which user can create an account by providing his or
her personal details like name, address, gender etc and after creating new account the user can do
transactions according to their choice like depositing money, withdrawing money, balance
enquiry or change pin number.
I have explored practicality of doing parallel computing in Java and I have successfully
implemented our ATM Simulator .I have efficiently programmed and executed in java.
39
References:-
The following are the website links which I have referred to create this project report:
https://www.researchgate.net/publication/282218734_ATM_MACHINE_PROGRAMM
ING_WITH_JAVA
https://www.tutorialspoint.com/java/java_overview.htm
https://cdac.in/index.aspx?id=mohali
https://cdac.in/
40