Skip to content

gbowne1/gradebook-management-system

Repository files navigation

Gradebook Management System

This is a C++ Gradebook Management System for the Kindergarten and 1st through 12th Grades.

C++

Features

  • Load students, teachers, assignments, classes and grades from CSV files
  • View and modify loaded data
  • Save students and grades to CSV files

Getting Started

This step describes the prerequisites and install steps for the libraries needed to build and run the project.

Prerequisites

  • CMake - v3.14+
  • C++ Compiler - C++ 14+ - Currently tested with g++ only
  • Google Test - Only needed for linting, as CMake fetches Google Test automatically during build
  • Operating system - Currently the following operating systems are supported: Ubuntu and Debian

Installing

Currently, there are no install steps that are strictly necessary. However, if you wish to include Google Test in your local library, you may do so by following these steps:

git clone https://github.com/google/googletest.git
cd googletest
cmake -B build .
cd build
cmake --build .
cmake --install .

Building the project

This project is built using CMake and Make. Here is an example on how to build the project:

cmake -B build .
cd build
make

And then run the executable:

cd gradebook
./gradebook

Generating the documentation

The documentation can be generated with Doxygen in the HTML and LaTeX formats. In order to do so, you must first install Doxygen and Graphviz:

# Ubuntu 22.04
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install doxygen
sudo apt-get install graphviz

Then run Doxygen:

doxygen doxygen.conf

Two folders named html and latex should appear.

Running the tests

This project uses Google Test for unit testing. In order to run unit tests, the flag -DTESTING=ON must be passed to the CMake command. Here is an example on how to build and run tests:

# Build with CMake and Make
cmake -DTESTING=ON -B build .
cd build
make
# Run tests
cd tests
./gradebook_test [--gtest_filter=...]

Contributing

Please see the Contributing file for more information.

Versioning

Versioning is not available for this project yet.

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details.