Create ATM Simulator in C

Faraz

By Faraz -

Learn how to create an ATM simulator in C programming. Step-by-step guide with code examples to help you understand the process.


create-atm-simulator-in-c.webp

Introduction

In this blog, we will guide you through the process of creating an ATM simulator in C programming. An ATM (Automated Teller Machine) simulator is a simple program that mimics the functionality of a real ATM. This project is great for beginners to practice their C programming skills and understand the logic behind such systems.

We will cover everything from setting up the menu interface to handling different transactions like withdrawals, deposits, and balance inquiries. By the end of this guide, you will have a working ATM simulator with an advanced menu interface.

Step-by-Step Guide to Creating an ATM Simulator in C

1. Setting Up the Project

Start by setting up your C programming environment. You can use any text editor or IDE (Integrated Development Environment) like Code::Blocks, Dev-C++, or Visual Studio Code.

2. Designing the Menu Interface

The menu interface is a crucial part of the ATM simulator. It allows users to choose different options like checking their balance, making a withdrawal, depositing money, and exiting the program.

Here’s a basic structure for the menu interface:

#include <stdio.h>
#include <stdlib.h>

void showMenu() {
    printf("=====================================\n");
    printf("|          ATM Simulator            |\n");
    printf("=====================================\n");
    printf("| 1. Check Balance                  |\n");
    printf("| 2. Deposit Money                  |\n");
    printf("| 3. Withdraw Money                 |\n");
    printf("| 4. Exit                           |\n");
    printf("=====================================\n");
}

3. Initializing Variables

Next, you need to declare and initialize the variables that will hold the balance, user input, and other necessary data.

void showMenu();
void checkBalance();
void depositMoney();
void withdrawMoney();
void exitATM();

float balance = 1000.0;

4. Implementing the Menu Functions

Now, let’s create the functions for each menu option.

a. Checking Balance

The first function will allow the user to check their current balance.

void checkBalance() {
    printf("\nYour current balance is: $%.2f\n", balance);
}

b. Depositing Money

This function will allow the user to deposit money into their account.

void depositMoney() {
    float amount;
    printf("\nEnter the amount to deposit: $");
    scanf("%f", &amount);
    if (amount > 0) {
        balance += amount;
        printf("You've successfully deposited $%.2f\n", amount);
    } else {
        printf("Invalid amount entered. Please try again.\n");
    }
}

c. Withdrawing Money

This function will handle withdrawals, ensuring the user doesn’t withdraw more than their balance.

void withdrawMoney() {
    float amount;
    printf("\nEnter the amount to withdraw: $");
    scanf("%f", &amount);
    if (amount > 0 && amount <= balance) {
        balance -= amount;
        printf("You've successfully withdrawn $%.2f\n", amount);
    } else {
        printf("Invalid transaction. Please try again.\n");
    }
}

5. Main Program Loop

With the functions defined, it’s time to put everything together in the main loop of the program. This loop will keep the program running until the user chooses to exit.

int main() {
    int choice;

    do {
        system("cls"); // Clear screen for a fresh menu display
        showMenu();
        printf("\nEnter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                checkBalance();
                break;
            case 2:
                depositMoney();
                break;
            case 3:
                withdrawMoney();
                break;
            case 4:
                exitATM();
                break;
            default:
                printf("\nInvalid choice! Please select a valid option.\n");
        }

        printf("\nPress any key to return to the menu...\n");
        getchar(); getchar(); // Wait for user input before returning to the menu
    } while (choice != 4);

    return 0;
}

void exitATM() {
    printf("\nThank you for using our ATM simulator. Goodbye!\n");
}

6. Adding Error Handling (Optional)

To make the program more robust, you can add error handling for invalid inputs. For example, you can ensure that the user enters a valid amount when making a deposit or withdrawal.

void depositMoney() {
    printf("\nEnter amount to deposit: $");
    if (scanf("%f", &amount) != 1 || amount < 0) {
        printf("Invalid amount entered. Please try again.\n");
        // Clear input buffer
        while (getchar() != '\n');
    } else {
        balance += amount;
        printf("You've successfully deposited $%.2f\n", amount);
    }
}

Compiling and Running the Program

After writing the code, save your file with a .c extension. Now, compile and run your program using your chosen IDE or command line.

For example, if you’re using GCC on the command line, navigate to the directory where your file is located and run:

gcc atm_simulator.c -o atm_simulator
./atm_simulator

The program should start, displaying the ATM menu interface. You can now interact with the simulator, testing different scenarios like checking balance, depositing money, and withdrawing money.

Conclusion

Creating an ATM simulator in C programming is an excellent way to practice your coding skills. It helps you understand important concepts like user input, loops, conditionals, and functions. With an advanced menu interface, this project also teaches you how to create user-friendly programs.

By following this step-by-step guide, you should now have a fully functional ATM simulator in C. Feel free to enhance it further by adding features like PIN authentication, transaction history, or even multiple user accounts.

This project is a strong addition to your programming portfolio and a great way to improve your problem-solving skills in C.

That’s a wrap!

I hope you enjoyed this article

Did you like it? Let me know in the comments below 🔥 and you can support me by buying me a coffee.

And don’t forget to sign up to our email newsletter so you can get useful content like this sent right to your inbox!

Thanks!
Faraz 😊

End of the article

Subscribe to my Newsletter

Get the latest posts delivered right to your inbox


Latest Post

Please allow ads on our site🥺