#include <iostream>
#include <cstdlib>
using namespace std;
//Variables
int op=0, n=0;
bool fin = false;
struct estudiantes{
int carnet;
char nombre[50];
char apellido[50];
int edad;
};
//Constantes
#define PAUSA system("pause")
#define LIMPIA_PANTALLA system("cls")
//Funciones
void ingresaDatos(estudiantes x[]);
void ordenaDatos(estudiantes x[]);
void muestraDatos(estudiantes x[]);
void grabaArchivoyCierra(estudiantes x[]);
void abrirArchivoylectura(estudiantes x[]);
void buscaDatos(estudiantes x[]);
int main(){
estudiantes backup, *preg, *preg2;
preg = new estudiantes[100];
// preg2 = new backup[100];
while(op != 7){
LIMPIA_PANTALLA;
cout << "\n\n\n\n\n\n\t\t\tControl de estudiantes" << endl;
cout << "\n\t\t\t1. Ingresar estudiantes";
cout << "\n\t\t\t2. Guardar datos en archivo";
cout << "\n\t\t\t3. Abrir archivo y leer datos";
cout << "\n\t\t\t4. Lista de estudiantes";
cout << "\n\t\t\t5. Lista ordenada de estudiantes";
cout << "\n\t\t\t6. Buscar estudiante por carnet";
cout << "\n\t\t\t7. Salir";
cout << "\n\n\t\t\tEscribe tu opcion: ";
cin >> op;
switch(op){
case 1:{
LIMPIA_PANTALLA;
cout << "\n\n\t\tCuantos estudiantes vas a ingresar: ";
cin >> n;
ingresaDatos(preg);
}
break;
case 2:{
}
break;
case 3:{
}
break;
case 4:{
//Aqui se muestran los datos desordenados
LIMPIA_PANTALLA;
cout << "\n\n\n\t\t\tListado de estudiantes\n";
muestraDatos(preg);
}
break;
case 5:{
cout << "\n\n\n\t\t\tListado ordenado de estudiantes\n";
PAUSA;
}
break;
case 6:{
buscaDatos(preg);
}
break;
case 7:{
delete [] preg;
op = 7;
}
break;
}
} //Fin bucle while
}//Fin programa
/* Funcion que permite llenar el arreglo
de estructuras con los datos correspondientes */
void ingresaDatos(estudiantes x[]){
for(int i=0; i<n; i++){
int k=0, j=0;
LIMPIA_PANTALLA;
cout << "\n\n\n\n\n\t\t\tAlumno [" << i+1 << "]" << endl;
cout << "\n\t\t\tIngresa No. de carnet: ";
cin >> j;
//Aqui va la verificacion del carnet
if(i>0){
while(fin == false){
if(j == x[k].carnet){
cout << "\n\t\t\tNo. de carnet ya existe" << endl;
cout << "\n\t\t\tIngresa No. de carnet: ";
cin >> j;
k=0;
}
else{
k++;
}
if(k==n){
x[i].carnet = j;
fin = true;
}
}//Fin while
}
else{
x[i].carnet = j;
}
cout << "\n\t\t\tNombre del estudiante: ";
cin >> x[i].nombre;
cout << "\n\t\t\tApellido del estudiante: ";
cin >> x[i].apellido;
cout << "\n\t\t\tEdad del estudiante: ";
fin = false;
while(fin == false){
cin >> x[i].edad;
if((x[i].edad < 17)||(x[i].edad > 60)){
cout << "\n\t\t\tEdad incorrecta.";
cout << "\n\t\t\tEdad del estudiante: ";
}
else{
fin = true;
}
}//fin while
}//Fin for
cout << "\n\n\n\t\t\t";
PAUSA;
}
//Funcion que muestra datos
void muestraDatos(estudiantes x[]){
for (int i=0;i<n; i++){
cout << "\n\n\t\t\tNo. Carnet:\t" << x[i].carnet;
cout << "\n\t\t\tNombre:\t\t" << x[i].nombre << " " << x[i].apellido;
cout << "\n\t\t\tEdad:\t\t" << x[i].edad << " anios";
}//Fin for
cout << "\n\n\n\t\t\t";
PAUSA;
}
//Nombre de la funcion que busca al estudiante
void buscaDatos(estudiantes x[]){
int buscar; //variable para ingresar el numero de carnet del estudiate
int posicion; //variable para ubicacion de numero de carnet
LIMPIA_PANTALLA; //limpear pantalla
cout << "\n\n\n\n\n\t\t\tBusqueda de estudiante por carnet";
cout << "\n\t\t\tIngrese numero de carnet: "; //mensaje de pantalla
cin >> buscar; //sirve para ingresar el numero de carnet del estudiante
for(posicion=0;posicion<n;posicion++) //ciclo for para llevar la cuenta de la posicion
{
if(buscar==x[posicion].carnet) //Si el numero ingresado es igual a uno de la lista proceder
{
cout << "\n\n\t\t\tNo. carnet:\t" << x[posicion].carnet;
cout << "\n\t\t\tNombre:\t\t" << x[posicion].nombre << " " << x[posicion].apellido;
cout << "\n\n\n\t\t\tEl Estudiante fue encontrado exitosamente!"; //mensaje de pantalla
}
else{
cout << "\n\n\t\t\tNo. carnet no existe";
}
}
cout << "\n\n\n\t\t\t";
PAUSA; //mantenerlo en pantalla
}