Gestor de DOX's


Khea

Soy khea bro
Noder
Os dejo por aquí un programilla en C para gestionar un dox.

Es muy sencillo, esta hecho con el fin de aprender a programar en c y tiene campos como nombre, apellidos, pueblo, codigo postal e IP.
Si tenéis alguna duda sobre el me comentáis, un saludo.

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

struct t_info{
        char *nombre;
        char *apellido1;
        char *apellido2;
        char *municipio;
        char *codigoPostal;
        char *ip;
    };
    struct t_Dox{
        int ref;
        struct t_info informacion;
    };

void menu(struct t_Dox *dox);
void addDox(struct t_Dox *dox);
void eliminarDox(struct t_Dox *dox);
void buscarDox(struct t_Dox *dox);
void listarDox(struct t_Dox *dox);
void main(){

    struct t_Dox doxeo;
    menu(&doxeo);
    
    
}

void menu(struct t_Dox *dox){
 int opcion;
 do
 {
 printf("\tGESTION DE DOX's\n");
 printf("\t==================\n\n");
 printf("1. ADD dox\n");
 printf("2. Eliminar dox\n");
 printf("3. Buscar dox\n");
 printf("4. Listado de dox\n");
 printf("5. Salir\n");
 do
 {
 printf("Elige una opción entre 1 y 5: ");
 scanf("%d",&opcion);
 } while (opcion < 1 || opcion > 5);
 switch(opcion)
 {
 case 1:
 addDox(dox);
 break;
 case 2:
 eliminarDox(dox);
 break;
 case 3:
 buscarDox(dox);
 break;
 case 4:
 listarDox(dox);
 break;
 }
 } while (opcion != 5);
}
void addDox(struct t_Dox *dox){
    
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia que valdrá para buscarlo mas tarde\n");
    scanf("%d",&ref);
    dox->ref=ref;
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    FILE *f;
    
    if((f = fopen(refChar, "r"))==NULL)
    {
            
            
            f = fopen(refChar, "w+");
            /***********************/
            fprintf(f, "REFERENCIA: \n");
            fprintf(f, "%d",ref);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el nombre: \n");
            scanf("%s",&dox->informacion.nombre);
            fprintf(f, "Nombre: \n");
            fprintf(f, "%s ",&dox->informacion.nombre);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el Primer apellido: \n");
            scanf("%s",&dox->informacion.apellido1);
            fprintf(f, "Primer Apellido: \n");
            fprintf(f, "%s ",&dox->informacion.apellido1);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el Segundo apellido: \n");
            scanf("%s",&dox->informacion.apellido2);
            fprintf(f, "Segundo Apellido: \n");
            fprintf(f, "%s ",&dox->informacion.apellido2);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce municipio: \n");
            scanf("%s",&dox->informacion.municipio);
            fprintf(f, "Municipio: \n");
            fprintf(f, "%s ",&dox->informacion.municipio);
            fprintf(f, "\n");
            /***********************/
            printf("Codigo postal: \n");
            scanf("%s",&dox->informacion.codigoPostal);       
            fprintf(f, "Codigo postal: \n");       
            fprintf(f, "%s ",&dox->informacion.codigoPostal);
            fprintf(f, "\n");
            /***********************/
            printf("Ip: \n");
            scanf("%s",&dox->informacion.ip);
            fprintf(f, "IP: \n");
            fprintf(f, "%s ",&dox->informacion.ip);
            fprintf(f, "\n");
            /***********************/

            fclose(f);
    }else{
            printf("YA EXISTE\n");
            fclose(f);
    }
    
    

}
void eliminarDox(struct t_Dox *dox){
    
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia a eliminar\n");
    scanf("%d",&ref);
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    if(remove(refChar)==-0){
        printf("Archivo eliminado con exito");
        printf("\n");
    }else printf("No se encuentra el archivo");
    
    
    
    
    
}
void buscarDox(struct t_Dox *dox){
    FILE *f;
    char buffer[1024];
    char c;
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia Del dox: \n");
    scanf("%d",&ref);
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    if((f = fopen(refChar, "r"))==NULL){
            printf("Ningún dox con referencia %d, si quiere crear un dox, pulse 1 en el menú. \n",ref);
    }else{
            fgets(buffer,1024,f);
            fgets(buffer,1024,f);
            fgets(buffer,1024,f);
            printf("Nombre: \n");
            fgets(buffer, 1024, f);
            printf("%s",buffer);
            printf("\n");
            fgets(buffer,1024,f);
            fgets(buffer, 1024, f);
            printf("Apellido 1: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Apellido 2: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Municipio: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Codigo postal: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("IP: \n");
            printf("%s",buffer);
            printf("\n");

            
            fclose(f);
    }   
    
    
}
void listarDox(struct t_Dox *dox){
    WIN32_FIND_DATA findFileData;
    HANDLE          hFind;
    hFind = FindFirstFile("*", &findFileData);

    if(hFind==INVALID_HANDLE_VALUE)
    {
        printf("La carpeta no existe o no se puede acceder");
    }
    else
    {
        do
        {
            if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
            {
                printf("Directorio: %s",findFileData.cFileName);
                printf("\n");
            }
            else
            {
                printf("%s\n",findFileData.cFileName);
                 printf("\n");
            }
        }while(FindNextFile(hFind,&findFileData)!=0);
 
        FindClose(hFind);
    }
}
 

MrMoon

Cada uno tiene su historia.
Noder
pues si, la dinamica del ejercicio es la misma. Buen codigo con una limpieza y claridad de 10. Muchas gracias.
 

Thegjv

Moder fav <3
Noderador
Nodero
Noder
Os dejo por aquí un programilla en C para gestionar un dox.

Es muy sencillo, esta hecho con el fin de aprender a programar en c y tiene campos como nombre, apellidos, pueblo, codigo postal e IP.
Si tenéis alguna duda sobre el me comentáis, un saludo.

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

struct t_info{
        char *nombre;
        char *apellido1;
        char *apellido2;
        char *municipio;
        char *codigoPostal;
        char *ip;
    };
    struct t_Dox{
        int ref;
        struct t_info informacion;
    };

void menu(struct t_Dox *dox);
void addDox(struct t_Dox *dox);
void eliminarDox(struct t_Dox *dox);
void buscarDox(struct t_Dox *dox);
void listarDox(struct t_Dox *dox);
void main(){

    struct t_Dox doxeo;
    menu(&doxeo);
   
   
}

void menu(struct t_Dox *dox){
int opcion;
do
{
printf("\tGESTION DE DOX's\n");
printf("\t==================\n\n");
printf("1. ADD dox\n");
printf("2. Eliminar dox\n");
printf("3. Buscar dox\n");
printf("4. Listado de dox\n");
printf("5. Salir\n");
do
{
printf("Elige una opción entre 1 y 5: ");
scanf("%d",&opcion);
} while (opcion < 1 || opcion > 5);
switch(opcion)
{
case 1:
addDox(dox);
break;
case 2:
eliminarDox(dox);
break;
case 3:
buscarDox(dox);
break;
case 4:
listarDox(dox);
break;
}
} while (opcion != 5);
}
void addDox(struct t_Dox *dox){
   
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia que valdrá para buscarlo mas tarde\n");
    scanf("%d",&ref);
    dox->ref=ref;
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    FILE *f;
   
    if((f = fopen(refChar, "r"))==NULL)
    {
           
           
            f = fopen(refChar, "w+");
            /***********************/
            fprintf(f, "REFERENCIA: \n");
            fprintf(f, "%d",ref);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el nombre: \n");
            scanf("%s",&dox->informacion.nombre);
            fprintf(f, "Nombre: \n");
            fprintf(f, "%s ",&dox->informacion.nombre);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el Primer apellido: \n");
            scanf("%s",&dox->informacion.apellido1);
            fprintf(f, "Primer Apellido: \n");
            fprintf(f, "%s ",&dox->informacion.apellido1);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce el Segundo apellido: \n");
            scanf("%s",&dox->informacion.apellido2);
            fprintf(f, "Segundo Apellido: \n");
            fprintf(f, "%s ",&dox->informacion.apellido2);
            fprintf(f, "\n");
            /***********************/
            printf("Introduce municipio: \n");
            scanf("%s",&dox->informacion.municipio);
            fprintf(f, "Municipio: \n");
            fprintf(f, "%s ",&dox->informacion.municipio);
            fprintf(f, "\n");
            /***********************/
            printf("Codigo postal: \n");
            scanf("%s",&dox->informacion.codigoPostal);      
            fprintf(f, "Codigo postal: \n");      
            fprintf(f, "%s ",&dox->informacion.codigoPostal);
            fprintf(f, "\n");
            /***********************/
            printf("Ip: \n");
            scanf("%s",&dox->informacion.ip);
            fprintf(f, "IP: \n");
            fprintf(f, "%s ",&dox->informacion.ip);
            fprintf(f, "\n");
            /***********************/

            fclose(f);
    }else{
            printf("YA EXISTE\n");
            fclose(f);
    }
   
   

}
void eliminarDox(struct t_Dox *dox){
   
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia a eliminar\n");
    scanf("%d",&ref);
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    if(remove(refChar)==-0){
        printf("Archivo eliminado con exito");
        printf("\n");
    }else printf("No se encuentra el archivo");
   
   
   
   
   
}
void buscarDox(struct t_Dox *dox){
    FILE *f;
    char buffer[1024];
    char c;
    int ref;
    char refChar[8];
    printf("Dame el numero de referencia Del dox: \n");
    scanf("%d",&ref);
    itoa(ref,refChar,10);
    strcat(refChar,".txt");
    if((f = fopen(refChar, "r"))==NULL){
            printf("Ningún dox con referencia %d, si quiere crear un dox, pulse 1 en el menú. \n",ref);
    }else{
            fgets(buffer,1024,f);
            fgets(buffer,1024,f);
            fgets(buffer,1024,f);
            printf("Nombre: \n");
            fgets(buffer, 1024, f);
            printf("%s",buffer);
            printf("\n");
            fgets(buffer,1024,f);
            fgets(buffer, 1024, f);
            printf("Apellido 1: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Apellido 2: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Municipio: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("Codigo postal: \n");
            printf("%s",buffer);
            fgets(buffer, 1024, f);
            fgets(buffer, 1024, f);
            printf("\n");
            printf("IP: \n");
            printf("%s",buffer);
            printf("\n");

           
            fclose(f);
    }  
   
   
}
void listarDox(struct t_Dox *dox){
    WIN32_FIND_DATA findFileData;
    HANDLE          hFind;
    hFind = FindFirstFile("*", &findFileData);

    if(hFind==INVALID_HANDLE_VALUE)
    {
        printf("La carpeta no existe o no se puede acceder");
    }
    else
    {
        do
        {
            if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
            {
                printf("Directorio: %s",findFileData.cFileName);
                printf("\n");
            }
            else
            {
                printf("%s\n",findFileData.cFileName);
                 printf("\n");
            }
        }while(FindNextFile(hFind,&findFileData)!=0);

        FindClose(hFind);
    }
}
No había visto este post y me parece interesante cuanto menos, seguro que me viene bien jejeje