Skip to content

Bilingual ATM simulation with security features and currency switching. / Güvenlik özellikleri ve para birimi değiştirme seçeneği sunan çift dilli ATM simülasyonu.

Notifications You must be signed in to change notification settings

efekurttepee/ATM-System-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

🏧 Advanced ATM Simulation in C

A robust, console-based ATM simulation program written in C. This project demonstrates mastery of fundamental programming concepts, input sanitization, security logic, and dynamic state management.

🚀 Key Features

  • 🌍 Multi-Language Support: Full support for both Turkish and English, switchable instantly from the menu.
  • 💱 Currency Switching: Users can toggle between TL and USD. The system dynamically updates symbols and outputs based on the selection.
  • 🔒 Secure Login System:
    • Strict 4-digit PIN validation (1000-9999).
    • 3-attempt lock mechanism (Security Block).
  • 🛡️ Input Validation: Prevents crashes by handling invalid inputs (e.g., characters instead of numbers) using buffer clearing.
  • 🔄 Continuous Operation: do-while loop structure allows multiple transactions until the user decides to exit.

🛠️ Built With

  • Language: C
  • Libraries: <stdio.h>, <stdlib.h>, <string.h>
  • Compiler: GCC

💻 How to Run

  1. Clone the repository:
    git clone [https://github.com/YOUR_USERNAME/Advanced-ATM-System-C.git](https://github.com/YOUR_USERNAME/Advanced-ATM-System-C.git)
  2. Compile the code:
    gcc main.c -o atm
  3. Run the program:
    ./atm  # On Linux/Mac
    atm.exe # On Windows

📚 Logic Highlights

While building this project, I implemented:

  • State Machines: Managing language and currency states simultaneously.
  • String Manipulation: Using strcpy to change currency labels dynamically.
  • Control Flow: Nested loops and switch-case structures for menu navigation.
  • Defensive Programming: Protecting scanf against bad inputs to prevent infinite loops.

🇹🇷 C ile Gelişmiş ATM Simülasyonu

C programlama dili ile yazılmış sağlam, konsol tabanlı bir ATM simülasyonu. Bu proje; temel programlama kavramları, veri girişi güvenliği, güvenlik mantığı ve dinamik durum yönetimi konularındaki yetkinliği gösterir.

🚀 Temel Özellikler

  • 🌍 Çoklu Dil Desteği: Hem Türkçe hem İngilizce desteği, menüden anlık olarak değiştirilebilir.
  • 💱 Para Birimi Değiştirme: Kullanıcılar TL ve USD arasında geçiş yapabilir. Sistem, seçime göre sembolleri ve çıktıları dinamik olarak günceller.
  • 🔒 Güvenli Giriş Sistemi:
    • Sıkı 4 haneli PIN doğrulama kuralı (1000-9999).
    • 3 deneme hakkı sunan güvenlik kilidi (Bloke Sistemi).
  • 🛡️ Giriş Doğrulama: Tampon temizleme (buffer clearing) kullanarak geçersiz girişlerin (örneğin sayı yerine harf girilmesi) programı çökertmesini engeller.
  • 🔄 Süreklilik: do-while döngü yapısı sayesinde kullanıcı çıkış yapana kadar birden fazla işlem gerçekleştirebilir.

🛠️ Kullanılan Teknolojiler

  • Dil: C
  • Kütüphaneler: <stdio.h>, <stdlib.h>, <string.h>
  • Derleyici: GCC

💻 Nasıl Çalıştırılır

  1. Depoyu klonlayın:
    git clone [https://github.com/KULLANICI_ADINIZ/Advanced-ATM-System-C.git](https://github.com/KULLANICI_ADINIZ/Advanced-ATM-System-C.git)
  2. Kodu derleyin:
    gcc main.c -o atm
  3. Programı çalıştırın:
    ./atm  # Linux/Mac için
    atm.exe # Windows için

📚 Mantıksal Öne Çıkanlar

Bu projeyi geliştirirken şunları uyguladım:

  • Durum Makineleri (State Machines): Dil ve para birimi durumlarını aynı anda yönetme.
  • String Manipülasyonu: Para birimi etiketlerini dinamik olarak değiştirmek için strcpy kullanımı.
  • Akış Kontrolü: Menü navigasyonu için iç içe döngüler ve switch-case yapıları.
  • Defansif Programlama: Sonsuz döngüleri önlemek için scanf girişlerini koruma altına alma.

About

Bilingual ATM simulation with security features and currency switching. / Güvenlik özellikleri ve para birimi değiştirme seçeneği sunan çift dilli ATM simülasyonu.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages