ATM Transaction Tracker Programming Guide
ATM Transaction Tracker Programming Guide
Introduction
Tech Hub: Empowering Innovation Through Technology
Tech Hub is a top IT company known for providing clients worldwide with cutting-edge digital
services and technologies that change how things are done. Tech Hub helps companies improve
their operations and gain a competitive edge by focusing on software development, cloud
computing, privacy, and AI-driven solutions. Our goal is to promote new ideas, speed up the
digital change process, and provide flexible, safe, and user-centered technology that adapts to
the changing needs of modern businesses. Tech Hub is at the top of the IT business and is
shaping the future of technology. They have a team of skilled professionals behind them and are
committed to quality (Greenstein, 2006).
The problem to be discussed ATM Transaction History Tracker.
What is an Algorithm?
An algorithm is essentially a series of steps that are both obvious and logical, and they are
followed to accomplish a job or find a solution to a problem. Consider it to be similar to a
recipe; just as a culinary recipe will instruct you on how to prepare a meal in a step-by-step
manner, an algorithm will instruct a computer on what actions to perform and in what
sequence to perform them(Cormen, 2006).
The following is an example of how the algorithm would work in an automated teller machine
(ATM) system if a user wishes to withdraw money:
Python was chosen as the computer language for the ATM Transaction History Tracker because
it is easy to learn and write code. Python works especially well for this kind of app because it
lets you make changes quickly and handles user input and conditional logic well. The program
stores transaction records in Python's dynamic list data structure, which lets users' activities be
tracked in real time and a variety of ways. The implementation is set up in modules, with
separate features for entering and withdrawing money, checking the amount, and seeing a log
of transactions. This modularity makes the code clearer, easier to manage, and faster to fix. The
main control loop is a menu-driven system that makes things easy to understand and fun to use.
Each choice in the menu directly runs the corresponding function, making it easy to move
around and use the console-based environment(Necaise, 2016).
To see how the algorithm and its code are related, let's look at an example of an algorithm step
and the code that goes with it.
Overall Evaluation
The finished program works the same way as the first method and is very similar to it. If
statements, function calls, and data structure moves are used to show each choice or step in the
method in the code. The careful matching of algorithm logic and code structure can be seen in
the way that lists are used to store transaction history, float variables are used to store balance,
and input is checked. The modular function-based design also keeps the logical purpose while
making things clear, easy to understand, and simple to keep up to date. The ATM Transaction
History Tracker's Python code implements the algorithm. Implementation accuracy and
efficiency are shown by the direct link between algorithm steps and code lines. This connection
makes the application operate as intended and easy to expand or troubleshoot.
Syntax Missed colon in if amount > 0 Used the Python interpreter to locate and correct
Error the syntax.
Value The user enters text instead of Wrapped input handling in a try-except block to
Error a number prevent crashing.
Logic Allowing withdrawal more than Added a condition to check if the amount <=
Error the balance balance before deducting.
Debugging Application
LO2 Explain the characteristics of procedural, object-
oriented, and event-driven.
Procedural Programming is built on the idea that instructions should be carried out in a
structured, logical order. The program is broken up into smaller functions or procedures that do
specific jobs. This is called a top-down approach. Function calls make this type of computing
easy to reuse code, and it's usually only used for small or simple tasks. Variables and data are
usually shared between parts of the program, and control moves in a clear, straight line. This
approach is often used in languages like C and early versions of Python(Atencio, 2016).
Object-Oriented Programming (OOP) is about how to use objects, which are instances of
classes, to describe things in the real world. Encapsulation, inheritance, and polymorphism are
some of the features that this paradigm allows. These make code more organized, reusable, and
scalable. If you have a system that is big or complicated, OOP can help you keep the data and
behavior together. Each object is in charge of its state, and objects can talk to each other
through methods. Java, C++, and Python (when used with classes) are all well-known OOP
languages(Mössenböck, 1995).
Event-driven programming is built around the idea of reacting to events or human actions, like
pressing a key or clicking a button. When an event happens, the computer runs the event
handlers that go with it. This method is often used in GUI-based programs, games, and web
apps that need to respond quickly to user input. The program's flow changes based on what
happens and when it happens. For event-driven programming, people often use languages like
Python, JavaScript, Visual Basic, and languages with GUI tools like Tkinter(Open University,
2007).
P3 – Discussion on Programming Paradigms: Procedural,
Object-Oriented, and Event-Driven.
Aspect Procedural Object-Oriented Event-Driven
Programming Programming (OOP) Programming
Main Elements Functions, variables, Classes, objects, methods, Events, event listeners,
loops, and inheritance, encapsulation, handlers, and callbacks.
conditionals. and polymorphism.
Programming C, Pascal, Python Java, C++, Python (with JavaScript, Visual Basic,
Languages (basic). classes), C#. Python (with Tkinter or
PyQt).
Relation to Can be used within Can incorporate Often built on top of OOP
Others OOP methods or procedural logic in class (for GUI components) and
event handlers. methods; often used with may use procedural logic
event-driven design. in handlers.
Procedural code is mostly used to make the ATM program's main features work, like deposits,
withdrawals, and writing transaction histories. There are separate actions that are run in a
certain order by functions like deposit (), withdraw (), and print history (). The main loop that
gives the user choices and controls the flow is also procedural because it uses if-else statements
to control each step(Alex Louwe Kooijmans et al., 2012).
A modular version of the program can utilize classes to encapsulate functionality. A Bank
Account class may include characteristics such as balance and history, as well as methods like
deposit (), withdraw (), and get history (). This facilitates the creation and independent
management of many user accounts, enhancing code reusability and scalability(Pecinovsky,
2013).
Event-Driven Programming (If GUI is used)
Enhancing the application with a GUI utilizing Python's Tkinter incorporates event-driven
programming. Button clicks (e.g., "Deposit", "Withdraw", "View History") activate event
handlers that perform designated functions. These actions rely on user involvement instead of a
predetermined sequence, rendering the program dynamic and responsive.
deposit button = Button (window, text="Deposit", command=handle deposit).
Comparison Summary
Aspect Procedural Object-Oriented Event-Driven
Used For Core logic, Creating reusable account User interaction through
input/output, and objects and data models. GUI buttons or events.
balance updates.
Code Functions and control Classes and methods Event listeners are
Structure flow (if-else, loops). encapsulating data and linked to GUI actions.
logic.
Execution Sequential, Based on object Triggered by user
Flow command-line based. interactions and method actions like clicks or
calls. inputs.
Suitability Simple logic and flow. Scalable design and user Interactive, responsive
management. applications.
Presence in Present in the CLI- Present in Present if the GUI is
Application based version. modular/advanced versions implemented with
using classes. Tkinter or PyQt.
D2 – Critical Evaluation of Source Code Implementing
Multiple Paradigms.
The ATM Transaction History Tracker uses procedural, object-oriented, and event-driven
paradigms. A critical analysis of its source code shows how various paradigms affect structure,
maintainability, and functionality. Each paradigm contributes differently to development, and
their cohabitation has pros and cons.
The ATM Transaction History Tracker's CLI sequentially deposits, withdraws, and prints history.
This code makes updating balances and storing transactions easy for novices. Procedures are
limited by program growth. New account types and login features may need repetitive code and
clutter, making scaling and maintenance tougher. The software uses unencapsulated global
variables like balance and history, which increases the possibility of accidental mistakes and
makes it less secure and harder to debug(Fincher and Robins, 2019).
OOP in the modular ATM Transaction History Tracker uses bank accounts. Account balance and
transaction history are linked to depositing funds and examining transaction logs. The program
is flexible and scalable because it can produce several account instances. OOP can provide
overdraft protection, account verification, modularity, code reuse, and data encapsulation to
prevent unauthorized access.
Tainter GUIs event-drive ATM Transaction History Trackers. When users click "Deposit" or
"Withdraw", event handlers call functions or class methods. A more intuitive and accessible UI
makes the program feel like an ATM system, boosting user experience. Working without a
command-line menu boosts engagement and responsiveness. This transition is tricky. A non-
linear control flow hampers logic testing and debugging. Having too many GUI elements in one
file might fragment event-handling code, making it harder to maintain and understand(Yeager,
2012).
Analysis
The ATM Transaction History Tracker uses multiple programming paradigms, demonstrating a
well-rounded and successful design approach. Procedures for deposits and withdrawals are
simple to learn and use. Object-oriented programming provides structure and scalability by
enclosing account data and behaviors in classes. This simplifies code organization and reuse.
The Tainter GUI's event-driven paradigm simplifies app interaction and makes it more
responsive and understandable. Combining these paradigms requires careful planning. If you
don't separate GUI elements from data handling and business logic, the codebase can quickly
become convoluted and hard to manage. Using architectural patterns like Model-View-
Controller (MVC) or separating the project into data, logic, and interface files or modules can
make the software easier to comprehend, maintain, and add to.
Python Code
M3 – Enhancing the Algorithm Using IDE Features
To meet the needs of M3, the previously written algorithm was made more efficient, scalable,
and easy to manage. The Visual Studio Code (VS Code) IDE's full set of features were also used.
These changes show how good programming practices can turn a simple algorithm into an
application that is easier to use and more reliable with the right tools(S Arakawa and Sharma,
1996).
Enhancements Made to the Algorithm
Input Validation Limited to basic error Added robust validation for numeric input and
catching non-negative values
Code Modularity Basic class with Introduced clearer method documentation and
procedural logic refactoring for readability
Transaction Not available Each transaction now records the date and
Timestamps time for a detailed history
User Feedback Basic print messages Improved clarity with formatted outputs
Code Formatting (Shital) Automatically formatted the code for improved readability
Linting (via Plint) Helped identify unused imports, unreachable code, and
variable misuse
Live Server (for GUI variant Allowed visual inspection of the GUI-based event-driven
testing) version (if used)
Git Integration Helped track code changes and manage versioning during
enhancement phases
Feature Evaluation
Debugging Tools IDEs offer built-in debuggers that allow breakpoints, step-through
execution, and variable inspection, making bug tracking and correction
much more efficient.
Real-time Error Syntax and some logical errors are identified as you type, preventing
Highlighting issues before runtime.
Integrated Terminal Allows seamless code execution and testing within the same window,
eliminating the need to switch between environments.
Code Formatting & Ensures consistent and readable code through automatic formatting
Linting tools and linters.
Project Built-in file explorers and Git integration help manage multiple files and
Management maintain version control within the IDE.
Extensions & Additional tools like Python formatter, Pylint, or GitLens enhance
Plugins productivity and code quality.
Limitation Evaluation
No Code Developers must memorize syntax and logic, increasing the risk of typos
Suggestions and slowing development.
Error Discovery at Errors only become visible when the program is executed, making
Runtime troubleshooting more difficult.
No Integrated External programs are required for version control, formatting, and
Tools running the program, resulting in a disjointed workflow.
Higher Learning Beginners may struggle with command-line operations and manual
Curve configurations.
Improved user experience by exporting transaction history, easily implemented using IDE’s
syntax hints.
Without IDE:
Manual code execution through the command line took longer and was error-prone.
No real-time feedback caused multiple crashes before finding minor issues.
Lack of formatting tools made the code harder to read and maintain.
Reason Description
Readability A clear and uniform structure makes code easier to read and
understand by others.
Maintainability Code written with standards is easier to debug, enhance, and maintain
over time.
Error Prevention Standards often enforce naming conventions and formatting that
prevent logical or syntactic errors.
Tool Description
Breakpoint Click beside the line number where the bug might be (e.g., amount =
float(input(...))) to pause execution there.
Step Over (F10) Executes the next line without diving into functions — useful for
checking flow.
Variables Panel Shows current variable values — lets you confirm what's inside the
amount or self. Balance.
Console Output View any exceptions or print messages to follow the user flow and
outputs.
An Integrated Development Environment (IDE) provides
various tools to simplify and improve the debugging
process:
Feature Purpose Example (ATM Tracker)
Step Over/Into/Out Navigate through code one line or Trace function logic in transaction
function at a time. history to ensure correct order.
Call Stack Displays the sequence of function Trace calls from the main menu
calls that led to a particular point. to transaction methods.
Error List Panel Lists syntax and runtime errors Shows Value Error from invalid
instantly. user input.
Variable Inspector Shows all active variable names View the current transaction log
and their current values. or user-entered amounts.
Conclusion
The ATM Transaction History Tracker project taught me about the entire software development
lifecycle, from algorithm definition and programming paradigms to implementation, debugging,
and code quality evaluation. This endeavor highlighted the need for planning and reasoning.
Starting with an algorithm translates a real-world problem into a step-by-step computational
solution that is converted into pseudocode and functional code using a programming language.
Exploring procedural, object-oriented, and event-driven programming paradigms showed how
each had unique benefits. The procedural model handled transaction logic, whereas OOP
encapsulated, reused, and modularized data, making the system more maintainable. In current
user interfaces, event-driven features provide responsiveness and real-time interaction.
Implementing the project in an IDE showed the benefits of syntax highlighting, error detection,
version control, and debugging tools. They increased productivity, resolved errors quickly, and
made the program more robust and error-free. Through issue identification and resolution at
various phases of development, the debugging process improved system security and reliability.
Reference list
Agans, D.J. (2006). Debugging. AMACOM/American Management Association.
Alex Louwe Kooijmans, Ramos, E., Niek De Greef, Delhumeau, D., Donna Eng Dillenberger,
Potter, H., Williams, N. and IBM Redbooks (2012). Transaction Processing: Past, Present, and
Future. IBM Redbooks.
Atencio, L. (2016). Functional Programming in JavaScript. Simon and Schuster.
Cormen, T.H. (2006). Introduction to Algorithms.
Fincher, S.A. and Robins, A.V. (2019). The Cambridge Handbook of Computing Education
Research. Cambridge University Press.
Greenstein, S.M. (2006). Computing. Cheltenham, Uk ; Northampton, Ma: Edward Elgar
Publishing.
Kenneth Leroy Busbee (2018). Programming Fundamentals.
Long, F., Dhruv Mohindra, Seacord, R.C., Sutherland, D.F. and Svoboda, D. (2011). The CERT
Oracle Secure Coding Standard for Java. Addison-Wesley Professional.
Management Association, Information Resources (2016). Renewable and Alternative Energy:
Concepts, Methodologies, Tools, and Applications. IGI Global.
MössenböckH. (1995). Object-Oriented Programming in Oberon-2. Berlin, Heidelberg: Springer
Berlin Heidelberg.
Necaise, R.D. (2016). Data structures and algorithms using Python. Hoboken, New Jersey: Wiley.
Open University (2007). Putting Java to work. Unit 7. Event-driven programming. Milton Keynes:
Open University.
Patel, R. (2024). Understanding Coding Standards: Why They Matter - Ravi Patel - Medium.
[online] Medium. Available at: [Link]
standards-why-they-matter-cc75adcba245.
Pecinovsky, R. (2013). OOP - learn object oriented thinking and programming. Repin-Zivonin:
Tomas Bruckner.
S Arikawa and Sharma, A.K. (1996). Algorithmic learning theory : 7th international workshop,
ALT ’96, Sydney, Australia, October 23-25, 1996 : proceedings. Berlin ; New York: Springer.
Slatkin, B. (2015). Effective Python. Addison-Wesley Professional.
Sripada Rama Sree (n.d.). Algorithms and Computational Theory for Engineering Applications.
Springer Nature.
Studocu. (2023). [Solved] Determine the steps taken from writing code to execution - Computing
Research Project - Studocu. [online] Available at:
[Link]
writing-code-to-execution [Accessed 11 Jun. 2024].
Studocu. (2024). [Solved] 43 Prepare a report by including followings Evaluate how the - BTEC
HND In Software / Networking Engineering (business intelligenc) - Studocu. [online] Available at:
[Link]
including-followingsevaluate-how-the-debugging-process-can.
w3Schools (2017). Introduction to Python. [online] [Link]. Available at:
[Link]
Yeager, D.P. (2012). Object-Oriented Programming Languages and Event-Driven Programming.
Mercury Learning and Information.