Introduction:

As a competent programmer, your ability to develop programs that implement inheritance, polymorphism, and collections will help you design and develop applications to meet customer requirements. This project is an opportunity for you to peer behind the scenes at how a program may function and will help you apply object oriented programming skill sin a familiar, real-world scenario.

Scenario:

You have been assigned by your employer to create a computer application to help employees manage their contact list. Users must be able to store two types of contacts: business and personal. Both types have common fields as well as properties unique to them. The application needs to accept and store contacts by type. Your team lead has required that you use an object-oriented design for the application. You are encouraged to consider usability of the system when designing the user interface. It is up to you if you want to use a menu-driven or graphical user interface; however, the approach needs to create an inheritance relationship for the contacts in order to facilitate evolving this application to easily add new contact types in the future.

Requirements:

Note: Submit all .java and .class files in one zipped folder.

Create a contact list application that meets the employer’s following minimum requirements.

Input Requirements

  • Include a prompt that allows the user to enter a command from the following four options, repeating the process of displaying the menu screen until the user has selected “quit.”
    • Add a business contact
    • Add a personal contact
    • Display contacts
    • Quit
  • Include a prompt that allows the user to enter the following identifiable information when the “add a business contact” command is selected:
    • First name
    • Last name
    • Address
    • Phone number
    • E-mail address
    • Job title
    • Organization
    • Note: You are not required to store the contact information as persistent data in a database.
  • Include a promprt that allows the user to enter the following identifiable information when the “add a personal contact” command is selected:
    • First name
    • Last name
    • Address
    • Phone number
    • E-mail address
    • Date of birth

Output Requirements

  • Display the results to the user on screen in a readable and descriptive format(e.g., System.out) by doing the following:
    • Display all contacts’ first and last names when the “display contacts” command is selected
    • Include a numeric key for each contact that will be used to invoke the method that displays the contact details.
  • Include a prompt that allows the user to enter the numeric key to display all details of the contact in a readable and descriptive format (e.g. System.out, output to a text file using FileWriter).
    • Identify contacts by type when displaying the details of a contact: business or personal

Design Requirements

  • Demonstrate the use of collections (e.g. TreeSets, ArrayList).
  • Demonstrate the use of encapsulation
  • Demonstrate use of inheritance by doing the following:
    • Create one abstract class
    • Create two subclasses
  • Demonstrate the use of polymorphism by overriding a method of the abstract class in both subclasses (i.e., method that displays contact details).

When you use sources, include all in-text citations and references in APA format.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.