A Java + SQLite banking system featuring both a console workflow and a Swing GUI, designed to demonstrate clean data access, safe transactions, and a minimal-but-complete banking domain model.
- Create customers and open accounts.
- Deposit and withdraw funds with balance validation.
- View customers, accounts, and balances.
- SQLite-backed persistence with prepared statements.
- Two interfaces: CLI and GUI.
- Java (JDK 8+)
- JDBC
- SQLite
- Swing (GUI)
Download the latest sqlite-jdbc JAR from Maven Central and place it in this folder.
javac -cp ".;sqlite-jdbc-<version>.jar" BankSystemConsole.java
java -cp ".;sqlite-jdbc-<version>.jar" BankSystemConsolejavac -cp ".;sqlite-jdbc-<version>.jar" BankSystemGUI.java
java -cp ".;sqlite-jdbc-<version>.jar" BankSystemGUIDatabase (SQLite)
users(id, name, email)accounts(id, user_id, balance)
Flow
- Input → validation → JDBC prepared statement → SQLite → formatted output.
1. Add User
2. Create Account
3. Deposit
4. Withdraw
5. View Accounts
6. Exit
Choose option: 1
Enter name: Alice
Enter email: alice@example.com
User added successfully.
- Add transaction history and statements.
- Input validation and email normalization.
- Export reports (CSV/PDF).
- Modularize into DAO + service layers.
Open to improvements and extensions. Contributions welcome.