A comprehensive JavaFX-based desktop banking application that provides secure account management, transaction processing, and customer data persistence.
- Account Creation: Register new customers with personal information and secure PIN setup
- Secure Login: Account number and 4-digit PIN authentication system
- Money Transactions: Deposit and withdraw funds with real-time balance updates
- Account Recovery: Recover account details using personal information
- Balance Inquiry: View current account balance and transaction status
- Modern GUI: Attractive JavaFX interface with gradient backgrounds and styled components
- Responsive Design: Hover effects, button animations, and intuitive navigation
- Multi-window Interface: Separate windows for different operations (login, registration, transactions)
- Error Handling: Comprehensive validation and user-friendly error messages
- Data Persistence: Automatic saving/loading of customer and account data
- Session Management: Automatic data saving on application exit
- Language: Java
- GUI Framework: JavaFX
- Data Persistence: Java Serialization
- Architecture: Object-Oriented Design with separate classes for different concerns
BankingSystem/
โโโ BankAccount.java # Bank account model with transaction methods
โโโ Customer.java # Customer information and PIN management
โโโ Main.java # Main JavaFX application with UI components
โโโ Data/
โ โโโ DataManager.java # Data persistence and file operations
- Java Development Kit (JDK): Version 8 or higher
- JavaFX Runtime: Included with JDK 8, separate download for JDK 11+
- IDE: IntelliJ IDEA, VS Code or Eclipse (recommended)
- Clone or Download the project files
- Import the project into your IDE
- Ensure JavaFX is properly configured in your development environment
- Compile all Java files in the BankingSystem package
# Run the main class
Main.main()
# Navigate to the project directory
cd path/to/BankingSystem
# Compile (if not already compiled)
javac *.java
# Run the application
java Main
- Launch the application
- Click "Create New Account" on the landing page
- Fill in your personal information:
- Full Name (required)
- Phone Number (required)
- Email Address (optional)
- 4-Digit PIN (required)
- Confirm your PIN and create the account
- Save your account number and customer ID for future logins
- Click "Login to Account" on the landing page
- Enter your account number and 4-digit PIN
- Access your dashboard upon successful authentication
- Login to your account
- Choose "Deposit Money" or "Withdraw Money"
- Enter the transaction amount
- Confirm the transaction
- View updated balance on the dashboard
- Click "Recover Account Details" on the landing page
- Enter your name and/or phone number
- Retrieve your account information
- PIN Authentication: 4-digit secure PIN system
- Input Validation: Comprehensive validation for all user inputs
- Data Encryption: Secure storage of sensitive information
- Session Management: Automatic logout and data protection
The application automatically creates and manages three data files:
customers.ser
: Customer personal informationaccounts.ser
: Bank account details and balances
Important: These files contain sensitive data. Keep them secure and backed up.
The application includes robust error handling for:
- Invalid input formats (non-numeric account numbers, amounts)
- Insufficient funds for withdrawals
- Duplicate account creation attempts
- File I/O operations
- Authentication failures
- Account Creation: Test with various input combinations
- Authentication: Test correct and incorrect PIN entries
- Transactions: Test deposits, withdrawals, and insufficient funds
- Data Persistence: Close and reopen application to verify data saving
- Account Recovery: Test with partial and complete information
- Account number range: Currently 100,000,000 - 999,999,999
- Customer ID format: "C" + 6-digit number
- Currency display: Currently shows "$" (can be modified to "R" for Rand)
- PIN length: 4 digits (configurable in validation method)
- Concurrent Access: Not designed for multi-user concurrent access
- Network Support: Local storage only, no network/database integration
- PIN Recovery: No PIN reset functionality
- Interest Calculation: Automatic interest accrual
- Admin Panel: Administrative functions and reporting
- Database Integration: MySQL/PostgreSQL support
- Web Interface: Browser-based access
- Mobile App: Android/iOS companion app
- Encryption: Advanced encryption for data files
- Backup System: Automated data backup and recovery
- Multi-language: Internationalization support
- API Integration: External service integration
- Cloud Storage: Cloud-based data synchronization
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
For technical support or questions:
- Email: support@hexsoft.com
- Documentation: Check inline code comments for detailed implementation notes
- Issues: Report bugs through the project issue tracker
This project is licensed under the MIT License - see the LICENSE file for details.
- JavaFX community for GUI components and styling examples
- Java serialization documentation for data persistence implementation
- Security best practices for PIN and authentication handling
Banking System - Your Trusted Banking Partner Secure โข Reliable โข 24/7 Access