Data Structures Course Project Fall 2022
Data Structures Course Project Fall 2022
Data Structures Course Project Fall 2022
--------------------------------------------------------------------------------------------------------------------
Important Rules:
• This project will be a teamwork project, with a team consisting of 4 or 5 members FROM THE
SAME LAB.
• Take attention to handle all exception cases by the user throughout the project.
• All team members MUST understand everything in the code.
• Grades are distributed as follows: [Part #1 = 15 Points, Part #2 = 25 Points, Part #3 = 50 Points,
Part #4 (Bonus Part) = 15 Points, Code Quality = 10 Points] => Total Points = 100 + 15 Bonus
Points.
• Code quality is measured according to naming conventions, writing comments, following
dynamic and static nature of program logic.
• Please follow the naming convention of methods, attributes, classes, etc.
• You’ll submit a file with members ids and with .cpp extension.
o [e.g., 20000000_20000000_20000000_20000000_20000000.cpp].
• Grades are based on the discussion.
• You will find ideas and helpful tips in the previous code tips of assignment 1 & 2.
• Cheating will be graded ZERO.
▪
=====================================================================================
o
• void loginMenu(): see the image below (3 Points)
o
• void newClientMenu(): see the image below (3 Points)
o
• void transactionsMenu(): see the image below (3 Points)
o
• void clientHome(): see the image below (3 Points)
• The first menu should appear is the mainMenu(), user can login by email and password
from the loginMenu(), or if the user is new, he/she can create a new account using the
newClientMenu(), user can create a transaction through the transactionsMenu().
(5 Points)
• You must handle all moves from one menu to another, user must be able to go back from
any menu to the mainMenu(), you must handle exception cases. (3 Points)
• Forget password part, the user will write correct and exist email, then you will print the
related password with this account. (2 Points)
====================================================================
Part #3: Program Logic
A client will login to the system, by writing the correct email and password, then you will show
the clientHome() menu, a client can go to the transactions page, view all personal info except the
password, or log out. In log out, you will go back to the mainMenu().
You must handle an array of size 10 (Refer to part #1), to store the clients, each index of this
array will point to a linked list of clients, while creating a new account, a new client will be
added to the system, so after taking the entered information from the user – as showed in the
newClientMenu() - in addition to clientID which will be generated automatically using a
RANDOM function, you have to hash/assign this new client to a specific index of the array, so
the client will be added to the end of the linked list in that array index. Using linked list here will
help us avoid the collision problem, as more than one client might be mapped to the same array
index. (25 Points)
As in the mainMenu() you have the option to sort the array of linked lists by the linked list size
using the Quick Sort Algorithm, then view each array index after sorting and print the clients in
the linked list. (See the image below for more info) (15 Points)
If a new client tried to create an account using the same email, you should show an error
message and not add the client to the system. (3 Points)
After creating the account successfully, you will go back to the mainMenu() then the client can
login using the created info. (2 Point)
In the clientHome() menu, if the client chose the transactionsMenu() he/she can create a new
transaction, in the point you don’t have to take info from the user, just create a new object with
static data and add the transaction to the array of transactions related to this client, client can’t
create more than 5 transactions. (3 Points)
To view the transactions, you just need to view the array of transactions, to delete a transaction
client must type the transaction id, and if it is correct, delete it. (2 Points)
====================================================================
Part #4: Bonus Part (15 Points)
Sort each linked list by the id of the clients, then print the clients of each linked list and the
number of clients in that list. (You will create an option in the mainMenu() for this part)
With Gratitude