Operaciones con empleados en programa C escolar

  • Autor Autor guerrero512
  • Fecha de inicio Fecha de inicio
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

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);
}
 
Atrás
Arriba