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