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.
- 🌍 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-whileloop structure allows multiple transactions until the user decides to exit.
- Language: C
- Libraries:
<stdio.h>,<stdlib.h>,<string.h> - Compiler: GCC
- 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)
- Compile the code:
gcc main.c -o atm
- Run the program:
./atm # On Linux/Mac atm.exe # On Windows
While building this project, I implemented:
- State Machines: Managing
languageandcurrencystates simultaneously. - String Manipulation: Using
strcpyto change currency labels dynamically. - Control Flow: Nested loops and
switch-casestructures for menu navigation. - Defensive Programming: Protecting
scanfagainst bad inputs to prevent infinite loops.
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.
- 🌍 Ç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-whiledöngü yapısı sayesinde kullanıcı çıkış yapana kadar birden fazla işlem gerçekleştirebilir.
- Dil: C
- Kütüphaneler:
<stdio.h>,<stdlib.h>,<string.h> - Derleyici: GCC
- 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)
- Kodu derleyin:
gcc main.c -o atm
- Programı çalıştırın:
./atm # Linux/Mac için atm.exe # Windows için
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
strcpykullanımı. - Akış Kontrolü: Menü navigasyonu için iç içe döngüler ve
switch-caseyapıları. - Defansif Programlama: Sonsuz döngüleri önlemek için
scanfgirişlerini koruma altına alma.