A web-based ATM (Automated Teller Machine) system built with Java Servlets, JSP, and PostgreSQL. This system provides essential banking operations including deposits, withdrawals, transfers, and account management.
- Account balance inquiry
- Cash withdrawal
- Cash deposit
- Fund transfer between accounts
- PIN change
- Transaction history view
- Daily transaction limits
- Create new user accounts
- View all registered users
- Generate transaction reports
- Monitor system activities
- JDK 17 or higher
- Apache Maven 3.8+
- Apache Tomcat 10
- PostgreSQL 14+
- IDE (recommended: IntelliJ IDEA or Eclipse)
-
Update database configuration in
src/main/resources/database.properties:db.url=your_database_url db.username=your_username db.password=your_password
-
Configure Tomcat server settings in
src/main/webapp/WEB-INF/web.xml
# Clone the repository
git clone https://github.com/yourusername/ATM-System.git
# Navigate to project directory
cd ATM-System
# Build the project
mvn clean install-
Deploy the WAR file to Tomcat:
- Copy
target/ATM-System.warto Tomcat'swebappsdirectory - Start Tomcat server
- Copy
-
Access the application:
- URL:
http://localhost:8080/ATM-System - Default admin credentials:
- Username: admin
- Password: admin123
- URL:
ATM-System/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/atm/
│ │ │ ├── controller/
│ │ │ ├── dao/
│ │ │ ├── dto/
│ │ │ ├── exception/
│ │ │ ├── model/
│ │ │ ├── service/
│ │ │ └── util/
│ │ ├── resources/
│ │ └── webapp/
│ └── test/
├── pom.xml
└── README.md
- Daily transaction limit: $25,000
- Maximum 5 transactions per day per type
- PIN must be 4 digits
- Card number must be 10 digits
- Transfer requires valid recipient card number
- Withdrawal amount cannot exceed current balance
- Session-based authentication
- Input validation
- SQL injection prevention
- Transaction rollback support
- Error logging
- POST
user/auth- User authentication - GET
/user/balance- Get account balance - POST
/user/transaction- Process transaction - GET
/user/history- Get transaction history - POST
/user/changePin- Allow user to change password
- POST
admin/auth- User authentication - GET
/admin/report- Generate reports - GET
/admin/dashboard- Admin dashboard
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
# Run unit tests
mvn test
# Run integration tests
mvn verify- Session timeout not configurable through UI
- Limited browser compatibility testing
- Mobile responsive design
- Bill payment feature
- Enhanced security features
- Enhanced UI/UX
This project is licensed under the MIT License - see the LICENSE file for details.
For support or queries, please contact:
- Email: nngochaial@gmail.com
- Servlet API Documentation
- PostgreSQL Documentation
- Apache Tomcat Documentation