For this project you will be designing and implementing a system in C++, that will take one or more sets of personal possessions belonging to you and your soon to be roommates, and perform inventory management for the move in. The sets must be implemented via a Linked List representation and your system will need to provide set operation functionality. The user will submit a total list of all desired possessions, followed by lists of each person's possessions via an input file. Your system must output the total set of all possessions that will be in the new apartment, for each person the set of possessions they brought, the total set of all desired possessions, the set of all desired possessions brought by at least one person, the set of all desired possessions brought by exactly one person, the set of all desired possessions brought by more than one person, and the set of all desired possessions that are unfortunately missing.
This assignment has two parts: a design portion and an implementation portion.
For the design portion, you must generate documentation, in PDF format, describing your system. The purpose of this is for you to explain not just what your system is doing, and how it is doing it, but why. You will need to justify your design decisions in a concise, informative manner. Justifications such as "I did this because it was easy" are not sufficient, as you should actually explain why a particular data structure or algorithm was more efficient, effective, or optimal. Additionally, commented code, while sometimes helpful in small examples, is not a sufficient explanation in and of itself. Your explanations and justifications are expected to be presented in prose and in paragraph format, i.e. not bulleted lists. Further, part of the evaluation of your design document is the apparent amount of thought and effort that went into its creation.
This document should be divided into three main parts, and should follow the provided template.
In the first part, in one or two paragraphs you should describe the project in your own words and give a brief overview of the problem. Do not copy and paste this from the instruction document.
For the second part, you should describe the data structures you used in your system. What, if any, objects or structs did you create to store data? How did you organize and manage them? What types of formal data structures did you make use of (trees, graphs, arrays, hashes, etc)? In a few paragraphs, describe in detail how you stored the various data elements in your system, and be sure to provide sufficient justification of your methodology.
For the third part, you should describe functionality of your system. How is data moved and transformed? How is it read in? How is it output? What are the various major functions you constructed and how do they work? In a few paragraphs, describe in detail how your system works, and be sure to provide sufficient justification of your methodology. You might also consider including diagrams to more easily visualize how all of the pieces fit together.
Your program must provide the following functionality and adhere to the following constraints: