Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python ATM System

Overview

A command-line ATM simulation built in Python using Object-Oriented Programming, demonstrating secure banking operations across a clean three-file structure.

Project Structure

  • account.py — Account class, SHA-256 PIN hashing, 3-strike lockout logic
  • transaction.py — Deposit, withdrawal, EFT transfer, balance checks
  • main.py — CLI entry point, registration and login flow

Features

  • User registration and login with 3-strike lockout
  • PIN hashing via SHA-256 (hashlib) — never stored or logged in plaintext
  • Deposit, withdrawal, EFT transfer, and statement viewing
  • Self-transfer prevention and funds validation
  • CSV-based account persistence across sessions
  • Audit logging to log.txt for all transactions
  • Zero pycodestyle violations, full docstring coverage

How to Run

python main.py

What I Learned

Built with a focus on secure-by-design thinking: hashing credentials, handling authentication failure states explicitly, and maintaining an audit trail — all practices directly relevant to GRC and security-aware development.

Author

Ndumiso Mbanjwa

About

Command-line ATM simulation built with Python OOP, SHA-256 PIN hashing, and secure-by-design practices

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages