forked from liuvaneshka/BookClub
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMenu.h
More file actions
128 lines (100 loc) · 4.26 KB
/
Menu.h
File metadata and controls
128 lines (100 loc) · 4.26 KB
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
#ifndef MENU_H
#define MENU_H
#include <iostream>
// Clases generales
#include "Escritor.h"
#include "Lectura.h"
#include "CONSTANTES.h"
// Subclases
#include "Novela.h"
#include "Novela_historica.h"
#include "Cuento.h"
#include "Poema.h"
// Para la opcion de sortear una lectura
#include <stdlib.h>
#include <time.h>
// Para la cola de lecturas
#include "Cola.h"
//Para pedir datos al usuario
#include "Printer.h"
//Para las listas
#include "Lista.h"
#include "Lista_escritores.h"
#include "Lista_lecturas.h"
using namespace std;
class Menu {
private:
int opcion;
Printer printer;
Lista_lecturas* lista_lecturas;
Lista_escritores* lista_escritores;
Cola<Lectura*>* cola_lecturas;
//PRE: La lista_lecturas debe estar bien definida.
//POST: Crea y almacena en lista_lecturas la lectura con los atributos ingresados por el usuario.
void agregar_lectura();
//PRE: La lista_lecturas debe estar bien definida.
//POST: Pide al usuario los atributos necesarios y crea el objeto correspondiente (Poema, Cuento, Novela, Novela_historica)
Lectura* crear_lectura();
//PRE: La lista_lecturas debe estar bien definida.
/*POST: Quita de lista_lecturas la lectura ingresada por el usuario.
De no existir, se lo comunica al usuario. */
void quitar_lectura();
//PRE: -
//POST: Elimina de la cola de lecturas la lectura que fue eliminada con quitar_lectura().
void actualizar_cola(Lectura* lectura_nueva);
//PRE: La lista_escritores debe estar ben definida.
//POST: Crea y almacena en lista_escritores el escritor con los atributos ingresados por el usuario.
void agregar_escritor();
//PRE: La lista_escritores debe estar ben definida.
//POST: Pide al usuario los atributos necesarios y crea al Escritor.
Escritor* crear_escritor();
//PRE: La lista_escritores debe estar bien definida.
//POST: Modifica el atributos anio_dfallecimiento del Escritor ingresado por el usuario.
void modificar_fallecimiento();
//PRE: La lista_lecturas debe estar bien definida.
//POST: Lista las lecturas entre dos años ingresados por el usuario.
void listar_lecturas_entre_anios();
//PRE: La lista_lecturas debe estar bien definida.
//POST: Lista las lecturas que pertenezcan al escritor ingresado por el usuario.
void listar_por_escritor();
//PRE: La lista_lecturas debe estar bien definida.
/*POST: Devuelve true si existen lecturas del escritor ingresado por el usuario y las imprime.
En caso contrario, devuelve false*/
bool hay_lecturas_de_escritor(string nombre_escritor);
//PRE: La lista_lecturas debe estar bien definida.
//POST: Imprime las novelas del género ingresado por el usuario.
void listar_novelas_de_genero();
//PRE: La lista_lecturas y la cola_lecturas deben estar bien definidas.
//POST: Crea una cola de lecturas y perite leer la del frente de la cola.
void proximas_lecturas();
//PRE: La lista_lecturas debe estar bien definida.
//POST: Crea una cola de lecturas, ordenada por minutos de lectura.
void cola_de_lecturas();
//PRE: La lista_lecturas debe estar bien definida.
//POST: Devuelve una lista con las lecturas, ordenada por minutos de lectura.
Lista<Lectura*>* ordenar_por_minutos();
//PRE: la lista_lecturas y lecturas_ordenadas deben estar bien definidas.
/*POST: Devuelve el indice de la lista_lecturas donde se debe almacenar
la lectura para mantener la lista ordenada por minutos de lectura. */
int obtener_posicion_segun_minutos(Lista<Lectura*>* lecturas_ordenadas, Lectura* lectura);
//PRE: La cola_lecturas debe estar bien definida.
//POST: Poregunta al usuario si desea leet la lectura al frente de la cola.
void marcar_como_leida();
public:
//PRE: -
//POST: Construye un Menu.
Menu();
//PRE: -
//POST: Destruye un Menu.
~Menu();
//PRE: Menu debe ser un objeto válido.
//POST: Impriem las opcines del Menu.
void mostrar_menu();
//PRE: Menu debe ser un objeto válido.
//POST: Pide al usuario la opcion que desea ejecutar del Menu.
void elegir_opcion();
//PRE: Menu debe ser un objeto válido.
//POST: Dependiendo de la opcion ingresada por el usuario, se ejecuta la acción correspondiente.
bool selector_menu();
};
#endif