# ATM Simulator System

**Built by KCEE Tech**

A comprehensive Java-based ATM simulator with GUI interface for banking operations including login, account management, and transaction processing.

## Features

- User Authentication System
- Account Registration (3-step process)
- Cash Withdrawal and Deposit
- Balance Inquiry
- Mini Statement Generation
- PIN Change Functionality
- Fast Cash Options
- Database Integration (H2 in-memory database)

## Prerequisites

- Java Development Kit (JDK) 8 or higher
- Any Java IDE (NetBeans, Eclipse, IntelliJ IDEA) or command line

## How to Run

### Method 1: Using Command Line
1. Navigate to the project directory:
   ```
   cd ATM-Simulator-System-master/ATM-Simulator-System
   ```

2. Compile the Java files:
   ```
   javac -d build/classes src/ASimulatorSystem/*.java
   ```

3. Copy icons to build directory:
   ```
   xcopy /E /Y src\ASimulatorSystem\icons build\classes\ASimulatorSystem\icons\
   ```

4. Run the application:
   ```
   java -cp build/classes ASimulatorSystem.Login
   ```

### Method 2: Using NetBeans IDE
1. Open NetBeans IDE
2. Open the project folder: `ATM-Simulator-System-master/ATM-Simulator-System`
3. Build the project (F11)
4. Run the project (F6)

### Method 3: Using build.xml (Ant Build)
1. Navigate to project directory
2. Run: `ant compile` to compile
3. Run: `ant run` to execute

## Usage

### Demo Login Credentials
- Card Number: `1234567890123456`
- PIN: `1234`

### Creating New Account
1. Click "SIGN UP" on login screen
2. Fill out personal details (Page 1)
3. Complete additional information (Page 2)
4. Select account type and services (Page 3)
5. Submit to create account

### Available Operations
- **Login**: Access your account
- **Balance Inquiry**: Check account balance
- **Cash Withdrawal**: Withdraw money
- **Cash Deposit**: Deposit money
- **Mini Statement**: View recent transactions
- **PIN Change**: Update your PIN
- **Fast Cash**: Quick withdrawal options

## Project Structure

```
ATM-Simulator-System/
├── src/ASimulatorSystem/          # Source code
│   ├── Login.java                 # Main login interface
│   ├── Signup.java               # Account registration (Page 1)
│   ├── Signup2.java              # Account registration (Page 2)
│   ├── Signup3.java              # Account registration (Page 3)
│   ├── Transactions.java         # Transaction menu
│   ├── Deposit.java              # Deposit functionality
│   ├── Withdrawl.java            # Withdrawal functionality
│   ├── BalanceEquiry.java        # Balance inquiry
│   ├── MiniStatement.java        # Statement generation
│   ├── Pin.java                  # PIN change
│   ├── FastCash.java             # Fast cash options
│   ├── Conn.java                 # Database connection
│   └── icons/                    # UI icons
├── build/                        # Compiled classes
├── nbproject/                    # NetBeans project files
└── build.xml                     # Ant build script
```

## Database

The application uses H2 in-memory database with the following tables:
- `login` - User authentication
- `signup` - Personal information
- `signup2` - Additional details
- `signup3` - Account preferences
- `bank` - Transaction records

## Troubleshooting

**Issue**: Application won't start
- **Solution**: Ensure Java is installed and JAVA_HOME is set

**Issue**: Database errors
- **Solution**: Check if H2 database jar is in classpath

**Issue**: Icons not displaying
- **Solution**: Ensure icons folder is copied to build/classes directory

## Built by KCEE Tech

This project demonstrates modern banking system simulation with secure authentication and comprehensive transaction management.
