Eudis Serrano. Ejercicio 1
user_3711028
c_cpp
10 months ago
10 kB
7
Indexable
// estudiantes
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <locale.h>
using namespace std;
int menu();/*función secundaria para desplegar el menú*/
class Estudiante {
private:
bool SesionActiva = false, NotasCargadas = false;/*variables para verificar si ya se ha iniciado sesión y si ya se han cargado notas*/
int ID_Estudiante, Num_ID, Num_Estudiantes = 0, Total_Notas = 0,
ID_Est_Arreglo[30];
double calificaciones[5], CalxEstudiantes[150], Notas_Estudiante;
/*el arreglo calxestudiantes es usado para almacenar todas las calificaciones de los estudiantes, mientras que el arreglo calificaciones es usado solo para almacenar cinco calificaciones de un solo estudiante*/
public:
Estudiante(int ID_Est = 0, int TNotas = 0, double Nota = 0.0)
: ID_Estudiante(ID_Est), Total_Notas(TNotas), Notas_Estudiante(Nota){};
void IniciarSesion();
void AceptarDatos();
void EditarNotas();
void VerNotas();
void Salir();/*al salir las variables SesionActiva y NotasCargadas se vuelven false para que ningún usuario acceda a ver las notas de los demás usuarios*/
};
void Estudiante::IniciarSesion() {
srand(time(nullptr));/*se usan números aleatorios para crear la ID de los usuarios*/
char SoN;
bool ID;/*es usado para verificar si la ID es correcta en diversos casos: cuando se quiere generar una nueva ID, cuando se quiere verificar que una ID existe, etc*/
int Error = 0;
SesionActiva = false;
NotasCargadas = false;
cout << "¿Ya está registrado? es decir ¿Tiene ID? ('S'/'N')" << endl
<< "Presione S para sí o N para no: ";
cin >> SoN;
do {
if (SoN != 'N' && SoN != 'S') {
switch (Error) {
case 0:
cout << endl << "ups!";
Error++;
break;
case 1:
cout << endl
<< endl
<< "Se le indico presionar 'S' o 'N'... Tomare esto como un error "
"de su parte, pero no se preocupe"
<< endl
<< "Todos cometemos errores :)" << endl
<< "Ya está registrado? es decir, Tiene ID? Sí o No? ('S'/'N'): ";
cin >> SoN;
Error++;
break;
case 2:
cout << endl
<< endl
<< "...(ō.O)?... bueno... dos errores los comete cualquiera (creo)"
<< endl
<< "recuerde 'S' en mayuscula para sí y 'N' en mayuscula para no"
<< endl
<< "Lo tienes?...bien" << endl
<< "Ya está registrado? es decir, Tiene ID? ('S'/'N'): ";
cin >> SoN;
Error++;
break;
case 3:
cout << endl << endl << "Jaja... que gracioso (-_-)... ('S'/'N'): ";
cin >> SoN;
Error++;
break;
case 4:
cout << endl << endl << "... ('S'/'N') ¿SÍ O NO? (°-°): ";
cin >> SoN;
Error++;
break;
case 5:
cout << endl
<< endl
<< "PERO BUENO VALE USTED ES PEN-... por chistosito diremos que "
"no tienes ID... ni cerebro..."
<< endl
<< "('S'/'N'): N";
SoN = 'N';
}
}
} while (SoN != 'N' && SoN != 'S');/*con este do while verificamos la entrada del usuario*/
if (SoN == 'N') {
do {
ID = false;
ID_Estudiante = 1000 + rand() % 9000;/*aquí se genera una ID*/
for (int i = 0; i <= Num_Estudiantes; i++) {
if (ID_Est_Arreglo[i] == ID_Estudiante) {
ID = true;
}
}
} while (ID);
cout << endl
<< "Su ID es: " << ID_Estudiante << " asegurese de no olvidar su ID"
<< endl
<< "ya que no hay forma de recuperar su informacion si llega a "
"olvidarlo";
Num_Estudiantes++;
ID_Est_Arreglo[Num_Estudiantes - 1] = ID_Estudiante;
Num_ID = Num_Estudiantes - 1;
} else {/*en caso de que el usuario ya tenga una cuenta se le pide que ingrese su ID para verificarlo*/
Error = 0;
cout << endl << endl << "ingrese su ID: ";
cin >> ID_Estudiante;
ID = false;
if (Error < 3) {
do {
for (int j = 0; j <= Num_Estudiantes; j++) {
if (ID_Est_Arreglo[j] == ID_Estudiante) {
Num_ID = j;
ID = true;
}
}
if (ID == false) {
Error++;
cout << endl
<< "El ID INGRESADO NO EXISTE" << endl
<< "(se la darán 3 oportunidades para verificar) (" << Error
<< "/3)" << endl
<< endl
<< "el ID ingresado es: " << ID_Estudiante << endl
<< "verifíquelo e ingrese nuevamente su ID: ";
cin >> ID_Estudiante;
}
} while (Error < 3 && ID == false);/*si el usuario se equivoca más de tres veces se le asignará una nueva ID*/
if (ID == false) {
do {
ID_Estudiante = 1000 + rand() % 9000;
for (int i = 0; i <= Num_Estudiantes; i++) {
if (ID_Est_Arreglo[i] == ID_Estudiante) {
ID = true;
}
}
} while (ID);
cout << endl
<< "Su ID es: " << ID_Estudiante
<< " asegurese de no olvidar su ID" << endl
<< "ya que no hay forma de recuperar su informacion si llega a "
"olvidarlo";
Num_Estudiantes++;
ID_Est_Arreglo[Num_Estudiantes - 1] = ID_Estudiante;
Num_ID = Num_Estudiantes - 1;
}
}
}
while (ID == false)
;
SesionActiva = true;/*luego de todo esto se activa la sesión*/
return;
}
void Estudiante::AceptarDatos() {/*aquel usuario ingresa sus notas las cuales se almacenan en el arreglo CalxEstudiante haciendo uso del arreglo calificaciones*/
if (SesionActiva == true) {
for (int k = 0; k < 5; k++) {
do {
cout << endl
<< endl
<< "Ingrese calificacion " << k + 1 << endl
<< "(si no tiene las 5 calificaciones aún rellene con 0 las "
"faltantes (/0 u 0)/):";
cin >> calificaciones[k];
if (calificaciones[k] < 0 || calificaciones[k] > 10) {
cout << endl << "la calificación debe de estar entre 0.0 y 10!!";
}
} while (calificaciones[k] < 0 || calificaciones[k] > 10);
Total_Notas++;
int q = 0;
int IndiceFinal = Num_ID * 5;
for (int IndiceNotas = ((Num_ID - 1) * 5); IndiceNotas < IndiceFinal;
IndiceNotas++) {
CalxEstudiantes[IndiceNotas] = calificaciones[q];
q++;
}
}
NotasCargadas = true;
} else {
cout << endl
<< endl
<< "No se ha iniciado sesión, por favor inicie sesión primero :)";
}
return;
}
void Estudiante::EditarNotas() {/*aquí el estudiante puede editar una nota a la vez*/
if (SesionActiva == true && NotasCargadas == true) {
do {
cout << endl << endl << "Cual nota desea editar? (1-5): ";
cin >> Notas_Estudiante;
if (Notas_Estudiante < 1 || Notas_Estudiante > 5) {
cout << endl
<< "Ups! creo que se me olvido enfatizar QUE LA NOTA ESTA ENTRE 1 "
"Y 5..."
<< endl
<< "—Atentamente un estudiante de Ing. de Sistemas con sueño";
}
} while (Notas_Estudiante < 1 || Notas_Estudiante > 5);
int Indice = ((Num_ID - 1) * 5) + Notas_Estudiante - 1;
do {
cout << endl << endl << "Ingrese la nueva nota: ";
cin >> CalxEstudiantes[Indice];
if (CalxEstudiantes[Indice] < 0 || CalxEstudiantes[Indice] > 10) {
cout << endl << "la calificación debe de estar entre 0.0 y 10!!";
}
} while (CalxEstudiantes[Indice] < 0 || CalxEstudiantes[Indice] > 10);
} else {
cout << endl
<< endl
<< "No se ha iniciado sesión, por favor inicia sesión primero :D";
}
}
void Estudiante::VerNotas() {/*aquí se despliegan las notas y el promedio del estudiante*/
if (SesionActiva == true) {
double SumaNotas = 0.0;
cout << endl
<< endl
<< "ID: " << ID_Estudiante << endl
<< "Total de notas:" << endl;
for (int h = 0; h < 5; h++) {
int Indice = ((Num_ID - 1) * 5) + h;
cout << endl << "Nota " << h + 1 << ": " << CalxEstudiantes[Indice];
SumaNotas += (CalxEstudiantes[Indice]);
}
cout << endl << "Promedio: " << SumaNotas / 5.0;
} else {
cout << endl
<< endl
<< "no se ha iniciado sesión por favor inicia sesión primero :D";
}
}
void Estudiante::Salir() {/*aquí se cierra sesión*/
SesionActiva = false;
cout << endl << endl << "Se han cerrado sesión correctamente, Fuakata!!";
}
int main() {
setlocale(LC_ALL, "es_ES.UTF-8");
int Opcion = 0;
Estudiante A;
while (Opcion != 6) {/*se usa un switch con ayuda de la variable opción para así poder elegir la opción en el menú*/
Opcion = menu();
switch (Opcion) {
case 1:
A.IniciarSesion();
break;
case 2:
A.AceptarDatos();
break;
case 3:
A.VerNotas();
break;
case 4:
A.EditarNotas();
break;
case 5:
A.Salir();
break;
case 6:
Opcion = 6;/*cuando el usuario elige la opción 6 se termina el programa*/
cout << endl << endl << "FUAKATA!!";
break;
}
}
return 0;
}
int menu() {/*aquí se despliega el menú con las opciones*/
int Opcion;
cout << endl << endl << "__________-•M E N U•-__________" << endl << endl;
cout << "1. Iniciar sesion" << endl
<< "2. Ingresar Notas" << endl
<< "3. Ver Notas" << endl
<< "4. Editar Notas" << endl
<< "5. Cerrar Sesion " << endl
<< "6. Salir";
cout << endl << "---------------------------------" << endl;
do {
cout << endl << endl << "Ingresa una opcion: ";
cin >> Opcion;
if (Opcion < 1 || Opcion > 6) {
cout << endl
<< "No esta viendo las opciones?... (-.-')" << endl
<< "Ingrese una opcion VALIDA";
}
} while (Opcion < 1 || Opcion > 6);
return Opcion;
}Editor is loading...
Leave a Comment