[C] Gestor de notas

  • 1 Respuestas
  • 2964 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
  • Skype: [email protected]
    • Ver Perfil

[C] Gestor de notas

  • en: Mayo 20, 2013, 01:18:43 pm
Un programa para organizar alumnos y notas utilizando listas enlazadas.

Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct alumnos
  6. {
  7.    struct alumnos *last;
  8.    char nombre[15];
  9.    int nota;
  10. };
  11.  
  12. struct alumnos *actual;
  13.  
  14. void nuevo_alumno(char *nombre, int nota)
  15. {
  16.    struct alumnos *nuevo;
  17.    nuevo=(struct alumnos *)malloc(sizeof(struct alumnos));
  18.    strcpy(nuevo->nombre, nombre);
  19.    nuevo->nota=nota;
  20.    
  21.    if(actual==NULL)
  22.    {
  23.       actual=nuevo;
  24.    }
  25.    else
  26.    {
  27.       nuevo->last=actual;
  28.       actual=nuevo;
  29.    }
  30. }
  31.  
  32. void mostrar_lista()
  33. {
  34.    struct alumnos *consulta;
  35.    for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
  36.    {
  37.       printf("\n%s --- %i", consulta->nombre, consulta->nota);
  38.    }
  39.    printf("\n%s --- %i", consulta->nombre, consulta->nota);
  40. }
  41.  
  42. void borrar_lista()
  43. {
  44.    struct alumnos *consulta;
  45.    struct alumnos *buffer;
  46.    consulta=actual;
  47.    while(consulta->last!=NULL)
  48.    {
  49.       buffer=consulta->last;
  50.       free(consulta);
  51.       consulta=buffer;
  52.    }
  53. }
  54.  
  55. void guardar_lista()
  56. {
  57.    FILE *archivo=fopen("archivo", "w");
  58.    struct alumnos *consulta;
  59.    for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
  60.    {
  61.       fprintf(archivo, "%s %i\n", consulta->nombre, consulta->nota);
  62.    }
  63.    fprintf(archivo, "%s %i\n", consulta->nombre, consulta->nota);
  64.    fclose(archivo);
  65. }
  66.  
  67. void cargar_lista()
  68. {
  69.    FILE *archivo=fopen("archivo", "r");
  70.    struct alumnos consulta;
  71.    fscanf(archivo, "%s %i", consulta.nombre, &consulta.nota);
  72.    while(!feof(archivo))
  73.    {
  74.       nuevo_alumno(consulta.nombre, consulta.nota);
  75.       fscanf(archivo, "%s %i", consulta.nombre, &consulta.nota);
  76.    }
  77.    fclose(archivo);
  78. }
  79.  
  80. void borrar_alumno(char *nombre)
  81. {
  82.    struct alumnos *consulta, *buffer;
  83.    buffer=actual;
  84.    for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
  85.    {
  86.       if(strcmp(consulta->nombre, nombre))
  87.       {
  88.          buffer=consulta;
  89.       }
  90.       else
  91.       {
  92.          buffer->last=consulta->last;
  93.          free(consulta);
  94.          return;
  95.       }
  96.    }
  97.  
  98.    buffer->last=NULL;
  99.    free(consulta);
  100.    
  101. }
  102. int buscar_alumno(char *nombre)
  103. {
  104.    struct alumnos *consulta;
  105.    for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
  106.    {
  107.       if(!strcmp(consulta->nombre, nombre))
  108.       {
  109.          return consulta->nota;
  110.       }
  111.    }
  112.    if(!strcmp(consulta->nombre, nombre))
  113.    {
  114.       return consulta->nota;
  115.    }
  116.    return -1;
  117. }
  118.  
  119. int main()
  120. {
  121.    //~ char nombre[15];
  122.    //~ int nota;
  123.    //~ while((getchar())!=' ')
  124.    //~ {
  125.       //~ printf("Introduzca nombre y nota: ");
  126.       //~ scanf("%s %i", nombre, &nota);
  127.       //~ setbuffer(stdin, 0, 0);
  128.       //~ nuevo_alumno(nombre, nota);
  129.       //~ mostrar_lista();
  130.    //~ }
  131.    //~ guardar_lista();
  132.    //~ borrar_lista();
  133.    
  134.    cargar_lista();
  135.    mostrar_lista();
  136.    borrar_alumno("Aurelio");
  137.    printf("%i", buscar_alumno("Irene"));
  138.    borrar_lista();
  139.    
  140.    return 0;
  141. }
  142.  

Sa1uDoS
« Última modificación: Octubre 28, 2013, 09:18:48 am por Expermicid »

Desconectado StuXn3t

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • Twitter: @hackem
    • Ver Perfil
    • Ethical Hacking, Malware Analysis, Disinfection Techniques and more...

Re:[C] Gestor de notas

  • en: Mayo 25, 2013, 12:40:09 am
Gracias por el aporte!