The motive of the project is to create an Object-oriented Database Model for a Taxi Agency. Each type of object in the problem space has been mapped to a certain class in the Object Oriented Solution Space. It's sort of an API wrapper which allows a programmer to create, read, update and erase (CRUD) object data using the interface provided by Taxi Agency class during the execution of the program. In simple terms, this app essentially allows a backend programmer to mimick an UI programmatically, rather than having a concrete graphical or text based UI.
Run the following commands in the app root directory.
make // compile tests
./output // run tests
make reset // compile reset file
./reset // run reset
make clean // clean
Class | Description |
---|---|
Taxi Agency | An instance of Taxi Agency class behaves like a container to the list of all the entities (Driver, Customer, Taxi, Shift (ongoing, history)). It stores basic stats like limits of the Agency (based on budget, which can be upgraded upon investment), employee vacancies, ongoing shifts, etc. It also maintains a record of the history of shifts. Destruction of a Taxi Agency instance leads to the destruction of all the containers contained in it, thus, all the instances of the User, Customer, Taxi and Shift classes. |
User | Prototype of an user registered with the Taxi Agency. It uses uuid as its primary key. Customer class and Driver class inherits User class. |
Taxi | Holds data about the Taxi. Each record can represents a breed of Taxi and an Agency can own more than one car of a certain breed. |
Shift | Holds information about a certaing booking, which can be made by a customer. |
The test relies on an initial static CSV data, which has been provided in the relative path ./data/sample
. However, the test only alters the CSV files present in ./data
.
It is essential to reset the data back to the initial point in order for the tests to run successfully.
./config.hpp
contains the relative paths to all the CSV files.
Dependencies for interactive console testings
agauniyal/rang
Sample Data Courtesy: Taxi Data