Está en la página 1de 8

#include <stdio.

h>

#include <stdlib.h>

#include <string.h>

#include <windows.h>

#include <conio.h>

#define ARCHIVO_LOCUTORES "Locutores/Locutores.bin"

#define MAX_NOMBRE 30

#define MAX_APELLIDO 50

typedef struct Persona{

int edad;

char nombre[MAX_NOMBRE];

char apellido[MAX_APELLIDO];

int cedula;

}Persona;

typedef struct empleado{

int sueldo;

//int horario_de_entrada;

//int horario_de_salida;

int activo;

int id;

}Empleado;

typedef struct locutor{

Persona persona_locutor;

Empleado empleado_locutor;

struct locutor *sig;

}Locutor;
typedef struct radio{

Locutor *lista_de_locutores;

}Radio;

void pausar(){

printf("INGRESE CUALQUIER TECLA PARA CONTINUAR...\n");

getch();

void errorCritico()

printf("No se ha podido reservar memoria\n");

pausar();

exit(1);

void iniciarLista(Radio *estacion_de_radio){

estacion_de_radio->lista_de_locutores=NULL;

void guardarLocutor(Locutor *nuevoLocutor){

FILE *file;

file=fopen(ARCHIVO_LOCUTORES,"ab");

if(!file){

errorCritico();

}else{

fwrite(nuevoLocutor, sizeof(Locutor), 1,file);

fclose(file);
}

void ingresarLocutorALaLista(Radio *estacion_de_radio, Locutor *nuevoLocutor){

if(!estacion_de_radio->lista_de_locutores){

estacion_de_radio->lista_de_locutores=nuevoLocutor;

else{

Locutor *listaAuxiliar;

listaAuxiliar=estacion_de_radio->lista_de_locutores;

while(listaAuxiliar->sig)

listaAuxiliar=listaAuxiliar->sig;

listaAuxiliar->sig=nuevoLocutor;

void registroLocutor(Radio *estacion_de_radio){

system("cls");

Locutor *nuevoLocutor;

nuevoLocutor=(Locutor*)calloc(1,sizeof(Locutor));

if(!nuevoLocutor){

errorCritico();

else{

FILE * file=fopen(ARCHIVO_LOCUTORES,"rb");

int id=0;
fseek(file,(sizeof(Locutor)*(-1)),SEEK_END);

if(fread(nuevoLocutor,sizeof(Locutor),1,file))

id=nuevoLocutor->empleado_locutor.id;

printf("Ingrese el nombre del nuevo locutor: \n");

fflush(stdin);

gets(nuevoLocutor->persona_locutor.nombre);

printf("Ingrese el apellido del nuevo locutor: \n");

fflush(stdin);

gets(nuevoLocutor->persona_locutor.apellido);

printf("Ingrese la cedula del locutor \n");

scanf("%i",&nuevoLocutor->persona_locutor.cedula);

printf("Ingrese la edad del nuevo locutor: \n");

scanf("%i",&nuevoLocutor->persona_locutor.edad);

printf("Ingrese el sueldo del nuevo locutor: \n");

scanf("%i",&nuevoLocutor->empleado_locutor.sueldo);

id++;

nuevoLocutor->empleado_locutor.id=id;

nuevoLocutor->empleado_locutor.activo=1;

nuevoLocutor->sig=NULL;

fclose(file);

ingresarLocutorALaLista(estacion_de_radio,nuevoLocutor);

guardarLocutor(nuevoLocutor);

}
void imprimirLocutor(Locutor *locutor)

printf("%-10s %-20i %-10s %-10s %-10i %-10i %-10i %-10s \n"," ",locutor->empleado_locutor.id,

locutor->persona_locutor.nombre,

locutor->persona_locutor.apellido,

locutor->persona_locutor.cedula,

locutor->persona_locutor.edad,

locutor->empleado_locutor.sueldo,

"Nombre del programa");

void mostrarListaDeLocutores2(Radio *estacion_de_radio){

Locutor *listaAuxiliar;

listaAuxiliar=estacion_de_radio->lista_de_locutores;

system("cls");

printf("%-10s %-20s %-10s %-10s %-10s %-10s %-10s %-10s\n"," ","Id


Locutor","Nombre","Apellido","Cedula","Edad","Sueldo","Nombre del programa");

while(listaAuxiliar){

imprimirLocutor(listaAuxiliar);

listaAuxiliar=listaAuxiliar->sig;

printf("\n");

printf("\t \t \t \t PRESIONA CUALQUIER TECLA PARA VOLVER...");

getch();

void mostrarListaDeLocutores(Radio *estacion_de_radio){


system("cls");

FILE *file;

file=fopen(ARCHIVO_LOCUTORES,"rb");

Locutor locutorALeer;

printf("%-10s %-20s %-10s %-10s %-10s %-10s %-10s %-10s\n"," ","Id


Locutor","Nombre","Apellido","Cedula","Edad","Sueldo","Nombre del programa");

while(fread(&locutorALeer, sizeof(Locutor),1, file)){

imprimirLocutor(&locutorALeer);

printf("\n");

printf("\t \t \t \t PRESIONA CUALQUIER TECLA PARA VOLVER...");

getch();

void cargarListaLocutores(Radio *estacion_de_radio){

//INICIO LA LISTA DE LOCUTORES EN NULL

iniciarLista(estacion_de_radio);

system("cls");

//TRATO DE LEER EL ARCHIVO PARA CARGAR LAS LISTAS

FILE *file;

file=fopen(ARCHIVO_LOCUTORES,"rb");

//SI NO SE PUDO LEER ES PORQUE NO EXISTE

if(!file){

system("cls");

printf("El archivo esta vacio\n");

pausar();

}else{

Locutor *locutorALeer;
locutorALeer=(Locutor*)calloc(1,sizeof(Locutor));

//DE OTRA MANERA MIENTRAS VAYA LEYENDO EL LOCUTOR QUE LO VAYA INGRENSANDO EN
LA LISTA

while(fread(locutorALeer, sizeof(Locutor),1, file)){

locutorALeer->sig=NULL;

ingresarLocutorALaLista(estacion_de_radio,locutorALeer);

fclose(file);

void eliminarListaLocutor(Radio * estacion_de_radio){

Locutor *listaAuxiliar;

while(estacion_de_radio->lista_de_locutores){

listaAuxiliar=estacion_de_radio->lista_de_locutores;

estacion_de_radio->lista_de_locutores=estacion_de_radio->lista_de_locutores->sig;

free(listaAuxiliar);

void menu (Radio *estacion_de_radio){

int op=0;

do{

system("cls");

printf("[1] Registro de Locutor \n");

printf("[2] Mostrar lista de locutores del archivo \n");

printf("[3] Mostrar lista de locutores de lista enlazada \n");


printf("[4] Salir \n");

printf("Ingrese la opcion: ");

scanf("%i",&op);

switch(op){

case 1: registroLocutor(estacion_de_radio); break;

case 2: mostrarListaDeLocutores(estacion_de_radio); break;

case 3: mostrarListaDeLocutores2(estacion_de_radio); break;

case 4: eliminarListaLocutor(estacion_de_radio);

free(estacion_de_radio->lista_de_locutores);

exit(1);

default :

printf("%cLa opcion que ingreso no es correcta!",173);

Sleep(1000);

system("cls");

}while(op!=7);

int main (){

//INSTANCIAR RADIO QUE CONTIENE TODAS LAS ESTRUCTURAS

Radio mi_estacion_de_radio;

//CARGAR LA LISTA CON LOS REGISTROS DEL ARCHIVO

cargarListaLocutores(&mi_estacion_de_radio);

menu(&mi_estacion_de_radio);

pausar();

return 0;

También podría gustarte