-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCurso.hh
162 lines (115 loc) · 4.15 KB
/
Curso.hh
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
/** @file Curso.hh
@brief Especificación de la clase Curso
*/
#ifndef _CURSO_HH_
#define _CURSO_HH_
#ifndef NO_DIAGRAM
#include <iostream>
using namespace std;
#include <vector>
#include <map>
#endif
/** @class Curso
@brief Representa un curso de la plataforma
Ofrece operaciones para modificar, consultar, leer y escribir un curso.
*/
class Curso
{
public:
//Constructoras
/** @brief Creadora por defecto.
Se ejecuta automáticamente al declarar un curso.
\pre <em>cierto</em>
\post El resultado es un curso sin inicializar.
*/
Curso();
//Modificadoras
/** @brief Modifica el numero de usuarios actuales del curso
\pre <em>cierto</em>
\post Se suma un usuario nuevo al número de usuarios totales cursando el
curso.
*/
int sumar_usu();
/** @brief Modifica el numero de usuarios actuales del curso
\pre Hay al menos un usuario cursando el curso.
\post Se resta un usuario al número de usuarios totales cursando el curso
debido a que el usuario se ha dado de baja.
*/
void restar_usu();
/** @brief Modifica el numero de sesiones del curso
\pre No existe intersección de problemas entre las sesiones que pertenecen
al mismo grupo.
\post Se suma una sesió nueva al número total de sesiones y se guarda su
identificador.
*/
void nuevo_curso_ses_2(string s);
/** @brief Modifica el numero usuarios actuales y historicos
\pre Había como mínimo un usuario cursando el curso.
\post Se suma un usuario al número total de ellos que han completado el
curso y se resta un usuario al número total de los que lo están cursando
actualmente, ya que ya ha completado el curso.
*/
void sumar_acabado_2();
/** @brief Añade nuevos problemas de una sesion al curso
\pre <em>cierto</em>
\post El resultado es true si al añadir un nuevo problema de una sesion no
no había ningun otro problema igual en el mismo curso y el false en el
caso que ya existiera otro problema con el mismo identificador.
*/
bool nuevo_prob_ses(string ses, string p);
//Consultoras
/** @brief Consulta los usuarios actuales
\pre <em>cierto</em>
\post El resultado es el número de usuarios que están cursando el curso
actualmente.
*/
int consultar_usu_act() const;
/** @brief Consulta los usuarios historicos
\pre <em>cierto</em>
\post El resultado es el número de usuarios que han completado el curso.
*/
int consultar_usu_historicos() const;
/** @brief Consulta cuantas sesiones hay en el curso
\pre <em>cierto</em>
\post El resultado es el total de sesiones que hay en el curso.
*/
int consultar_num_sesiones() const;
/** @brief Consulta el identificador de la sesion
\pre Hay mínimo i sesiones en la plataforma.
\post El resultado es el identificador de la sesion indicada por i.
*/
string buscar_id_sesion_2(int i) const;
/** @brief Consulta el identificador de la sesion a la que pertenece un problema
\pre <em>cierto</em>
\post El resultado es el identificador de la sesion a la cual pertenece el
problema p, si el problema p no esta en el curso, devuelve "no".
*/
string problema_pertenece_ses_2(string p) const;
//Escritura
/** @brief Operación de escritura de cursos en la plataforma actualmente
\pre <em>cierto</em>
\post Se escriben los identificadores de las sesiones del curso.
*/
void escribir_c();
//Lectura
/** @brief Operación de lectura un curso
\pre <em>cierto</em>
\post Se han leido los parametros de la entrada y guardado
en una variable Curso.
*/
void leer_curso();
private:
/** @brief Contiene los identificadores de las sesiones del curso */
vector<string> mes;
/** @brief Número de usuarios actuales cursando el curso */
int usuarios_actu;
/** @brief Número de usuarios que han completado el curso */
int usuarios_historicos;
/** @brief Número de sesiones que forman el curso */
int numero_sesiones;
/** @brief Map de los problemas y las sesiones del curso
Contiene el identificador de los problemas ordenados junto a la sesion que
pertenecen: primer string(problemas), segundo(sesion) */
map<string, string> prob_ses;
};
#endif