Project1 - Descrription - Group Project

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Project #1 Description

Object Oriented Programming, 14014110-3


Week #11, Monday 21 March 2022

(Total: 20 Marks)

Due Date: Week #13, Friday 8 April 2022


Bank System

Please follow these instructions:


• This is a group project so every group must complete it in their own and by themselves.
• Every group could include two students at maximum.
• All submitted projects must be unique and any duplicated projects will receive ZERO mark.
• The project must be submitted before the deadline and any late projects will receive ZERO mark.
• Include a Word document that includes your assumptions and several screenshots of your Netbeans
IDE application as well as the output screenshot results.
• Submit your code as .zip compressed file via the online Blackboard e-learn system. Name of the
compressed file should include group’s names and student numbers.

Project description:
As a programmer, you have been asked to write a Java application, using OOP concepts, for a Bank.
Your main entity is the bank customer (national ID, name, address, email, mobile number…etc) which
has the following characteristics:

• It can hold one bank account.


• The bank account holds the current balance.
• For simplicity, we will not record the previous transactions for bank accounts.

• The system user can perform 8 operations:


1. Create a new customer account. This operation should add a new customer object to the
Vector collection of system customers. This new customer should also have a new bank
account with unique sequential account number and zero account balance.
2. Deposit: add an amount of money to an existing bank account balance.
3. Withdrawal: withdraw an amount of money from the bank account balance if there is
enough money in the current balance.
4. Check balance: print the current bank account balance of the bank.
5. Get a new loan:
§ The customer can receive one loan at maximum at the same time. So, the system
should keep track of the following information:
i Does the customer have an existing loan? For simplicity, the customer
can get a new loan if he does not have any remaining loan payments to be paid
for a previous loan.
ii How much is the new loan?
iii The loan period in months (e.g. period = 5 months).
iv What is the interest rate on this loan?
▪ Total interest = loan * (rate/100)

v How much the customer should pay in total and monthly which we will
calculate as follow:
▪ Total payable amount = loan + interest
▪ The monthly payment = Total payable amount / number of
months

vi The remaining amount to be paid, which should be updated with each


new monthly loan payment.
▪ When a customer gets a loan, the loan amount should be added to his
current balance.
▪ For simplicity, we will not keep track of the payments dates and will
not examine to see if a customer is late on his payments.

6. Check an existing loan: print the status and details of the current loan (if exists) on the
screen.

7. Pay for an existing loan: the customer can pay only the monthly amount due of the loan
(if exists) out of his account balance (if the balance is enough to pay the monthly
amount).

8. Exit from the system

You should create a Bank class that contains the static main() method with the following properties:

• It must print a selection screen where the system user can choose the operation, he/she wants to
perform:
1. Create a new account.
2. Deposit an amount on an existing account.
3. Withdrawal an amount from an existing account.
4. Check the current balance of an existing account.
5. Get a new loan on an existing account.
6. Check an existing loan status (the amount, the remaining balance, the monthly
payments, … etc.).
7. Pay for the monthly payment for an existing loan.
8. Exit.
• When the system user choses an operation he would like to perform he will be asked for the
appropriate information (such as the account number). The system should continue running until
the user provide the selection of exit function (i.e. the choice 8).
• For example, the main screen should look something like this:

• The user must be able to create several customer accounts at one session and they must be stored
in a Vector collection object. The account number should be created automatically sequentially
for every new account (e.g. using static data member that is incremented with the creation of
every new customer account)
• The customer can’t have more than one running loan at the same time.
• The system should print a suitable success or error message with each operation.
• Put all related classes and interfaces inside the same Java package called bank.
• Try as much as possible to assign the data members (attributes, properties, fields) of each class as
private and the class methods as public.
• Each class (apart from the main class) must override the method toString() from the root Object
class.

Project deliverables:
• You will need to create all the needed Java classes with all the required information.
• Your design of the classes and their relationships to each other is the main point you will be
evaluated at.
• You have to apply the necessary OOP (Object Oriented Programming) concepts that we have covered
in this module (i.e. inheritance, polymorphism, interface and collections)
• Include a text file (call it as names.txt) that includes the names of the participating students, their
student numbers, group numbers and email addresses (in English).
• Include a Microsoft Word document FILE (name it as project1_report.doc) that includes several
Screenshots of your Netbeans IDE application output screenshot results. Add screenshots of the
folder and files structures of the Netbeans project. Provide all assumptions that you have made
during design and implementation.
• Include the whole Netbeans Java project FOLDER with all source codes. Write as much comments as
possible to document all your source codes.

You might also like