C++ Boot Camp - Task 2 - Reassessment Graphing Application Develop a program to read and display data as a graph. Your program should be developed individually, and under source control. The final version must be pushed to a private repository and shared with your tutor by the deadline. Core functionality Your program must read the graph data, graph title, and axis labels in from a file, and should be displayed using text in a console application. You must create an appropriate text structure to store the data, ensuring it is human readable. The file to load should be accepted by the program as a command line argument. Use custom classes to store the data: - Point - represents an x and y position on the graph - Graph - abstract base class with a virtual method: Draw(ostream& os) Derive classes from Graph to add support for the following concrete graph types: - PointGraph - points are simply plotted on the graph - LineGraph - points are plotted with a line connecting each point - BarGraph - points are shown as a bar graph Further functionality - Replace the Draw methods with an overloaded << stream operator. - Add support for another type of graph (check with your tutor that it is appropriate). - Allow graphs to be displayed vertically or horizontally. - During runtime allow new data to be entered, displayed, and saved back to file. - Create a menu which allows the user to load files during runtime. - Alter the program so that data can optionally be sorted before being displayed. - Demonstrate features of the STL, templating, and modern C++ features. - Add additional unique features to your program which are not listed above. Marking Scheme Core Functionality (50 marks) Persistent file structure 5 Use of source control 5 Reading and parsing file data 10 Command line argument 5 Graph class 10 PointGraph, LineGraph, and BarGraph 5 Drawing of graphs 10 Additional Functionality (50 marks) Overloading the << operator 5 Additional Graph type 5 Sorting data 5 Displaying horizontally / vertically 5 Runtime loading 5 Modifying and saving data at runtime 10 Advanced language features 5 Custom features 10