For the question given below, you are required to submit design and implementation documentation as described over the page. Design, implement (in Java), test and document a set of classes for use in a program to manage a (prototype) online dating service. The service manages a list of customers.
Customers have login (names) and passwords.
A customer is either an advertiser or a responder.
All customers also have some personal details including gender, age and income.
An advertiser has a text advert, a description of partner sought and a list of reply messages.
A description of partner sought has a gender, range of ages and range of incomes.
A reply message has an owner (which is a responder) and some text.
When new customers are created, ie when someone has paid and is accepted, then they choose a new login and they are given their own default password. (We don't encrypt passwords in this prototype.)
When a new advertiser is created (when they log in) they enter the required details and they begin with no replies recorded for them.
When a new responder is created they enter their details. When a responder logs in for the first time or subsequently, the program finds all the matching descriptions sought by advertisers. The responder is then able to choose to send reply messages to any of those matching advertisers.
When an advertiser logs in later they get presented with their list of reply messages, old or new, which they can delete or keep to re-read. We assume that reply messages' text are supposed to contain other ways for advertisers to contact responders (eg, phone, email) so there is no need for this service to pass messages that way.
There should be a class to manage the list of customers. The final product will use a database to store customer data but the prototype for this assignment just needs to manage a datastructure.
It does NOT even have to store information in an external file.
Design and implement enough functionality in the classes to allow the operation of the following test program (which you also design, implement, test, document):
The client program should do the following (and explain on the screen as it does each step)
a) create a list of 6-7 different customers of both types with made-up details built in to the client program (Alternatively, get input from the user using the java.util.Scanner class),
b) get some matches for a responder, choose one match and send the match a message, then log in that advertiser to get the message,
c) add a new customer to the dating service,
d) delete an existing customer from the dating service,
e) display the details of all advertisers registered with the service,
f) display the details of all responders registered with the service,