schedule_maker / docent.cc
docent.cc
Raw
#include <vector>
#include "docent.h"

using namespace std;

// Default constructor die DocentBeschikbaarheid initialiseert
Docent::Docent() { 
    docentId = -1;
    laasteBeschikbaarheid = -1;
    for(int i = 0; i < MaxNrTijdsloten; i++) {
        DocentBeschikbaarheid[i] = false;
    } // De docent is nog nergens beschikbaar om les te geven
} // Docent::Docent

// Setter voor de Id van de docent
void Docent::setId(int const id0) {
    docentId = id0;
} // Docent::setId

// Setter voor een tijdslot waarop de docent les kan geven
void Docent::setTijdslot(int const tijdslot) {
    DocentBeschikbaarheid[tijdslot] = true; 
    laasteBeschikbaarheid = tijdslot;
} // Docent::setTijdslot

// Voegt een Id van een vak die de docent geeft toe
void Docent::addVakId(int const vakId) {
    vakIds.push_back(vakId);
} // Docent::addVakId

// Getter voor de Id van de docent
int const Docent::getId() {
    return docentId;
} // Docent::getId

bool Docent::wilLesgeven(int const tijdslot) const {
    return DocentBeschikbaarheid[tijdslot];
} // Docent::wilLesgeven

// Kijkt of de docent beschikbaar is op dit tijdslot
bool Docent::isDocentBeschikbaar(int const tijdslot, int const nrUrenPerDag) {
    int const dag = tijdslot / nrUrenPerDag; // Nummer van de dag van dit tijdslot
    int const beginDag = dag * nrUrenPerDag; // Het eerste tijdslot van deze dag
    int const eindDag = beginDag + nrUrenPerDag; // Het laatste tijdslot van deze dag
    
    if (!DocentBeschikbaarheid[tijdslot]) {
        return false;
    } // Kijkt of de docent les wilt geven op dit tijdslot

    for(int i = beginDag; i < eindDag; i++) {
        if(!isTijdslotBeschikbaar(i)) {
            return false;
        }
    } // Kijkt of de docent nog niet les geeft op deze dag
    return true;
} // Docent::isDocentBeschikbaar

// Retourneert of op deze dag de docent beschikbaar is om les te geven
bool Docent::isDagBeschikbaar(int const dag, int const nrUrenPerDag) {
    int const beginDag = dag * nrUrenPerDag; // Het eerste tijdslot van deze dag
    int const eindDag = beginDag + nrUrenPerDag; // Het laatste tijdslot van deze dag
    
    for(int i = beginDag; i < eindDag; i++) {
        if(DocentBeschikbaarheid[i]) {
            return true;
        } // De docent kan op deze dag lesgeven
    } // Loopt door de tijdsloten van deze dag
    return false;
} // Docent::isDagBeschikbaar


// Geeft een vector met alle Id's van de vakken die de docent geeft
vector<int> Docent::getVakIds() {
    return vakIds;
} // Docent::getVakIds

// Geeft het laatste tijdslot waarop de docent les kan geven terug
int const Docent::getLaatsteBeschikbaarheid() {
    return laasteBeschikbaarheid;
} // Docent::getLaatsteBeschikbaarheid