Skip to content
Snippets Groups Projects
Commit 68c946da authored by Andreas Blakli's avatar Andreas Blakli
Browse files

Fjernet ubrukt kode og la til doxygen kommentarer for alle funksjonene i ruter.cpp.

parent aeba3384
No related branches found
No related tags found
No related merge requests found
...@@ -4,14 +4,31 @@ using namespace std; ...@@ -4,14 +4,31 @@ using namespace std;
extern Stoppesteder* gStoppesteder; extern Stoppesteder* gStoppesteder;
/**
* Constructor for Ruter, lager ett objekt.
*
*/
Ruter::Ruter() { Ruter::Ruter() {
lesFraFil(); lesFraFil();
} }
/**
* Destructor for Ruter objekt.
*
*/
Ruter::~Ruter() { Ruter::~Ruter() {
skrivTilFil(); skrivTilFil();
} }
/**
* Legger til en ny rute i map'et alleRuter basert på om
* det er en buss elle bane rute.
*
* @param nr - Rutens unike nummer/ID.
*
* @see Buss::lesData().
* @see Bane::lesData().
*/
void Ruter::ny(const int& nr) { void Ruter::ny(const int& nr) {
cout << "\nBuss eller bane?" << '\n' cout << "\nBuss eller bane?" << '\n'
<< "\n1 - Buss" << '\n' << "\n1 - Buss" << '\n'
...@@ -41,23 +58,26 @@ void Ruter::ny(const int& nr) { ...@@ -41,23 +58,26 @@ void Ruter::ny(const int& nr) {
} }
} }
/**
* Returnerer peker til ruten hvis den finnes.
*
* @param nr - Rutens nummer/ID.
* @return Rute* - Peker til rute, nullptr hvis den ikke finnes.
*/
Rute* Ruter::hentEksisterende(const int nr) { Rute* Ruter::hentEksisterende(const int nr) {
// for (const auto & val : alleRuter)
Rute* rute = nullptr; Rute* rute = nullptr;
for_each(begin(alleRuter), end(alleRuter), for_each(begin(alleRuter), end(alleRuter),
[&rute, &nr](pair<int const, Rute*>& mRuter) { [&rute, &nr](pair<int const, Rute*>& mRuter) {
if (mRuter.first == nr) rute = mRuter.second; if (mRuter.first == nr) rute = mRuter.second;
}); });
/*const auto & it = find_if(alleRuter.begin(), alleRuter.end(),
[nr](map<int, Rute*>mRuter){return true; });
it.first == 1;*/
return rute; return rute;
} }
/**
* Skriver meny valg til terminal.
*
*/
void Ruter::skrivMeny() { void Ruter::skrivMeny() {
/*cout << "\n1 - Buss" << '\n'
<< "2 - Bane" << '\n'
<< "0 - Avbryt" << '\n';*/
cout << "\nN - Ny rute" << '\n' cout << "\nN - Ny rute" << '\n'
<< "A - Skriv kort alle ruter" << '\n' << "A - Skriv kort alle ruter" << '\n'
<< "E - Endre rute" << '\n' << "E - Endre rute" << '\n'
...@@ -66,16 +86,18 @@ void Ruter::skrivMeny() { ...@@ -66,16 +86,18 @@ void Ruter::skrivMeny() {
<< "Q - Tilbake" << '\n'; << "Q - Tilbake" << '\n';
} }
/**
* Meny som velger hvilke funksjoner som skal brukes
* basert på bruker valget gitt i valg parameteren.
*
* @param valg - Bruker valget.
*/
void Ruter::meny(const char& valg) { void Ruter::meny(const char& valg) {
// char valg;
Rute* rute; Rute* rute;
int ruteNr; int ruteNr;
// do {
rute = nullptr; rute = nullptr;
ruteNr = -1; ruteNr = -1;
// skrivMeny();
// valg = lesChar("");
switch (valg) { switch (valg) {
case 'N': { case 'N': {
ruteNr = lesRute(); ruteNr = lesRute();
...@@ -111,21 +133,17 @@ void Ruter::meny(const char& valg) { ...@@ -111,21 +133,17 @@ void Ruter::meny(const char& valg) {
cout << "\nUgyldig valg!" << '\n'; cout << "\nUgyldig valg!" << '\n';
break; break;
} }
//} while (valg != 'Q');
/* Rute* rute;
int valg, ruteNr;
ruteNr = lesInt("Skriv inn nummer for ny rute", MIN_RUTER, MAX_RUTER);
skrivMeny();
valg = lesInt("", 0, 3);
rute = hentEksisterende(ruteNr);
if (rute == nullptr) {
ny(valg, ruteNr);
} else
cout << "\nError: Rute eksisterer allerede!" << '\n';*/
} }
void Ruter::skrivKortData() { // skrivKortData /**
* Skriver ut info om en rute til terminal.
*
* @see Bane::skrivType().
* @see Buss::skrivType().
* @see Stoppesteder::hentEksisterende().
* @see Stoppested::hentNavn().
*/
void Ruter::skrivKortData() {
Buss* buss; Buss* buss;
Bane* bane; Bane* bane;
Stoppested* stopp; Stoppested* stopp;
...@@ -133,10 +151,6 @@ void Ruter::skrivKortData() { // skrivKortData ...@@ -133,10 +151,6 @@ void Ruter::skrivKortData() { // skrivKortData
for (const auto& val : alleRuter) { for (const auto& val : alleRuter) {
stopp = nullptr; stopp = nullptr;
cout << "\nRute nr:" << val.first; cout << "\nRute nr:" << val.first;
/*if (val.second == buss)
cout << "\tBuss";
else
cout << "\tBane";*/
cout << '\t'; cout << '\t';
val.second->skrivType(); val.second->skrivType();
if (val.second->alleStoppestedenePaaRuten.size() > 0) { if (val.second->alleStoppestedenePaaRuten.size() > 0) {
...@@ -147,22 +161,42 @@ void Ruter::skrivKortData() { // skrivKortData ...@@ -147,22 +161,42 @@ void Ruter::skrivKortData() { // skrivKortData
} }
} }
/**
* Skriver data forlengs og baklengs om en rute.
*
* @param rute - Peker til ruten som skal skrives ut.
*
* @see Rute::skrivData().
*/
void Ruter::skrivData(Rute* rute) { void Ruter::skrivData(Rute* rute) {
rute->skrivData(); rute->skrivData();
} }
/**
* Skriver data forlengs og baklengs om en rute basert på rute
* nummeret/ID.
*
* @param ruteNr - rute nummeret/ID.
*
* @see Rute::skrivData().
*/
void Ruter::spesifikkRuteData(const int& ruteNr) { void Ruter::spesifikkRuteData(const int& ruteNr) {
Rute* rute; Rute* rute;
// int ruteNr;
// ruteNr = lesRute();
rute = hentEksisterende(ruteNr); rute = hentEksisterende(ruteNr);
if (rute != nullptr) { if (rute != nullptr) {
// skrivData(rute);
rute->skrivData(); rute->skrivData();
} else } else
cout << "\nError: rute nr: " << ruteNr << " finnes ikke!" << '\n'; cout << "\nError: rute nr: " << ruteNr << " finnes ikke!" << '\n';
} }
/**
* Endrer en eksisternde rute.
*
* @see lesRute().
* @see hentEksisterende().
* @see spesifikkRuteData().
* @see Rute::endre().
*/
void Ruter::endre() { void Ruter::endre() {
Rute* rute; Rute* rute;
int ruteNr, valg; int ruteNr, valg;
...@@ -173,22 +207,28 @@ void Ruter::endre() { ...@@ -173,22 +207,28 @@ void Ruter::endre() {
rute->endre(); rute->endre();
} else } else
cout << "\nError: rute nr: " << ruteNr << " finnes ikke!" << '\n'; cout << "\nError: rute nr: " << ruteNr << " finnes ikke!" << '\n';
if (valg > 0) {
/* int start, slutt;
start = lesInt("Hvilke stoppested utgjør start ytterpunkt?",
1, alleStoppestedenePaaRuten.size());
slutt = lesInt("Hvilket stoppested utgjør slutt ytterpunkt?",
start + 1, alleStoppestedenePaaRuten.size());*/
}
} }
/**
* Leser inn rute nummer fra CLI.
*
* @return int - Innlest tall valgt av bruker.
*
* @see lesData3 lesInt().
*/
int Ruter::lesRute() { int Ruter::lesRute() {
int ruteNr; int ruteNr;
ruteNr = lesInt("Skriv inn rute nummer", MIN_RUTER, MAX_RUTER); ruteNr = lesInt("Skriv inn rute nummer", MIN_RUTER, MAX_RUTER);
return ruteNr; return ruteNr;
} }
/**
* Leser ruter fra fil.
*
* @see HjelpeFunksjoner::splittStreng().
* @see Buss::lesFraFil().
* @see Bane::lesFraFil().
*/
void Ruter::lesFraFil() { void Ruter::lesFraFil() {
int antallRuter, i; int antallRuter, i;
antallRuter = i = 0; antallRuter = i = 0;
...@@ -201,13 +241,12 @@ void Ruter::lesFraFil() { ...@@ -201,13 +241,12 @@ void Ruter::lesFraFil() {
while (!fil.eof() && i < antallRuter) { while (!fil.eof() && i < antallRuter) {
getline(fil, type); getline(fil, type);
typeSplittet = hjelp.splittStreng('*', type); typeSplittet = hjelp.splittStreng('*', type);
if(typeSplittet[1] == "Buss") { if (typeSplittet[1] == "Buss") {
Buss* buss = new Buss; Buss* buss = new Buss;
buss->lesFraFil(fil); buss->lesFraFil(fil);
alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), buss)); alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), buss));
} } else if (typeSplittet[1] == "Bane") {
else if (typeSplittet[1] == "Bane") { Bane* bane = new Bane;
Bane * bane = new Bane;
bane->lesFraFil(fil); bane->lesFraFil(fil);
alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), bane)); alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), bane));
} }
...@@ -219,12 +258,18 @@ void Ruter::lesFraFil() { ...@@ -219,12 +258,18 @@ void Ruter::lesFraFil() {
<< '\n'; << '\n';
} }
/**
* Skriver ruter til fil.
*
* @see Buss::skrivTilFil().
* @see Bane::skrivTilFil().
*/
void Ruter::skrivTilFil() { void Ruter::skrivTilFil() {
ofstream fil(STI_RUTER); ofstream fil(STI_RUTER);
fil << alleRuter.size() << '\n'; fil << alleRuter.size() << '\n';
for (const auto & val : alleRuter) { for (const auto& val : alleRuter) {
fil << val.first << '*'; fil << val.first << '*';
val.second->skrivTilFil(fil); val.second->skrivTilFil(fil);
fil << "X" << '\n'; fil << "X" << '\n';
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment