Project: SurveillanceManager
Project
Teaching Staff Design
Instructions for Reviewing the Teaching Staff Design
Review the teaching staff design and hints. Think about how you can adapt your design from Part 1 to include the required classes and methods for Part 2. Unlike previous cSC courses, you are not required to fully follow this design. You do need to have the required classes and methods for automated feedback, but you can adapt the remainder of the design as you wish.
Preparing for Experimental Analysis
Later, during Part 3 of the project, you will complete an experimental analysis of your software. Review this -8 minute video introduction on experimental analysis before you begin implementing and testing your software. In the sample experimental study in the video, we will be comparing string concatenation (using "+" within a for loop to build strings) vs using StringBuilder in the Java libraries.
A discussion of experimental studies also appears in the textbook in Chapter 4.1.
Review the Teaching Staff Design
Your focus should be implementing the SurveillanceManagerur, ReportManager, and SurveillanceManager classes (displayed in green) in the design below. To facilitate your implementation of the software, certain files and libraries (displayed in red in the diagram) will be provided for you to use (you will download and import these files in the next Part 2 task as you setup your development environment):
The edu.ncsu.csc316.surveillance.io, edu.ncsu.csc316.surveillance.data,and edu.ncsu.csc316. surveillance.dsa packages are provided for you in a library JAR file that you will download on the next page of this project writeup.
All of your data structure code from workshop coding activities will be imported as a JAR file for you to use during the project-you will not be implementing any new data structures or sorting algorithms during the project! You will be reusing the data structures and sorting algorithms that you have already implemented in the workshop coding activities!
You may add additional private helper methods to ReportManager and SurveillanceManager as needed.
You must use the provided data classes. You may need to adapt your algorithm design to meet these restrictions.
You must create a user interface for your software to satisfy the client's requirements and to be able to run system test cases. You do not need to create a GUI! A simple command-line interface is acceptable to satisfy the client's requirements.
Teaching Staff UML Class Diagram
Teaching Staff UML Class Diagram, The red classes are provided in a JAR library for vou to download andl use (see the next page of the instructions). You only need to implement the green classes. Do nol implement the red classes!
Adapting Sorter Algorithms from Workshop 1 & Workshop 4
Based on the software requirements, certain information in the report needs to be sorted. However, your sorting class implementations from Workshop 1 and Workshop 4 work only with arrays of elements. Since this project is using Lists and Maps instead of arrays, you will need to adapt your approach so that you can reuse your array sorters.
One Option: you can create an array of map entries within your software to help facilitate sorting so that you can reuse your array-based sorting classes. For example, you can convert your Map of entries into an array of entries since the Entry class from Workshop 5 is Comparable: first, pull each entry out of a Map and save the entry into an array. If you plan to use a comparison-based sorting algorithm, you can also implement a custom Comparator to help direct the sorting criteria using the entry's key and/or value.
There are other options! You can be creative with your approach, as long as your software implementation satisfies the required method inputs/outputs, you should not feel restricted to a specific implementation. However, make sure your sorting adaptation does not change the theoretical runtimes of the sorting algorithms discussed in class! For example, you don't want your logic for adapting your array-based sorting algorithms to result in a O(n3) mergesort theoretical runtime.