G
guerrero512
Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Alguien que me ayude estoy haciendo un programa en C que permita
1 Dar de alta a un empleado
2 Da de baja a un empleado
3 Modificar a un empleado
4 Guardar en modo texto
5 guardar en modo binario
y aquí tengo el código pero estoy atorado ya no se que hacer 🙁
Creo que empezare otro con este ya me revolvi
1 Dar de alta a un empleado
2 Da de baja a un empleado
3 Modificar a un empleado
4 Guardar en modo texto
5 guardar en modo binario
y aquí tengo el código pero estoy atorado ya no se que hacer 🙁
Creo que empezare otro con este ya me revolvi
Insertar CODE, HTML o PHP:
#include<stdlib.h>
#include<stdio.h>
//DEFINICIÓN DE ESTRUCTURAS Y CONSTANTES
//Número de empleados
#define NUM_EMP 100
//Definición de la estructura
typedef struct empleado
{
int no_empleado;
char nombre[45];
char departamento[45];
float salario;
char direccion[100];
}empleado;
//DECLARACIÓN DE FUNCIONES
/*Procedimiento para capturar por medio de la entrada estandar los empleados
(Recibe la referencia al arreglo de empleados)*/
void CapturaEmpleados(empleado *lista);
void EliminarEmpleado(empleado*lista);
/*Procedimiento para mostrar en la salida estandar los empleados
(Recibe la referencia al arreglo de empleados)*/
void ImprimeEmpleados(empleado *lista);
/*Procedimiento para guardar en un archivo de texto a los empleados
(Recibe la referencia al arreglo de empleados y la ruta del archivo a escribir)*/
void GuardaEmpleadosTexto(empleado *lista, char* ruta_escribir);
/*Procedimiento para leer de un archivo de texto a los empleados
(Recibe la referencia al arreglo de empleados y la ruta del archivo a leer)*/
void LeeEmpleadosTexto(empleado *lista, char* ruta_leer);
/*Procedimiento para guardar en un archivo de binario a los empleados
(Recibe la referencia al arreglo de empleados y la ruta del archivo a escribir)*/
void GuardaEmpleadosBinario(empleado *lista, char* ruta_escribir);
/*Procedimiento para leer de un archivo binario a los empleados
(Recibe la referencia al arreglo de empleados y la ruta del archivo a leer)*/
void LeeEmpleadosBinario(empleado *lista, char* ruta_leer);
//PROGRAMA PRINCIPAL
int main(void){
int opcion;
//Arreglo de NUM_EMP estructuras empleado
empleado lista[NUM_EMP];
//Recupera y muestra los empleados del archivo en modo texto (*Comprobación)
LeeEmpleadosTexto(lista,"empleados.txt");
printf("\n\n*Empleados recuperados del archivo \"empleados.txt\"\n\n");
//Recupera y muestra los empleados del archivo en modo binario (*Comprobación)
LeeEmpleadosBinario(lista,"empleados.dat");
printf("\n\n*Empleados recuperados del archivo \"empleados.dat\"\n\n");
do{
printf("\n\nElige una opcion\n");
printf("1.- Dar de alta un empleado\n");
printf("2.- Dar de baja un empleado\n");
printf("3.- Modificar un empleado\n");
printf("4.- Guardar en modo texto\n");
printf("5.- Guardar en modo binario\n");
printf("6.- Salir\n");
scanf("%d",&opcion);
switch (opcion){
case 1:
//Solicitar los NUM_EMP empleados
CapturaEmpleados(lista);
break;
case 2:
case 3:
case 4:
//Guarda los empleados en un archivo de texto
GuardaEmpleadosTexto(lista,"empleados.txt");
case 5:
//Guarda los empleados en un archivo binario
GuardaEmpleadosBinario(lista,"empleados.dat");
case 6:
break;
defaul:
printf("Esa no es una opcion valida");
}
}while(opcion!=6);
return 0;
}
//DEFINICIÓN DE FUNCIONES
/*
void CapturaEmpleados(empleado *lista);
Descripción: Procedimiento para capturar por medio de la entrada estandar los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados)
Devuelve:
Observaciones: Si la esctructura empleado se modifica, también se modificará esta función
*/
void CapturaEmpleados(empleado *lista){
int i=0;
printf("\n\n\nEmpleado %d de la lista",i+1);
printf("\nIntroduce el numero de empleado: ");
scanf("%d",&lista[i].no_empleado);
printf("\nIntroduce el nombre de empleado: ");
scanf("%s",&lista[i].nombre);
printf("\nIntroduce el departamento del empleado: ");
scanf("%s",&lista[i].departamento);
printf("\nIntroduce el salario de empleado: ");
scanf("%f",&lista[i].salario);
printf("\nIntroduce la direccion del empleado: ");
scanf("%s",&lista[i].direccion);
i++;
}
/*
void ImprimeEmpleados(empleado *lista);
Descripción: Procedimiento para mostrar en la salida estandar los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados)
Devuelve:
Observaciones: Si la esctructura empleado se modifica, también se modificará esta función
*/
void ImprimeEmpleados(empleado *lista){
int i;
for(i=0;i<NUM_EMP;i++)
{
printf("\n\n\nEmpleado #%d",lista[i].no_empleado);
printf("\nNombre: %s",lista[i].nombre);
printf("\nDepartamento: %s",lista[i].departamento);
printf("\nSalario: %.2f",lista[i].salario);
printf("\nDirección: %s",lista[i].direccion);
}
}
/*
void GuardaEmpleadosTexto(empleado *lista, char* ruta_escribir);
Descripción: Procedimiento para guardar en un archivo de texto a los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados), char *ruta(Cadena con la ruta del archivo a escribir)
Devuelve:
Observaciones: Si la esctructura empleado se modifica, también se modificará esta función, el archivo a escribir se maneja en modo texto.
*/
void GuardaEmpleadosTexto(empleado *lista, char* ruta_escribir){
int i;
FILE *archivo;
archivo=fopen(ruta_escribir,"w");
for(i=0;i<NUM_EMP;i++)
{
fprintf(archivo,"\n\nEmpleado %d de la lista",i+1);
fprintf(archivo,"\nNúmero de empleado: %d",lista[i].no_empleado);
fprintf(archivo,"\nNombre de empleado: %s",lista[i].nombre);
fprintf(archivo,"\nDepartamento del empleado: %s",lista[i].departamento);
fprintf(archivo,"\nSalario de empleado: %f",lista[i].salario);
fprintf(archivo,"\nDirección del empleado: %s",lista[i].direccion);
}
fclose(archivo);
}
/*
void LeeEmpleadosTexto(empleado *lista, char* ruta_escribir);
Descripción: Procedimiento para leer de un archivo de texto a los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados), char *ruta(Cadena con la ruta del archivo a escribir)
Devuelve:
Observaciones: Si la esctructura empleado se modifica, o si se cambia la la manera de guardar a los empleados,
también se modificará esta función, el archivo a escribir se maneja en modo texto.
*/
void LeeEmpleadosTexto(empleado *lista, char* ruta_escribir){
int i,n;
FILE *archivo;
archivo=fopen(ruta_escribir,"r");
for(i=0;i<NUM_EMP;i++)
{
fscanf(archivo,"\n\nEmpleado %d de la lista",&n);
fscanf(archivo,"\nNúmero de empleado: %d",&lista[i].no_empleado);
fscanf(archivo,"\nNombre de empleado: %s",&lista[i].nombre);
fscanf(archivo,"\nDepartamento del empleado: %s",&lista[i].departamento);
fscanf(archivo,"\nSalario de empleado: %f",&lista[i].salario);
fscanf(archivo,"\nDirección del empleado: %s",&lista[i].direccion);
}
fclose(archivo);
}
/*
void GuardaEmpleadosBinario(empleado *lista, char* ruta_escribir);
Descripción: Procedimiento para guardar en un archivo binario a los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados), char *ruta(Cadena con la ruta del archivo a escribir)
Devuelve:
Observaciones:
*/
void GuardaEmpleadosBinario(empleado *lista, char* ruta_escribir){
int i;
FILE *archivo;
archivo=fopen(ruta_escribir,"wb");
fseek(archivo,0,SEEK_SET);
fwrite(lista,sizeof(empleado),NUM_EMP,archivo);
fclose(archivo);
}
/*
void LeeEmpleadosBinario(empleado *lista, char* ruta_escribir);
Descripción: Procedimiento para leer de un archivo binario a los empleados
Recibe: empleado *lista (Referencia al arreglo de empleados), char *ruta(Cadena con la ruta del archivo a escribir)
Devuelve:
Observaciones: Si la esctructura empleado se modifica, también se modificará esta función, el archivo a escribir se maneja en modo binario.
*/
void LeeEmpleadosBinario(empleado *lista, char* ruta_escribir){
int i,n;
FILE *archivo;
archivo=fopen(ruta_escribir,"rb");
fread(lista,sizeof(empleado),NUM_EMP,archivo);
fclose(archivo);
}

