The goal of Project0 of my Revature training program is to build this Java banking application. This project allowed me to demonstrate my knowledge of Java programming, while implementing the various technologies learned in training. The application utilizes Log4j for logging of transactions, JUnit for testing various methods, Maven to handle dependencies for sharing this application, and PostgreSQL for storing and parsing the various data from the application.
- This method holds the
withdrawal
,deposit
, andtransfer
methods that the customer can perform when their specific account is open.
- This class simply holds the various
String
objects which interact with the user during the console session.Janus
informs the user about what they should do, or let them know about invalid inputs. I tried to have some fun with his messages.
- This class has three methods:
customerMenu
,employeeMenu
, andadminMenu
. Each method provides the logic flow for theDriver
class'smain
method depending on which role the application user is.
- This class holds a variety of helper methods used by many of the other classes methods. The most notable methods are the
login
,registerUser
, andregisterAccount
methods which are integral to the console flow.
- The
User
class provides all the personal information about whichever user is logged into the application. They hold the name, username, password, email for the application to access for various opperations.
- The application is designed to handle three roles that the
User
could be: customer, employee, and administrator (admin).
- This class holds all information about customer's banking accounts. Each account has an account number, routing number, and a balance. An initial balance needs to be deposited from the user in order for an account to be opened.
- The
Type
class simply labels eachAccount
as a personal account, or joint account. Joint accounts will have multiple customer's linked to them.
- The
Status
class lets employee's and administrator's know which accounts are new and need to be approved. An account's status is defaulted to "pending" when it's opened, and the administrator can either change theStatus
to "open" or "closed". Open accounts allow the customer to perform transactions, and "closed" accounts aren't allowed to perform any transactions.
- This class simply holds the
account_id
anduser_id
for linking each user with their account(s). Primarily exists for database management.
- Improve the Javalin implementation to utilize forms and HTML for a prettier front end.
- Allow users to update their personal information.
- Allow employees and admins to hold accounts.
- Add color output and more concise text output for improved clarity of operations.
- Implement serialization in order to save a current session to return to.
- Connect user with their account when viewing accounts.
- Add more input checks for
Scanner.next()
method throughout the app.
Building this application was a great challenge for me. I've never built an application this comprehensive of different technologies and it was fulfilling to have something working at the end. I feel like I understand scope, and Java loops significantly more now. While working on a project of this size I realized the importance of breaking up features and fully testing each feature before moving onto another aspect of the project. It was really easy for me to think of a better implementation of some other feature while I was working on another feature related to it. Often I went back and rewrote code, which was a terribly inefficient use of my time.
I think the overall lesson I'll take from this project is to be overly organized and specific at the beginning when planning, then stay focused on that plan when building the project. When things are working at the end it's easier to go back and make aspects more efficient, instead of doing it in the middle of one aspect of the project. I hope to come back to this project and make things better in the future.