viernes, 26 de agosto de 2011

Almacenar, listar y modificar, nombre y edad de personas, en un fichero binario.

Aplicación que permite almacenar nombre y edad de personas, en un fichero binario.
Opciones Añadir Datos, Listar todos los datos, Modificar un dato



Enlace a codepad
http://codepad.org/vUG8T0Qt

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Código Fuente

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



#include <stdio.h>
#include <stdlib.h>

struct Tficha
{
    char usuario[30];
    int edad;
};

int main()
{
    int continuar = 1, menu = 0;

    while (continuar)
    {
        printf("\n\n1 - Anadir ficha.\n");
        printf("2 - Listar fichas.\n");
        printf("3 - Modificar ficha.\n");
        printf("0 - Salir.\n");
        printf("Elije una opcion: ");

        scanf("%d", &menu);
        fflush(stdin);

        printf("\n");


        switch (menu)
        {
            case 0:
                continuar = 0;
                break;
            case 1:
                anadir ();
                break;
            case 2:
                listar ();
                break;
            case 3:
                modificar ();
                break;
        }
    }

    return 0;
}

void anadir ()
{
    struct Tficha ficha;
    FILE *fichero;
    char usuario [50];

    //Abrese o ficheiro como a para engadir datos o final do ficheiro
    fichero = fopen ("datos_bin.vaf", "ab");

    //solicitase usuario por teclado
    printf("Introduza o nome de usuario: ");
    gets (ficha.usuario);
    fflush(stdin);

    //solicitase idade por teclado
    printf("Introduza edad de usuario: ");
    scanf ("%d", &ficha.edad);
    fflush(stdin);

    fwrite (&ficha, sizeof(ficha), 1 , fichero);

    fclose (fichero);
}

void modificar ()
{
    struct Tficha ficha;
    FILE *fichero;
    char usuario_teclado [50];
    int edad_teclado, encontrado=0;

    //Abrese o ficheiro como rt+ que e a única maneira de modificar o ficheiro
    fichero = fopen ("datos_bin.vaf", "rb+");

    //Se solicita el usuario por teclado
    printf("Introduza o nome de usuario: ");
    //usuario_teclado = getchar ();
    gets (usuario_teclado);
    fflush(stdin);

    //Se solicita el usuario por teclado
    printf("Introduza a idade do usuario: ");
    //usuario_teclado = getchar ();
    scanf ("%d", &edad_teclado);
    fflush(stdin);


    while (!feof(fichero) && encontrado == 0)
    {
        fread (&ficha, sizeof(ficha), 1 , fichero);
        if (strcmp(ficha.usuario, usuario_teclado)==0) encontrado = 1;
    }


    if (encontrado == 1)
    {
        fseek (fichero, -1 * sizeof(ficha), SEEK_CUR);
        //strcpy (ficha.usuario, usuario_teclado);
        ficha.edad = edad_teclado;
        fwrite (&ficha, sizeof(ficha), 1 , fichero);
    }
    else
    {
        printf("\nNo se ha encontrado el registro.\n");
    }

    fclose (fichero);
}

void listar ()
{
    struct Tficha ficha;
    FILE *fichero;
    char usuario [50];

    //Abrese o ficheiro como r para leer os datos do ficheiro
    fichero = fopen ("datos_bin.vaf", "rb");

     //leer hasta final de ficheiro e amosar por pantalla
    while (!feof(fichero))
    {
         fread (&ficha, sizeof(ficha), 1 , fichero);
         if (!feof(fichero)) printf("\n%s %d", ficha.usuario, ficha.edad);
    }

    fclose (fichero);
}

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...