Write a Java program for a Customer Relationship
Management(CRM) system with the
following features (P.S GUI INTERFACE):
◦ Customer: Name, Surname, ID (incremental ID by 1 for each new customer),
Email, Phone, Address.
◦ Service: ID (incremental ID by1 for each group),CustomerID, Priority (High,
Medium, Low, Other), ResolutionTimeFrame (Measured in Man hours),
AssignedUser, Status(resolved or not), Fee.
◦ User (simple user of system): ID, Name, Surname, Username and Password
(insert from code five fixed users), Address , PhoneNumber
◦ Manager: Name, Surname, Username and Password (insert from code one fixed
The program must:
◦ Present a Menu for the simple user after he has logged in with username and
Assign a service request to a specific user; Remove
Print information for customer with a certain ID
Apply offers to the different type of customers.(Apply offer to the
Loyal Customer with 10% discount on the fee)
Overall number of Services requested by customers assigned to a
user with a certain username. (requires manager password)
◦ Total amount of all fees of resolved Services processed by
the user with a certain username (requires manager
◦ Total amount of all fees of resolved Services on the current
day (requires manager password).
Change user from one to another (Each user should manage
own portfolio of customers)
◦ Change from User to Manager
◦ Change from Manager to User
After implementation of the first phase start to include the
following specifications: For the
classes Customer and Services make sure you use a static integer field for the incremental ID of
the objects of these classes.
Introduce inheritance in the project design with the following:
a. Add a new class
Person class: with the following attributes;
Classes inheriting from Person:
i. Manager: has two additional features more than the Person called InternalPhoneNumber and
PIN to start the software at the beginning of the day.
ii. User: has these fields more than Person: InternalPhoneNumber, baseSalary.
b) Classes inheriting from Customer class
The following types of Customer exists.
ii. Class LoyalCustomer which has additional features: IndividualID and Discount.
The manager inserts the discount amount periodically. (It may be also 0 )
iii. Class BusinessCustomer, which has additional features more than Customer,
called Business ID(NIPT) and has an additional feature more than
LoyalCustomer called BusinessDiscount. The manager will define the amount of
BusinessDiscount. The overall discount is calculated as Discount +
Define the following methods in all classes:
calculateTotalFee( ) : Calculate the Total fee with the discount for each of these classes
PrintInfo( ): Print all the information of the Service