Creo que pregunta por los métodos.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúvoid miFuncion(int cubos[][100][100][100]);
docentes=fopen("docentes.txt","ab+");
cargar(d);
fclose(docentes);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAX_CADENA 50
typedef struct tfecha {
int dia;
int mes;
int anyo;
} fecha;
typedef struct tformacion {
char titulo[MAX_CADENA];
char facultad[MAX_CADENA];
char universidad[MAX_CADENA];
} formacion;
typedef struct tdocente {
int legajo;
char nombre_apellido[MAX_CADENA];
fecha fecha_nac;
formacion educacion;
int DNI;
char cargo[MAX_CADENA];
} docente;
void grabar_registro(docente *registro, FILE *archivo);
void leer_registro(docente *registro, FILE *archivo);
void cargar(docente *individuo);
void mostrar(docente *individuo);
void cargar_docentes(char * const nombre_archivo);
bool consulta(char * const nombre_archivo, int codigo);
void mostrar_docentes(char * const nombre_archivo);
void busqueda(char * const nombre_archivo, int codigo);
void modificar_docente(char * const nombre_archivo, int codigo);
void eliminar_docente(char * const nombre_archivo, int codigo);
void listar_docentes_especificos(char * const nombre_archivo, char * const buscado);
void nueva_cadena(char cadena[]);
int main() {
char *docentes = "docentes.txt";
int opcion, codigo;
char buscado[MAX_CADENA];
do {
system("cls");
puts("1. Cargar docente");
puts("2. Consultar docente");
puts("3. Listar docentes");
puts("4. Buscar docente");
puts("5. Modificar docente");
puts("6. Eliminar docente");
puts("7. Listar docentes por universidad");
puts("8. Salir");
printf("\n> ");
scanf("%d", &opcion);
switch(opcion) {
case 1:
cargar_docentes(docentes);
break;
case 2:
printf("Ingrese numero de legajo: ");
scanf("%d", &codigo);
if(consulta(docentes, codigo))
puts("Docente encontrado");
else
puts("Docente no encontrado");
break;
case 3:
mostrar_docentes(docentes);
break;
case 4:
printf("Ingrese numero de legajo: ");
scanf("%d", &codigo);
busqueda(docentes, codigo);
break;
case 5:
printf("Ingrese numero de legajo: ");
scanf("%d", &codigo);
modificar_docente(docentes, codigo);
break;
case 6:
printf("Ingrese numero de legajo: ");
scanf("%d", &codigo);
eliminar_docente(docentes, codigo);
break;
case 7:
printf("Ingrese universidad: ");
nueva_cadena(buscado);
listar_docentes_especificos(docentes, buscado);
break;
case 8:
puts("FIN DEL PROGRAMA");
break;
default:
puts("Opcion incorrecta");
}
system("pause");
} while(opcion!=8);
}
void grabar_registro(docente *registro, FILE *archivo) {
fwrite(®istro->legajo, sizeof(int), 1, archivo);
fwrite(registro->nombre_apellido, sizeof(char), MAX_CADENA, archivo);
fwrite(®istro->fecha_nac.dia, sizeof(int), 1, archivo);
fwrite(®istro->fecha_nac.mes, sizeof(int), 1, archivo);
fwrite(®istro->fecha_nac.anyo, sizeof(int), 1, archivo);
fwrite(registro->educacion.titulo, sizeof(char), MAX_CADENA, archivo);
fwrite(registro->educacion.facultad, sizeof(char), MAX_CADENA, archivo);
fwrite(registro->educacion.universidad, sizeof(char), MAX_CADENA, archivo);
fwrite(®istro->DNI, sizeof(int), 1, archivo);
fwrite(registro->cargo, sizeof(char), MAX_CADENA, archivo);
}
void leer_registro(docente *registro, FILE *archivo) {
fread(®istro->legajo, sizeof(int), 1, archivo);
fread(registro->nombre_apellido, sizeof(char), MAX_CADENA, archivo);
fread(®istro->fecha_nac.dia, sizeof(int), 1, archivo);
fread(®istro->fecha_nac.mes, sizeof(int), 1, archivo);
fread(®istro->fecha_nac.anyo, sizeof(int), 1, archivo);
fread(registro->educacion.titulo, sizeof(char), MAX_CADENA, archivo);
fread(registro->educacion.facultad, sizeof(char), MAX_CADENA, archivo);
fread(registro->educacion.universidad, sizeof(char), MAX_CADENA, archivo);
fread(®istro->DNI, sizeof(int), 1, archivo);
fread(registro->cargo, sizeof(char), MAX_CADENA, archivo);
}
void cargar(docente *individuo) {
puts("Ingrese datos del docente");
printf("Legajo: ");
scanf("%d", &individuo->legajo);
printf("Nombre y apellido: ");
nueva_cadena(individuo->nombre_apellido);
puts("Fecha de nacimiento...");
printf("Dia: ");
scanf("%d", &individuo->fecha_nac.dia);
printf("Mes: ");
scanf("%d", &individuo->fecha_nac.mes);
printf("Anyo: ");
scanf("%d", &individuo->fecha_nac.anyo);
puts("Formacion academica");
printf("Titulo: ");
nueva_cadena(individuo->educacion.titulo);
printf("Facultad: ");
nueva_cadena(individuo->educacion.facultad);
printf("Universidad: ");
nueva_cadena(individuo->educacion.universidad);
printf("DNI: ");
scanf("%d", &individuo->DNI);
printf("Cargo: ");
nueva_cadena(individuo->cargo);
}
void mostrar(docente *individuo) {
puts("Datos del docente");
printf("Legajo: %d\n", individuo->legajo);
printf("Nombre y apellido: %s\n", individuo->nombre_apellido);
printf("Fecha de nacimiento: %d/%d/%d\n", individuo->fecha_nac.dia, individuo->fecha_nac.mes, individuo->fecha_nac.anyo);
puts("Formacion academica");
printf("Titulo: %s\n", individuo->educacion.titulo);
printf("Facultad: %s\n", individuo->educacion.facultad);
printf("Universidad: %s\n", individuo->educacion.universidad);
printf("DNI: %d\n", individuo->DNI);
printf("Cargo: %s\n\n", individuo->cargo);
}
void cargar_docentes(char * const nombre_archivo) {
docente d;
FILE *fp;
cargar(&d);
if(consulta(nombre_archivo, d.legajo)==false) {
fp=fopen(nombre_archivo, "ab");
grabar_registro(&d, fp);
fclose(fp);
}
else
puts("El numero de legajo ya existe");
}
bool consulta(char * const nombre_archivo, int codigo) {
docente d;
char c;
bool encontrado=false;
FILE *fp=fopen(nombre_archivo,"rb");
if(fp) {
c=fgetc(fp);
while(!feof(fp) && !encontrado) {
ungetc(c, fp);
leer_registro(&d, fp);
if(d.legajo==codigo)
encontrado=true;
c=fgetc(fp);
}
}
fclose(fp);
return encontrado;
}
void mostrar_docentes(char * const nombre_archivo) {
docente d;
char c;
FILE *fp=fopen(nombre_archivo, "rb");
if(!fp) {
puts("No se pudo abrir el archivo");
return;
}
c=fgetc(fp);
while(!feof(fp)) {
ungetc(c, fp);
leer_registro(&d, fp);
mostrar(&d);
c=fgetc(fp);
}
fclose(fp);
}
void busqueda(char * const nombre_archivo, int codigo) {
docente d;
char c;
bool encontrado=false;
FILE *fp=fopen(nombre_archivo, "rb");
if(!fp) {
puts("No se pudo abrir el archivo");
return;
}
c=fgetc(fp);
while(!feof(fp) && !encontrado) {
ungetc(c, fp);
leer_registro(&d, fp);
if(d.legajo==codigo) {
mostrar(&d);
encontrado=true;
}
c=fgetc(fp);
}
if(encontrado==false)
puts("Docente no encontrado");
fclose(fp);
}
void modificar_docente(char * const nombre_archivo, int codigo) {
docente d;
char c;
long int posicion = 0;
bool encontrado=false;
FILE *fp=fopen(nombre_archivo, "rb+");
if(!fp) {
puts("No se pudo abrir el archivo");
return;
}
c=fgetc(fp);
while(!feof(fp) && !encontrado) {
ungetc(c, fp);
leer_registro(&d, fp);
if(codigo==d.legajo)
encontrado=true;
else
posicion = ftell(fp);
c=fgetc(fp);
}
if(encontrado) {
ungetc(c, fp);
cargar(&d);
fseek(fp, posicion, SEEK_SET);
grabar_registro(&d, fp);
}
else
puts("Docente no encontrado");
fclose(fp);
}
void eliminar_docente(char * const nombre_archivo, int codigo) {
const char *nombre_temporal = "temporal.txt";
docente d;
char c;
FILE *fp;
FILE *temporal;
fp=fopen(nombre_archivo, "rb");
if(!fp) {
printf("No se puede abrir el archivo %s\n", nombre_archivo);
return;
}
temporal=fopen(nombre_temporal, "wb");
if(!temporal) {
puts("No se pudo generar el archivo temporal.");
fclose(fp);
return;
}
c=fgetc(fp);
while(!feof(fp)) {
ungetc(c, fp);
leer_registro(&d, fp);
if(!feof(fp) && d.legajo!=codigo)
grabar_registro(&d, temporal);
c=fgetc(fp);
}
fclose(fp);
fclose(temporal);
if(remove(nombre_archivo)==0)
rename(nombre_temporal, nombre_archivo);
else
puts("ERROR AL ELIMINAR");
}
void listar_docentes_especificos(char * const nombre_archivo, char * const buscado) {
docente d;
char c;
FILE *fp = fopen(nombre_archivo, "rb");
if(!fp) {
puts("No se pudo abrir el archivo");
return;
}
c=fgetc(fp);
while(!feof(fp)) {
ungetc(c, fp);
leer_registro(&d, fp);
if(strcmp(d.educacion.universidad, buscado)==0)
mostrar(&d);
c=fgetc(fp);
}
fclose(fp);
}
void nueva_cadena(char cadena[]) {
char *c;
fseek(stdin, 0, SEEK_END);
fgets(cadena, MAX_CADENA, stdin);
c = strchr(cadena, '\n');
if(c)
*c = '\0';
fseek(stdin, 0, SEEK_END);
}
for(y=0;y<12;y++)
acu=acu+arr[x][y];
cout << static_cast<void*>(&vocal);