Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - david0903

#1
alguien me puede ayudar a modificar este codigo para que pueda ser compilado en dev-c++

#include <stdio.h>
#include <string.h>
#include <conio.h>

typedef struct alumno{
   char nombre[20];
   char direccion[30];
   int nota;
} Alumno;

/* Arreglo que almacena alumnos */
Alumno alumnos[100];
/* Contiene el numero de alumnos actual */
int total = 0;
 
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), buscar(), modificar(), eliminar(), ordenar(), mostrar();
char menu(void);

void main(void)
{
   clrscr();
   cargar();
   char op;

   for(;;)
   {
     switch(op=menu())
     {
        case '1':
           ingresar();
           getch();
           break;
        case '2':
           buscar();
           getch();
           break;
        case '3':
           modificar();
           getch();
           break;
        case '4':
           eliminar();
           getch();
           break;
        case '5':
           ordenar();
           getch();
           break;
        case '6':
           mostrar();
           getch();
           break;
        case '7':
           break;
        default :
           printf("Opcion no valida");
           getch();
           break;
     }

     if(op=='7') break;
     clrscr();
   }

   printf("Presione (g) para guardar los cambios: ");

   if(getche()=='g')
      guardar();
}


void insertar(Alumno info)
{
   strcpy(alumnos[total].nombre, info.nombre);
   strcpy(alumnos[total].direccion, info.direccion);
   alumnos[total].nota = info.nota;
   total++;
}

void cargar()
{
   Alumno info;
   FILE *fp;

   fp=fopen("alumnos.txt","r");
   if(fp==NULL)
   {
      printf("No se puede abrir el archivo\n");
      return;
   }

   while(!feof(fp))
   {
      if(fread(&info, sizeof(Alumno), 1, fp)!=1) break;
      insertar(info);
   }

   fclose(fp);
}

void guardar()
{
   Alumno info;
   FILE *fp;

   fp=fopen("alumnos.txt","w");
   if(fp==NULL)
   {
      printf("No se puede abrir el archivo\n");
      return;
   }

   for(int i=0; i<total; i++)
     fwrite(&alumnos, sizeof(Alumno), 1, fp);

   fclose(fp);
}

void ingresar()
{
   Alumno info;

   printf("Ingrese nombre: "); gets(info.nombre);
   printf("Ingrese direccion: "); gets(info.direccion);
   printf("Ingrese nota: "); scanf("%d", &(info.nota));
   insertar(info);
   printf("Alumno ingresado exitosamente");
}

void buscar()
{
   char nombre[20];
   int i;

   printf("Ingrese nombre a buscar: ");
   gets(nombre);

   for(i=0; i<total; i++)
      if(!strcmp(alumnos.nombre, nombre))
      {
    printf("--- Datos del alumno ---\n");
    printf("Num.: %d\n", i+1);
    printf("Nombre: %s\n", alumnos.nombre);
    printf("Direccion: %s\n", alumnos.direccion);
    printf("Nota: %d", alumnos.nota);

    break;
      }

   if(i==total)
      printf("Alumno no encontrado");
}

void modificar()
{
   char nombre[20];
   int i;

   printf("Ingrese nombre a modificar: ");
   gets(nombre);

   for(i=0; i<total; i++)
      if(!strcmp(alumnos.nombre, nombre))
      {
    printf("--- Datos actuales del alumno ---\n");
    printf("Num.: %d\n", i+1);
    printf("Nombre: %s\n", alumnos.nombre);
    printf("Direccion: %s\n", alumnos.direccion);
    printf("Nota: %d\n\n", alumnos.nota);

         printf("--- Nuevos datos del alumno ---\n"); 
         printf("Ingrese nombre: "); gets(alumnos.nombre);
         printf("Ingrese direccion: "); gets(alumnos.direccion);
         printf("Ingrese nota: "); scanf("%d", &(alumnos.nota));

         printf("\n\nDatos actualizados exitosamente!");

         break;
      }

   if(i==total)
      printf("Alumno no encontrado");
}

void eliminar()
{
   char nombre[20];
   int i;
   
   printf("Ingrese nombre a eliminar: ");
   gets(nombre);

   for(i=0; i<total; i++)
      if(!strcmp(alumnos.nombre, nombre))
      {
         /* Recorre registros posteriores */
         for(int j=i+1; j<total; j++)
         {
            strcpy(alumnos[j-1].nombre, alumnos[j].nombre);
            strcpy(alumnos[j-1].direccion, alumnos[j].direccion);
            alumnos[j-1].nota = alumnos[j].nota;
         }

         printf("Alumno eliminado");
         total--;
         break;
      }

   if(i==total)
      printf("Alumno no encontrado");
}

void ordenar()
{
   int i, j;
   Alumno temp;

   for(i=0; i<total-1; i++)
   {
      for(j=i+1; j<total; j++)
      if(strcmp(alumnos.nombre, alumnos[j].nombre)>0)
      {
         /* Copia en variable temporal datos actuales */
         strcpy(temp.nombre, alumnos.nombre);
         strcpy(temp.direccion, alumnos.direccion);
         temp.nota = alumnos.nota;

         /* Intercambia informacion */
         strcpy(alumnos.nombre, alumnos[j].nombre);
         strcpy(alumnos.direccion, alumnos[j].direccion);
         alumnos.nota = alumnos[j].nota;

         strcpy(alumnos[j].nombre, temp.nombre);
         strcpy(alumnos[j].direccion, temp.direccion);
         alumnos[j].nota = temp.nota;       
      }
   }
   printf("Se han ordenado los registros");
}

void mostrar()
{
   printf("--- Listado de alumnos ---\n");
   printf("Num. - Nombre - Direccion - Nota\n");
   for(int i=0; i<total; i++)
   {
      printf("%d - ", i+1);
      printf("%s - ", alumnos.nombre);
      printf("%s - ", alumnos.direccion);
      printf("%d\n", alumnos.nota);
   }
}


char menu(void)
{
   char c;
   printf("(1)Ingresar, (2)Buscar, (3)Modificar, (4)Eliminar, (5)Ordenar, (6)Mostrar lista\n(7)Salir\n");

   printf("Seleccion: ");
   c=getche();
   printf("\n");
   return(c);
}