') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - LGEaston/Bus-Tracking: Bus Tracking System A collaborative project developed by @Imaan-Hayfaa, @LGEaston, @Chima200057, @razeen46, and @EdwinAbdonShayo. This Bus Tracking System allows users to manage and track bus information efficiently, with features for adding, searching, displaying, and deleting bus records. · GitHub
Skip to content

Repository files navigation

Bus Tracking System


Project Overview

The Bus Tracking System is a console-based application designed to manage bus information, enabling users to add, search, delete, and display bus details in an organized way. Developed collaboratively by Iman, Lisa, Chima, Razeen, and Edwin, this project implements a modular structure with separate files for core functionalities, unit tests, and compilation settings.


File Structure

  • main.cpp: Contains the main function and provides the user interface for interacting with the Bus Tracking System.
  • bus.cpp: Implements functions for bus operations, including adding, searching, deleting, and displaying bus information.
  • bus.h: Header file defining the Bus class and function prototypes used in bus.cpp.
  • test.cpp: Contains unit tests for verifying various functionalities within the Bus Tracking System.
  • Makefile: Configuration file for compiling the source code and generating executable files.

Installation

  1. Clone the Repository

    • Clone the repository from Bitbucket (Note: The repository is read-only; direct modifications are restricted).
    • Command: git clone <Bitbucket-link>
  2. Navigate to the Project Directory

    • Move to the project directory in your terminal.
    • Command: cd BusTrackingSystem
  3. Compile the Project

    • Use the make command to compile the source code and create the executable files.
    • Command: make
  4. Run the Program

    • Execute the main application to interact with the Bus Tracking System.
    • Command: ./bustracking

Usage

Upon running the main executable (./bustracking), users are presented with a menu offering several options:

  • Add a Bus: Enter details to add a new bus to the system.
  • Search for a Bus: Look up a specific bus by entering its ID.
  • Display Available Buses: View all buses currently stored in the system.
  • Delete Bus Information: Remove a bus from the system.

To verify functionality, unit tests are included and can be run with the ./testbus command:

  • Command: ./testbus

The system will display test results, ensuring that core features are functioning as expected.


Credits

This project was developed by a team including Imaan, Lisa, Chima, Razeen, and Edwin. Our collaborative efforts resulted in a robust, user-friendly Bus Tracking System designed for seamless user interaction and effective bus management.

About

Bus Tracking System A collaborative project developed by @Imaan-Hayfaa, @LGEaston, @Chima200057, @razeen46, and @EdwinAbdonShayo. This Bus Tracking System allows users to manage and track bus information efficiently, with features for adding, searching, displaying, and deleting bus records.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages