Task(s)
Part 1: Building a Project Management Application (70 Marks)
In this project, you must apply knowledge of C++ object-oriented programming to design and
implement a console-based Project Management application that allows users to manage projects,
tasks, team members, vendors and clients.
The program should meet the following requirements:
1. Project Class:
a. Create a Project class with attributes such as project name, description, start date, end
date, and status (e.g., "Not Started", "In Progress", "Completed").
b. Implement methods to add, update, and delete projects.
2. Task Class:
a. Create a Task class with attributes such as task name, description, start date, end date,
and status (e.g., "Not Started", "In Progress", "Completed").
b. Implement methods to add, update, and delete tasks.
c. Each task should be associated with a project.
d. A task may have one level of sub-tasks. Each main task may have multiple sub-tasks.
3. Team Member Class:
a. Create a TeamMember class with attributes such as team member name, role, and
contact information.
b. Implement methods to add, update, and delete team members.
c. Each team member should be associated with a project.
4. Vendor Class:
a. Create a Vendor class with attributes such as company name, company type (what
resource does this vendor provide e.g. IT services, cabling, software coding etc.), and
contact person(s).
b. A project may have multiple vendors.
c. Vendors can also be assigned to a task.
d. Implement methods to add, update, and delete vendors.
5. Client Class:
a. Create a Client class with attributes such as company name, company type (which
industry are they in like finance, banking, IT, construction, plantation etc.), and contact
person(s).
b. A project may have multiple clients.
c. Implement methods to add, update, and delete clients.
6. Project Management System Class:
a. Create a ProjectManagementSystem class that manages projects, tasks, and team
members.
b. Implement methods to display project details, task details, and team member details.
c. Implement methods to assign tasks to team members and update task status.
7. Menu-Driven Interface:
a. Create a menu-driven interface that allows users to interact with the Project
Management Application. The menu should include options to:
i. Add, update, and delete projects
ii. Add, update, and delete tasks
iii. Add, update, and delete team members
iv. Add, update, and delete vendors
v. Add, update, and delete clients
vi. Assign tasks to team members
vii. Update task status
viii. Display project details, task details, and team member details
8. Additional functions – include 2 relevant additional functions (not described in this assignment)
that will further demonstrate your ability to use object-oriented programming (OOP) concepts.
9. Code Standard
a. You must demonstrate your ability to use as many OOP concepts as possible for your
project. Use classes and objects, composition, inheritance, and polymorphism where
necessary. At least one static function must also be applied in your program.
b. Your projectshould have one main.cpp source file, multiple header files, and text file(s).
c. All data should be saved into text files preferably in CSV format.
d. Use exception handling to handle possible input errors.
e. Use suitable STLs.
Part II: Project Documentation (30 Marks)
Create a project documentation that covers the following details:
1. A set of UML diagrams that shows the functionalities, relationship between classes, and the
workflow of your project management application. Use appropriate UML tools and
diagramming techniques.
2. Explain why the STLs you used to develop the project management application is suitable
based on this project context.
3. Explain the rationale of using inheritance and polymorphism you implemented in your project.
For example, you may clarify why a class should inherit from another class(es) and how you
enabled polymorphism in your program codes.
4. Explain the rationale for using the static function in your program.
5. Explain the 2 additional functions you implemented in your program and the OO concepts that
you implemented in the 2 additional functions.