-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclassi.h
590 lines (527 loc) · 21.2 KB
/
classi.h
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
/*!
\file classi.h
\brief Header per la prototipazione delle classi.
*/
#ifndef CLASSI_H_INCLUDED
#define CLASSI_H_INCLUDED
/*! \file classi.h
\brief File di Prototipazione.
Racchiude l'intera struttura prototipata di ogni classe.
*/
class Persona;
class Direttore;
class Addetto;
class Utente;
class Catalogo;
class Libro;
class Pin;
class Registrazione;
class Login;
class Data;
class Prestito;
class Persona{
char nome[21], cognome[21], pin[5];
time_t dataRegistrazione;
public:
/*! \fn Persona(char*, char*, char*)
\brief Costruttore Persona.
Richiede 3 parametri in entrata: nome, cognome, pin.
*/
/*! \fn ~Persona()
\brief Distruttore Persona.
*/
/*! \fn void SetCredenziali(char*, char*, char*)
\brief Setter delle credenziali.
Funge da metodo setter per i 3 parametri: Nome, Cognome, Pin.
*/
/*! \fn void ViewListaPrestiti()
\brief Visualizzatore della Lista Prestiti.
Mostra il singolo prestito richiesto dall'Utente ne chiede l'accettazione da parte del relativo Addetto/Direttore.
*/
/*! \fn void ViewListaPrestitiInCorso()
\brief Visualizzatore della Lista Prestiti In Corso.
Mostra la lista dei prestiti in corso indicandone: Titolo Libro, Nome, Cognome, Username Utente,\n
Data Accettazione, Data Scadenza, Giorni mancanti alla scadenza.
*/
/*! \fn void ViewListaPrestitiScaduti()
\brief Visualizzatore della Lista Prestiti Scaduti.
Mostra il singolo prestito scaduto e ne chiede la conferma del reso da parte del relativo Addetto/Direttore.
*/
/*! \fn void ViewListaUtenti()
\brief Visualizzatore della Lista Utenti.
Mostra la lista degli Utenti indicandone: Nome, Cognome, Username, Pin, Data Registrazione.
*/
/*! \fn bool RicercaPrestito(int* vett=new int[1000])
\brief Ricercatore del Prestito.
\param[out] Conferma booleana presenza record in file.
Richiede un testo in input, che varra' come parola chiave da ricercare in\n
Nome, Cognome Utente, Titolo, Autore, Anno, Codice Libro.\n
Restituisce, come indirizzo, un int*[1000] contenente gli indici dei singoli Prestiti trovati.
*/
/*! \fn bool RicercaUtente(int* vett=new int[1000])
\brief Ricercatore del Prestito.
\param[out] Conferma booleana presenza record in file.
Richiede un testo in input, che varra' come parola chiave da ricercare in Nome, Cognome, Pin.\n
Restituisce, come indirizzo, un int*[1000] contenente gli indici dei singoli Utenti trovati.
*/
/*! \fn void RegistrazioneUtente()
\brief Registratore dell'Utente.
Richiede Nome, Cognome e Username da tastiera e fornisce il relativo Pin generato automaticamente.
*/
/*! \fn void ModificaLibro()
\brief Modificatore del Libro.
Richiamando la funzione RicercaLibro() ne chiede la selezione del Libro e, una volta selezionato,\n
elenca i parametri che si vogliono modificare, a scelta tra Titolo, Autore, Anno, Codice.\n
La modifica avviene sia nel Catalogo, sia nella Lista Prestiti Scaduti, In Corso e Richiesti.
*/
/*! \fn void ModificaUtente()
\brief Modificatore dell'Utente.
Richiamando la funzione RicercaUtente() ne chiede la selezione dell'Utente e, una volta selezionato,\n
elenca i parametri che si vogliono modificare, a scelta tra Nome, Cognome, Pin.\n
La modifica avviene sia nella Lista Utenti, sia nella Lista Prestiti Scaduti, In Corso e Richiesti.
*/
/*! \fn void UpdateListaPrestiti(Utente*)
\brief Metodo per la modifica di Utenti in Lista Prestiti Richiesti.
*/
/*! \fn void UpdateListaPrestiti(Addetto*)
\brief Metodo per la modifica di Addetti in Lista Prestiti Richiesti.
*/
/*! \fn void UpdateListaPrestitiInCorso(Utente*)
\brief Metodo per la modifica di Utenti in Lista Prestiti In Corso.
*/
/*! \fn void UpdateListaPrestitiInCorso(Addetto*)
\brief Metodo per la modifica di Addetti in Lista Prestiti In Corso.
*/
/*! \fn void GetDataRegistrazione()
\brief Getter per la Data di Registrazione.
\param[out] time_t dataRegistrazione
*/
/*! \fn void SetDataRegistrazione()
\brief Setter per la Data di Registrazione.
*/
/*! \fn char* GetPin()
\brief Getter per il Pin.
\param[out] char* pin
*/
/*! \fn char* GetNome()
\brief Getter per il Nome.
\param[out] char* nome
*/
/*! \fn char* GetCognome()
\brief Getter per il Cognome.
\param[out] char* cognome
*/
Persona(char*, char*, char*);
~Persona() {}
void SetCredenziali(char*, char*, char*);
void ViewListaPrestiti();
void ViewListaPrestitiInCorso(char* username="none");
void ViewListaPrestitiScaduti();
void ViewListaUtenti();
bool RicercaPrestito(int* vett=new int[1000]);
bool RicercaUtente(int* vett=new int[1000]);
void RegistrazioneUtente();
void ModificaLibro();
void ModificaUtente();
void UpdateListaPrestiti(Utente*);
void UpdateListaPrestiti(Libro*);
void UpdateListaPrestitiInCorso(Utente*);
void UpdateListaPrestitiInCorso(Libro*);
time_t GetDataRegistrazione();
void SetDataRegistrazione();
char* GetPin();
char* GetNome();
char* GetCognome();
};
class Direttore : public Persona{
public:
/*! \fn Direttore(char*, char*, char*)
\brief Costruttore Direttore.
*/
/*! \fn Direttore()
\brief Costruttore Direttore.
*/
/*! \fn void ViewListaAddetti()
\brief Visualizzatore della Lista Addetti.
Mostra la lista degli Addetti indicandone: Nome, Cognome, Pin, Data Registrazione.
*/
/*! \fn bool RicercaAddetto(int* vett=new int[1000])
\brief Ricercatore dell'Addetto.
\param[out] Conferma booleana presenza record in file.
Richiede un testo in input, che varra' come parola chiave da ricercare in Nome, Cognome, Pin.\n
Restituisce, come indirizzo, un int*[1000] contenente gli indici dei singoli Addetti trovati.
*/
/*! \fn void RegistrazioneAddetto()
\brief Registratore dell'Addetto.
Richiede Nome e Cognome da tastiera e fornisce il relativo Pin generato automaticamente.
*/
/*! \fn void ModificaPrestito()
\brief Modificatore del Prestito.
Richiamando la funzione RicercaPrestito() ne chiede la selezione del Prestito e, una volta selezionato,\n
chiede al solo Direttore il numero di giorni da concedere al Prestito, da un minimo di 30 fino a -30.\n
La modifica avviene in Lista Prestiti In Corso, solamente se il Prestito non è ancora scaduto.
*/
/*! \fn void ModificaAddetto()
\brief Modificatore dell'Addetto.
Richiamando la funzione RicercaAddetto() ne chiede la selezione dell'Addetto e, una volta selezionato,\n
elenca i parametri che si vogliono modificare, a scelta tra Nome, Cognome, Pin.\n
La modifica avviene sia nella Lista Addetti, sia nella Lista Prestiti Scaduti, In Corso e Richiesti.
*/
/*! \fn void EliminazioneLibro()
\brief Eliminatore del Libro.
Richiamando la funzione RicercaLibro() ne chiede la selezione del Libro e, una volta selezionato,\n
provvede all'eliminazione, eseguita creando un file temporaneo che verra' poi rinominato.
*/
/*! \fn void EliminazionePrestito()
\brief Eliminatore del Prestito.
Richiamando la funzione RicercaPrestito() ne chiede la selezione del Prestito e, una volta selezionato,\n
provvede all'eliminazione, eseguita creando un file temporaneo che verra' poi rinominato.
*/
/*! \fn void EliminazioneInListaPrestiti(char* username="", char* codiceLibro="")
\brief Eliminatore del Prestito in Lista Prestiti Richiesti.
Metodo richiamato unicamente dalla funzione EliminazionePrestito().
*/
/*! \fn void EliminazioneInListaPrestitiInCorso(char* username="", char* codiceLibro="")
\brief Eliminatore del Prestito in Lista Prestiti In Corso.
Metodo richiamato unicamente dalla funzione EliminazionePrestito().
*/
/*! \fn void EliminazioneUtente()
\brief Eliminatore dell'Utente.
Richiamando la funzione RicercaUtente() ne chiede la selezione dell'Utente e, una volta selezionato,\n
provvede all'eliminazione, eseguita creando un file temporaneo che verra' poi rinominato.
*/
/*! \fn void EliminazioneAddetto()
\brief Eliminatore dell'Addetto.
Richiamando la funzione RicercaAddetto() ne chiede la selezione dell'Addetto e, una volta selezionato,\n
provvede all'eliminazione, eseguita creando un file temporaneo che verra' poi rinominato.
*/
Direttore(char*, char*, char*);
Direttore() : Persona("", "", "") {}
void ViewListaAddetti();
bool RicercaAddetto(int* vett=new int[1000]);
void RegistrazioneAddetto();
void ModificaPrestito();
void ModificaAddetto();
void EliminazioneLibro();
void EliminazionePrestito();
void EliminazioneInListaPrestiti(char* username="", char* codiceLibro="");
void EliminazioneInListaPrestitiInCorso(char* username="", char* codiceLibro="");
void EliminazioneUtente();
void EliminazioneAddetto();
};
class Addetto : public Persona{
public:
/*! \fn Addetto(char*, char*, char*)
\brief Costruttore Addetto.
*/
/*! \fn Addetto()
\brief Costruttore Addetto.
*/
Addetto(char*, char*, char*);
Addetto() : Persona("", "", "") {}
};
class Utente : public Persona{
char username[21];
public:
/*! \fn Utente(char*, char*, char*, char*)
\brief Costruttore Utente.
*/
/*! \fn Utente()
\brief Costruttore Utente.
*/
/*! \fn RichiestaPrestito(Utente*)
\brief Richiesta Prestito da parte dell'Utente.
Richiamando la funzione RicercaLibro() ne chiede la selezione del Libro e, una volta selezionato,\n
provvede ad inserire in Lista Prestiti Richiesti il Prestito appena generato.
*/
/*! \fn void SetUserCredenziali(char*, char*, char*, char*)
\brief Setter delle credenziali dell'Utente.
Funge da metodo setter per i 4 parametri: Nome, Cognome, Pin, Username.
*/
/*! \fn char* GetUsername()
\brief Getter per l'Username.
\param[out] char* username
*/
Utente(char*, char*, char*, char*);
Utente();
void RichiestaPrestito(Utente*);
void SetUserCredenziali(char*, char*, char*, char*);
char* GetUsername();
};
class Libro{
char titolo[51], autore[21], anno[5], codice[4];
char disponibilita[20];//DISPONIBILE //NON DISPONIBILE //IN PRESTITO //IN RESO //PRENOTATO
public:
/*! \fn Libro(char*, char*, char*, char*, bool cod=true)
\brief Costruttore Libro.
Richiede 4 parametri in entrata: Titolo, Autore, Anno, Disponibilita.\n
In più se richiamato con valore booleano settato true (essendo parametro di default), provvede a generare\n
un nuovo Codice, calcolato mediante l'incremento di un contatore stampato su file binario, riscrivendolo aggiornato.
*/
/*! \fn Libro()
\brief Costruttore Libro.
*/
/*! \fn ~Libro()
\brief Distruttore Libro.
*/
/*! \fn void SetInformazioni(char*, char*, char*, char*, char*)
\brief Setter delle credenziali.
Funge da metodo setter per i 5 parametri: Titolo, Autore, Anno, Codice, Disponibilita'.
*/
/*! \fn void Write(Libro*)
\brief Writer per il nuovo Libro
Tramite il puntatore a Libro ricevuto come parametro, provvede a stampare le informazioni in Catalogo.
*/
/*! \fn char* GetTitolo()
\brief Getter per il Titolo.
\param[out] char* titolo
*/
/*! \fn char* GetAutore()
\brief Getter per l'Autore.
\param[out] char* autore
*/
/*! \fn char* GetAnno()
\brief Getter per l'Anno.
\param[out] char* anno
*/
/*! \fn char* GetCodice()
\brief Getter per il Codice.
\param[out] char* codice
*/
/*! \fn void SetCodice(char*)
\brief Setter per il Codice.
*/
/*! \fn char* GetDisponibilita()
\brief Getter per la Disponibilita.
\param[out] char* disponibilita
*/
/*! \fn void SetDisponibilita(char*)
\brief Setter per la Disponibilita.
*/
Libro(char*, char*, char*, char*, bool cod=true);
Libro() : Libro("", "", "", "") {}
~Libro() {}
void SetInformazioni(char*, char*, char*, char*, char*);
void Write(Libro*);
char* GetTitolo();
char* GetAutore();
char* GetAnno();
char* GetCodice();
void SetCodice(char*);
char* GetDisponibilita();
void SetDisponibilita(char*);
};
class Catalogo{
Libro l;
public:
/*! \fn Catalogo()
\brief Costruttore Catalogo.
Provvede ad inserire in Lista Prestiti Scaduti tutti quei Prestiti con Data di Scadenza <= 0.
*/
/*! \fn ~Catalogo()
\brief Distruttore Catalogo.
*/
/*! \fn bool VisualizzaCatalogo()
\brief Visualizzatore del Catalogo.
Mostra la lista dei Libri indicandone: Titolo, Autore, Anno, Codice, Disponibilita'.
*/
/*! \fn void UpdateCatalogo(Libro*)
\brief Metodo per la modifica di Libri in Catalogo.
*/
/*! \fn bool RicercaLibro(int* vett=new int[1000])
\brief Ricercatore del Libro.
\param[out] Conferma booleana presenza record in file.
Richiede un testo in input, che varra' come parola chiave da ricercare in Titolo, Autore, Anno, Codice.\n
Restituisce, come indirizzo, un int*[1000] contenente gli indici dei singoli Libri trovati.
*/
Catalogo();
~Catalogo() {}
void VisualizzaCatalogo();
void UpdateCatalogo(Libro*);
bool RicercaLibro(int* vett=new int[1000]);
};
class Pin{
char pin[5];
public:
/*! \fn ~Pin()
\brief Distruttore Pin.
*/
/*! \fn char* GetPin()
\brief Getter per il nuovo Pin generato.
\param[out] char* pin
Restutuisce un pin generato pseudocausalmente covertito in char*, compreso tra 999 e 2000, estremi esclusi.
*/
~Pin();
char* GetPin();
};
class Registrazione{
char nome[21], cognome[21], pin[5], username[21];
bool isRegistrato;
Pin p;
public:
/*! \fn Registrazione()
\brief Costruttore Registrazione.
*/
/*! \fn ~Registrazione()
\brief Distruttore Registrazione.
*/
/*! \fn void NewRegistrazione(char)
\brief Setter nuova Registrazione.
Come parametro di ingresso è richiesto un char ('u':modalita' Utente, 'a':Addetto, 'd':Direttore).\n
Richiede Nome, Cognome e (se Utente) Username da tastiera e fornisce il relativo Pin generato automaticamente.\n
Le credenziali sono salvate in Credenziali Utenti/Addetti/Direttore.
*/
/*! \fn char* GetNome()
\brief Getter per il Nome.
\param[out] char* nome
*/
/*! \fn char* GetCognome()
\brief Getter per il Cognome.
\param[out] char* cognome
*/
/*! \fn char* GetPin()
\brief Getter per il Pin.
\param[out] char* pin
*/
/*! \fn char* GetUsername()
\brief Getter per l'Username.
\param[out] char* username
*/
/*! \fn bool GetIsRegistrato()
\brief Getter per la conferma di Registrazione.
\param[out] bool isRegistrato
*/
Registrazione();
~Registrazione() {}
void NewRegistrazione(char);
char* GetNome();
char* GetCognome();
char* GetPin();
char* GetUsername();
bool GetIsRegistrato();
};
class Login{
char nome[21], cognome[21], pin[5], username[21];
bool isLoggato;
public:
/*! \fn Login()
\brief Costruttore Login.
*/
/*! \fn ~Login()
\brief Distruttore Login.
*/
/*! \fn void NewLogin(char)
\brief Setter nuovo Login.
Come parametro di ingresso è richiesto un char ('u':modalita' Utente, 'a':Addetto, 'd':Direttore).\n
Se Utente, richiede Username e Pin; se Addetto/Direttore, richiede solamente il Pin.
*/
/*! \fn char* GetNome()
\brief Getter per il Nome.
\param[out] char* nome
*/
/*! \fn char* GetCognome()
\brief Getter per il Cognome.
\param[out] char* cognome
*/
/*! \fn char* GetPin()
\brief Getter per il Pin.
\param[out] char* pin
*/
/*! \fn char* GetUsername()
\brief Getter per l'Username.
\param[out] char* username
*/
/*! \fn bool GetIsLoggato()
\brief Getter per la conferma di Login.
\param[out] bool isLoggato
*/
Login();
~Login() {}
void NewLogin(char);
char* GetNome();
char* GetCognome();
char* GetPin();
char* GetUsername();
bool GetIsLoggato();
};
class Data{
time_t dataOra;
public:
/*! \fn Data()
\brief Costruttore Data.
*/
/*! \fn ~Data()
\brief Distruttore Data.
*/
/*! \fn void SetCurrentDataOra()
\brief Setter Data e Ora correnti.
Mediante la funzione time() viene settato un valore time_t che contiene Data e Ora correnti.
*/
/*! \fn time_t GetDataOra()
\brief Getter Data e Ora.
\param[out] time_t dataOra
Restituisce Data e Ora settati mediante la funzione SetCurrentDataOra().
*/
/*! \fn time_t GetDataOra30Days(time_t)
\brief Getter Data e Ora sommati di 30 giorni.
\param[out] Data e Ora + 30 giorni
Restituisce Data e Ora sommati di 30 giorni al parametro time_t in ingresso.
*/
/*! \fn time_t GetDataOraEstesa(time_t, int)
\brief Getter Data e Ora estesi.
\param[out] Data e Ora + giorni di estensione
Restituisce Data e Ora sommati di [parametro int in ingresso] giorni al parametro time_t in ingresso.
*/
Data();
~Data() {}
void SetCurrentDataOra();
time_t GetDataOra();
time_t GetDataOra30Days(time_t);
time_t GetDataOraEstesa(time_t, int);
};
class Prestito{
char codiceLibro[4];
time_t dataAccettazione, dataScadenza;
public:
/*! \fn Prestito()
\brief Costruttore Prestito.
*/
/*! \fn ~Prestito()
\brief Distruttore Prestito.
*/
/*! \fn void SetData()
\brief Setter Data Accettazione e Data Scadenza Prestito.
*/
/*! \fn int GetDifferenza()
\brief Getter differenza tra Data Scadenza e Data Corrente.
\param[out] Differenza in giorni
*/
/*! \fn char* GetCodice()
\brief Getter Codice del Libro.
\param[out] char* codiceLibro
*/
/*! \fn void SetCodice(char*)
\brief Setter Codice del Libro.
*/
/*! \fn time_t GetDataAccettazione()
\brief Getter Data di Accettazione Prestito.
\param[out] time_t dataAccettazione
*/
/*! \fn time_t GetDataScadenza()
\brief Getter Data di Scadenza Prestito.
\param[out] time_t dataScadenza
*/
/*! \fn void SetDataScadenza(time_t)
\brief Setter Data di Scadenza Prestito.
*/
Prestito();
~Prestito() {}
void SetData();
int GetDifferenza();
char* GetCodice();
void SetCodice(char*);
time_t GetDataAccettazione();
time_t GetDataScadenza();
void SetDataScadenza(time_t);
};
#endif // CLASSI_H_INCLUDED