Eudis Serrano. Ejercicio 1
user_3711028
c_cpp
20 days ago
10 kB
3
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