Monday, January 20, 2025

ATM USING PYTHON

 CODE:

from datetime import datetime

import random

class ATM:

    def __init__(self, initial_balance):

        self.account_number = "ACC" + str(random.randint(1000000000, 9999999999))  # Generate 11-digit account number

        self.balance = initial_balance

        self.transaction_history = []

    def display_menu(self):

        print("\nWelcome to the ATM")

        print("1. Check Balance")

        print("2. Withdraw")

        print("3. Mini Statement")

        print("4. Exit")

    def check_balance(self):

        print(f"Your current balance is: {self.balance:.2f}") 

    def withdraw(self, amount):

        if amount > 0 and amount <= self.balance:

            old_balance = self.balance

            self.balance -= amount

            current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            self.transaction_history.append(f"[{current_time}] Withdrawal: -{amount:.2f} | Old Balance: {old_balance:.2f} | New Balance: {self.balance:.2f}") 

            return True  # Indicate successful withdrawal

        else:

            print("Insufficient funds.")

            return False

    def mini_statement(self):

        print("\n=== Mini Statement ===")

        print(f"Account Number: {self.account_number}")

        if not self.transaction_history:

            print("No recent transactions.")

        else:

            for transaction in self.transaction_history[-5:]: 

                print(transaction)

        print("======================")

def generate_withdrawal_receipt(amount, old_balance):

    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    print("\n--- Withdrawal Receipt ---")

    print(f"Date/Time: {current_time}")

    print(f"Withdrawal Amount: {amount:.2f}")

    print(f"Old Balance: {old_balance:.2f}")

    print(f"Current Balance: {old_balance - amount:.2f}")  # Calculate and display current balance

    print("-------------------------")

def validate_pin():

    """Validates the ATM PIN."""

    correct_pin = 3215  # Replace with your desired PIN

    attempts = 3

    while attempts > 0:

        entered_pin = int(input("Enter your ATM PIN: "))

        if entered_pin == correct_pin:

            print("PIN verified successfully.")

            return True

        else:

            attempts -= 1

            print(f"Incorrect PIN. {attempts} attempts remaining.")

    print("PIN verification failed. Exiting.")

    return False

if __name__ == "__main__":

    initial_balance = 50000  # Initial balance

    if validate_pin():

        atm = ATM(initial_balance) 

        while True:

            atm.display_menu()

            choice = int(input("Enter your choice: "))

            if choice == 1:

                atm.check_balance()

            elif choice == 2:

                withdrawal_amount = int(input("Enter the amount to withdraw: "))

                if atm.withdraw(withdrawal_amount):

                    generate_withdrawal_receipt(withdrawal_amount, atm.balance + withdrawal_amount) 

            elif choice == 3:

                atm.mini_statement()

            elif choice == 4:

                print("Thank you for using the ATM.")

                break

            else:

                print("Invalid choice. Please try again.")

OUTPUT:



















PETROL BUNK BILLING SYSTEM USING PYTHON

  CODE: from datetime import datetime print("***Petrol Bunk Billing System***") petrol_price = 100 diesel_price = 95 print("...