-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeltager.cpp
187 lines (145 loc) · 6.11 KB
/
deltager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
//deltager.cpp
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include "DELTAGER.H"
#include "NASJONER.H"
#include "CONST.H"
#include "FUNKSJONER.H"
#include <iostream>
#include <iomanip>
#include <cstring>
#include <fstream>
using namespace std;
extern Nasjoner nasjonObj; // Nasjoner-objekt fra main.
Deltager::Deltager()
{
cout << "\n\tDet har skjedd en feil! Deltager-objekter skal ikke lages uten parametre!";
}
// Sender med ID til constructor.
Deltager :: Deltager(char *nyNasjon, int ID) : NumElement(ID) {
char buffer[STRLEN];
char valg;
nasjon = nyNasjon; // Setter nasjon på deltageren, fra param.
les("\nNavnet paa deltageren: ", buffer, NVLEN); // Leser in nnavet på deltageren.
fullNavn = konverter(buffer); // Gjør om størrelsen og lager ny.
do { // Loop hvis M eller K ikke blir valg.
valg = les("\nKjonn (m/k): ");
} while (valg != 'M' && valg != 'K');
if (valg == 'M')
deltagerKjonn = Mann; // kjønn blir satt til Mann.
else
deltagerKjonn = Kvinne; // kjønn blir satt til Kvinne.
les("\nAnnet", buffer, STRLEN); // Leser inn annet.
data = konverter(buffer); // Gjør om størrelsen og lager ny.
nasjonObj.oppdaterNasjon(nyNasjon); // Oppdaterer Nasjon obj. med antDeltagere +1.
}
// Sender med ID til constructor.
Deltager :: Deltager(ifstream & inn, int ID) : NumElement(ID) {
int tempKjonn;
fullNavn = lesTxt(inn); // Leser datastruktur fra fil via les funksjon.
nasjon = lesTxt(inn);
data = lesTxt(inn);
tempKjonn = lesInt(inn);
if (tempKjonn == 0) // Hvis det som ble lest inn = 0.
deltagerKjonn = Mann; // Setter kjønn til å være Mann.
else
deltagerKjonn = Kvinne; // Setter kjønn til å være Kvinne.
}
Deltager::~Deltager() //destructor
{
delete[] nasjon;
delete[] fullNavn;
delete[] data;
}
void Deltager::endreNavn() //endrer en deltagers navn
{
char nv[NVLEN];
delete[] fullNavn; //slett exsisterende navn
les("Skriv inn nytt navn", nv, NVLEN); //les inn nytt navn
fullNavn = konverter(nv); //konverter til char*
cout << "\nNavn endret til: " << fullNavn; //bekrefte endring til bruker
}
void Deltager::endreNasjon() // Endrer nasjonen til en deltager
{
char *forkortelse;
forkortelse = nasjonsForkortelse("\nSkriv inn den nye nasjonens forkortelse"); //les ny nasjon
if (nasjonObj.finnesNasjon(forkortelse)) { //hvis ny najon finnes
nasjonObj.reduserAntDeltagere(nasjon); //reduser antall deltagere i aktuelt obj.
delete[]nasjon; //slett navnet på laget nasjon
nasjonObj.okAntalletDeltagere(forkortelse); //ook antallet deltagere i aktuell obj
nasjon = forkortelse; //sett nytt navn på nasjon
nasjonObj.skrivTilFil(); //skriv til fil
}
else
{
skriv("Finner ikke nasjon med forkortelsen: ", forkortelse); //feilmelding
delete[]forkortelse; //slett navnet på ny nasjon hvis den ikke eksisterer
}
}
void Deltager::endreData() //endrer dataen til en deltager
{
char buffer[STRLEN];
delete[] data; // Slett gammel data.
les("\nSkriv inn ny info", buffer, STRLEN); // Spor etter ny data.
data = konverter(buffer); // Konverter fra array til peker.
}
void Deltager::endreKjonn() // Endre kjonn på deltager.
{
char valg;
do { // Loop om input ikke er M eller K.
valg = les("\nKjonn (m/k): ");
} while (valg != 'M' && valg != 'K');
if (valg == 'M')
deltagerKjonn = Mann; // Kjonn blir satt til Mann.
else
deltagerKjonn = Kvinne; // Kjonn blir satt til Kvinne.
cout << "\nKjonn endret til: " << ((deltagerKjonn == Mann) ? "Mann" : "Kvinne");
}
void Deltager::display() // Skriver ut alle data om en deltager.
{
cout << "\n\nDeltagers id: " << number
<< "\nDeltagers navn: " << fullNavn
<< "\nDeltagers kjonn: " << ((deltagerKjonn == Mann) ? "Mann" : "Kvinne")
<< "\nDeltagers nasjonalitet: " << nasjon
<< "\nAnnet: " << data;
}
void Deltager::displayHoved()
{ // Skriver kun ut hoveddataene for en deltager.
cout << "\n\nDeltagers id: " << number
<< "\nDeltagers navn: " << fullNavn
<< "\nDeltagers kjonn: " << ((deltagerKjonn == Mann) ? "Mann" : "Kvinne");
}
void Deltager :: skrivDeltagerTropp(char *n) {
if (strcmp(n, nasjon) == 0) // Hvis nasjonens navn er like parameterens:
cout << "\n\nID: " << number
<< "\nNavn: " << fullNavn
<< "\nKjonn: " << ((deltagerKjonn == Mann) ? "Mann" : "Kvinne");
}
void Deltager :: skrivTilFil(ofstream & ut) { // Skriver til fil.
/* Filoppsett:
antObjeketer - Antall objeketer i liste.
number - Deltager ID-en.
fullnavn - Navnet til deltageren.
nasjon - Nasjonstilhørighet.
data - Ekstra informasjon om deltageren.
kjonn - Kjønnet til deltageren.
*/
skriv(ut, number); // Skriver ut data til fil via Skriv funksjon.
skriv(ut, fullNavn);
skriv(ut, nasjon);
skriv(ut, data);
skriv(ut, deltagerKjonn);
}
char* Deltager :: hentNavn() { // Returnerer navnet til deltageren. Brukes ikke?
return fullNavn;
}
char * Deltager::hentNajon() // Returnerer en deltagers najon, brukes til aa lage en Statistikk Raport.
{
char temp[NASJONLEN +1];
strcpy(temp, nasjon);
return temp;
}
void Deltager :: skrivNavn() { // Skriver ut navnet til deltageren.
cout << "\tNavn: " << fullNavn << '\n';
}