0
NYNA
All work
Software engineering · Group project

A train schedule system in modern C++.

An object-oriented C++ application for storing and searching train schedules, built the full software-engineering way: functional and non-functional requirements, UML class and sequence diagrams, an inheritance-based class design, and a Boost.Test unit-testing suite checked against a requirements test plan. A group project (Group 06) at Royal Holloway.

C++Object-oriented design
UMLClass & sequence diagrams
Boost.TestUnit + requirement testing
Group of 5Specification-driven build

What it does

The system models a railway timetable and lets a user search it: store services and their times, query by route or time, and present results through a small UI layer. It started from a written specification, functional and non-functional requirements that justified every feature, then moved through design, implementation and a documented test pass.

Architecture

Schedule

Holds the timetable data and the services it contains.

SearchEngine

Queries the schedule by route and time, returning matches.

UIHandler

Drives interaction and presents results to the user.

Tested

Designed against a test plan.

Boost.Test unit test (illustrative)
#define BOOST_TEST_MODULE schedule_tests
#include <boost/test/included/unit_test.hpp>
#include "Schedule.h"

BOOST_AUTO_TEST_CASE(search_returns_matching_service)
{
    Schedule s;
    s.addService("Waterloo", "Reading", "08:32");
    SearchEngine engine(s);

    auto results = engine.findByRoute("Waterloo", "Reading");
    BOOST_CHECK_EQUAL(results.size(), 1u);
    BOOST_CHECK_EQUAL(results.front().departure(), "08:32");
}

From the assessor

"Good level of complexity in terms of coding. Readability of code is good with relevant variable naming and comments. Implementation of inheritance. Implementation reflects design. Well done!"

"Good test plan, evidence of testing is convincing. Good use of Boost and test code."

Get in touch

Let's build something that performs.

Ready when you are.

A brand-new website, a network rebuild, a custom board or a tricky hardware fault, drop us a line and we'll respond within one working day. Quotes are free.

info@nyna.co.uk
Email
info@nyna.co.uk
Phone
020 8087 4237
Office
Office 1.42, Building 2, Croxley Business Park, WD18 8YA