Por falta de clases en archivos y punteros en C

Una empresa desea llevar un control de sus trabajadores, registrando por cada uno de ellos: cedula del trabajador/departamento(1:rrhh , 2:contabilidad, 3:compras, 4:informática, 5:despacho, 6:control de calidad) / sueldo que devenga/ fecha ingreso (dd/mm/aaaa) /cargo(1:gerente, 2:jefe, 3:supervisor, 4:coordinador, 5:analista)
Me piden un menu donde debo mostrar las siguientes operaciones: ingresar, consultar, modificar, eliminar y salir...
Modulo ingresar: en este se almacenara la información de los trabajadores
modulo consultar: en este modulo se consultara por los tipos de búsquedas
. Listado de trabajadores donde especifique sueldo y antigüedad(años, meses). El departamento a consultar sera ingresado por el usuario-al igual que la fecha actual para poder calcular el tiempo en la empresa.
. Modulo modificar: aquí se modifica cualquiera de los campos ya descritos menos la cedula ya que es la clave.
Modulo eliminar: aquí se elimina cualquier trabajador identificado por su cedula. Debe mostrar la información antes de eliminar y preguntar si esta seguro de eliminar dicho registro.la pantalla de eliminación es igual a la de consultar (cedula)pero son el mensaje ¿deseas eliminarlo?...
No quiero incomodar, aunque honestamente le aseguro que he intentado buscar ejercicios resueltos muy similares y no he tenido éxito... Lo que pasa es que este es un trabajo que nos mandaron en la materia programación en lenguaje c, y el profesor dio el tema como visto y no explico nada acerca de archivos ni punteros... De verdad tenemos muchas dudas y no sabemos como avanzar... Cualquier ayuda seria muy grata ya que consideramos que un docente debería enseñar de verdad y no saltarse las clases y después mandar trabajos complejos como este...
Debo entregarlo en dos días ya que los mando ayer y solo se que tengo dos estructuras de datos la del trabajador y la de fecha (dia/mes y año) la fecha entraría como un campo de la estructura central, los departamentos y los cargos los visualizo como menu donde el usuario almacene y se muestre...
Muchas gracias de todas maneras...

1 respuesta

Respuesta
1
//Poes este es my programa, aun tiene algunos errores, pro son mínimos, espero y t sirva! Y suerte!
//cualquier sugerencia es valiosa: [email protected]
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
#include "string.h"
#include "dos.h"
#define g gotoxy
char *capturar(int longitud, int tipo); //FUNCION DE VALIDACION( CUANDO SE QUIERE QUE SE DIGITE LO QUE ES)
void iniciar();
void ingresar();
void consultar();
void eliminar();
void modificar();
void load();  //EMULA UNA BARRA DE PROGRESO
struct control
{
 int cod;
 char ced[30],dep[30],sue[30],car[30],fec[30];
};
//aux **bib=NULL;
control **bib=NULL; control **aux=NULL;    //libro **aux2=NULL;   DECLARACION DE PUNTEROS
int tam=0;    //VARIABLE QUE ME DETERMINA EL NUMERO DE LIBROS
void  main()
{        clrscr();
    char op;
    do{    //CREACION DEL MENU
        gotoxy(28,8);
        printf("Menu Principal\n");
        gotoxy(28,9);
        printf("1");
        printf(" - INGRESAR\n");
        gotoxy(28,10);
        printf("2");
        printf(" - CONSULTAR\n");
        gotoxy(28,11);
        printf("3");
        printf(" - ELIMINAR\n");
        gotoxy(28,12);
        printf("4");   
                printf(" - MODIFICAR");
        gotoxy(28,15);
        printf("Opcion");
        op=getch();
            switch(op)
        {
            case '1':
                clrscr();
                ingresar( );
                break;
            case '2':
                clrscr();
                consultar( );
                break;
            case '3':
                clrscr();
                eliminar( );
                break;
            case '4':
                clrscr();
                modificar();
        }
        } while (op!=27);
    //vaciar();
    if(bib) bib=NULL; delete bib;
    if (aux)  aux=NULL; delete aux;
}
void iniciar()  //PIDO MEMORIA
{bib =new control*[tam];
 //aux =new control*[tam+1];
}
void ingresar()   //FUNCION PARA INGRESAR
{
    if(tam==0){iniciar(); bib[tam]=new control;}
     else
     {
      aux =new control*[tam+1];
      aux[tam]=new control;
            for(int i=0;i<tam;i++)
             {aux=bib;
             }
            if(bib)    bib=NULL; delete bib;
            bib=aux;
            aux=NULL;  delete aux;
         }
         clrscr();
         g(4,4);cout<<"CEDULA:  ";strcpy(bib[tam]->dep,capturar(30,2));
         g(4,5);cout<<"DEPARTAMENTO:  ";strcpy(bib[tam]->dep,capturar(30,1));
         g(4,6);cout<<"SUELDO:  ";strcpy(bib[tam]->sue,capturar(30,2));
         g(4,7);cout<<"CARGO:  ";strcpy(bib[tam]->car,capturar(30,1));
         g(4,9);cout<<"FECHA DE INGRESO :  ";strcpy(bib[tam]->fec,capturar(30,2));tam++; clrscr();
}
void consultar() //FUNCION PARA CONSULTAR
{clrscr();int y=2;
 for(int i=0;i<tam;i++)
    {if(bib)
     {
      puts("CEDULA           DEPARTAMENTO           SUELDO      CARGO      FECHA DE INGRESO  ");
      g(1,y);cout<<bib->ced;
      g(17,y);cout<<bib->dep;
      g(40,y);cout<<bib->sue;
      g(52,y);cout<<bib->car;
      g(66,y);cout<<bib->fec;
      y++;
     }
    }
    getch();clrscr();
}
void eliminar() //FUNCION QUE ELIMINA REGISTROS
{clrscr();int AUX;
 //aux2=new control*[tam];
 g(4,4);puts("CEDULA: ");g(14,4);int z=atoi(capturar(30,0));AUX=z;
 for(int i=0;i<tam&&AUX!=bib->cod;i++);
    if(i==tam){g(4,20);puts("NO EXISTE LA CEDULA;");getch();clrscr();}
    else
     {
          printf("¿SEGURO QUE DESEA ELIMINAR?, SI ES A SI DE ENTER");
      bib=NULL;g(4,20);puts("REGISTRO ELIMINADO"); getch();
      aux=new control*[tam-1]; clrscr();
      aux[tam]=new control;
      for(int i=0,j=0;i<tam;i++)
       {if(bib){aux[j]=bib;j++;}
       }
     // if(bib){ bib=NULL; delete bib; }
      if(bib) {bib=NULL;delete bib;}
      bib=aux;getch();tam=j;
      //if(aux) {aux=NULL;  delete aux;}
     }
}
void modificar()  //FUNCION PARA MODIFICAR DATOS
{
 clrscr();
 int auz;
 g(4,3);puts("CEDULA:");g(12,3);int x=atoi(capturar(30,0));auz=x; g(4,3);
 for(int i=0;i<tam&&auz!=bib->cod;i++);
 if(i==tam){g(4,20);puts("CEDULA INEXISTENTE ");getch();clrscr(); }
 else
 {
         g(4,4);cout<<"CEDULA:  ";cout<<bib->ced;
         g(4,5);cout<<"DEPARTAMENTO:  ";cout<<bib->dep;
         g(4,6);cout<<"SUELDO :  ";cout<<bib->sue;
         g(4,7);cout<<"CARGO:";cout<<bib->car;
         g(4,9);cout<<"FECHA :  ";cout<<bib->fec;
         g(25,15);puts("¨Que dato desea modificar?");
         g(60,23);puts("0 PARA SALIR");
         g(4,16);cout<<"1 - CEDULA        ";
         g(4,17);cout<<"2 - DEPARTAMENTO  ";
         g(4,18);cout<<"3 - SUELDO";
         g(4,19);cout<<"4 - CARGO  ";
         g(4,20);cout<<"5 - FECHA   ";
         g(4,23);printf("Opcion");
         printf("[ ]\b\b");
         char op2=getch();     char aus[30];
         switch(op2)
         {
          case '1':
                clrscr();
                g(4,4);puts("NUEVA CEDULA:");g(15,4);strcpy(aus,capturar(30,1));
                strcpy(bib->ced,aus);
                break;
          case '2':
                clrscr();
                g(4,4);puts("NUEVO DEPARTAMENTO:");g(18,4);strcpy(aus,capturar(30,1));
                strcpy(bib->dep,aus);
                break;
          case '3':
                clrscr();
                g(4,4);puts("NUEVO SUELDO:");g(20,4);strcpy(aus,capturar(30,1));
                strcpy(bib->sue,aus);
                break;
          case '4':
                clrscr();
                g(4,4);puts("NUEVA FECHA:");g(18,4);strcpy(aus,capturar(30,2));
                strcpy(bib->fec,aus);
                break;
  }
 // else { puts("NO REGISTRADO"); getch();   }
  clrscr();
 }
}
//FUNCION DE VALIDACION
char *capturar(int longitud,int tipo)//tipo 0=NUMEROS,1=LETRAS,2=NUMEROS Y LETRAS Y (-)
  {
  char aux[81],i=0;
  unsigned char tecla;
  while(tecla!=13)
    { tecla=getch();
      if(tecla==8)
       { if( i>0)
      { gotoxy(wherex()-1,wherey());
        cout<<" ";
        gotoxy(wherex()-1,wherey());
        i--;
       }
    }
      if(tecla==0) getch();
      else
    { if(i<longitud-1)
       {switch(tipo)
          {case 1: if ((tecla>='A'&& tecla<='Z') || (tecla>='a' && tecla<='z') || (tecla==' '))
             {
               cout<<tecla;
               aux[i++]=tecla;
             }
             break;
           case 2: if ((tecla>='0'&& tecla<='9') || (tecla>='A'&& tecla<='Z') || (tecla>='a' && tecla<='z') || (tecla==' ') || (tecla=='-'))
             { cout<<tecla;
               aux[i++]=tecla;
             }
             break;
           case 0:   if((tecla>='0'&& tecla<='9'))
             {cout<<tecla;
              aux[i++]=tecla;
             }
              break;
           }//switch
       }//if
    }//else
      }//while
   aux=0;
   cout<<"\n";
   return aux;
   }
Wow! Man, muchas gracias de verdad... por dedicar tu tiempo hacia esta pregunta... Por algo eres experto, y seguirás siendo...
Te punto "Excelente" Te lo mereces...
Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas