BardoArmas
Desconectado
Mensajes: 4
|
#include <stdio.h> #include <string.h> #include <ctype.h> #define max 50 typedef struct{ char nombre[20]; char apellidop[20]; char apellidom[20]; }Alum;
typedef struct{ int matricula; Alum alum; float dep[3]; int edad; char sexo; float prom; }Datos;
void guardar(Datos datos[max],int *conta); void abrir(Datos datos[max],int *conta); void modi_nombre(Datos datos[max],int *conta); void modi_cal(Datos datos[max],int *conta); void modi_edad(Datos datos[max],int *conta); void modi_sexo(Datos datos[max],int *conta); void modificar(Datos datos[max],int *conta); void registro(Datos datos[max],int *conta); void eliminar(Datos datos[max],int *conta); void lista_a(Datos datos[max],int *conta); void lista_r(Datos datos[max],int *conta); void busqueda(Datos datos[max],int *conta); void ordena(Datos datos[max],int *conta); void prom(Datos datos[max],int *conta); void consulta(Datos datos[max],int *conta); void todos(Datos datos[max],int *conta);
//modulo principal indica todas las acciones principales a realizar int main() { int op, conta,res; Datos datos[max]; do { printf("\nPrograma que manipula lista de alumnos\n"); printf("***************************************************\n"); printf("seleccione la accion a realizar\n"); printf("0.-Abrir un archivo\n"); printf("1.-Registrar alumno\n"); printf("2.-Modificar alumno\n"); printf("3.-Eliminar un alumno\n"); printf("4.-Consulta\n"); printf("5.-Ordenar\n"); printf("6.-Guardar archivo\n"); printf("7.-Salir\n"); scanf("%d",&op); switch (op) { case 0: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono abrir un archivo\n"); abrir(datos,&conta); break; case 1: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono registrar un alumno\n"); registro(datos,&conta); break; case 2: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono modificar datos de un alumno"); modificar(datos,&conta); break; case 3: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono eliminar un alumnoo\n"); eliminar(datos,&conta); break; case 4: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono consultar datos de los alumnos\n"); consulta(datos,&conta); break; case 5: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono ordenar alumnos\n"); ordena(datos,&conta); break; case 6: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono guardar un archivo\n"); guardar(datos,&conta); break; case 7: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("selecciono salir\n"); break;
default: printf("Error proporcione una opcion valida\n"); } }while (op!=7); do{ printf("¿Desea guardar el archivo antes de salir?\n"); printf("SI=1,NO=0\n"); scanf("%d",&res); if (res!=1 && res!=0) printf("Error proporcione una opcion valida\n"); if(res==1) guardar(datos,&conta); }while(res!=1 && res!=0); printf("Gracias por usar el Programa\n"); return 0; }
void abrir(Datos datos[max],int *conta) { char N[50]; FILE *archivo; printf("Proporcione el nombre del archivo\n"); scanf("%s",N); getchar(); strcat(N,".dat"); archivo=fopen(N,"rb"); if(archivo==NULL) printf(" no se puede crear archivo \n \n"); else{ printf("archivo abierto\n"); *conta=fread(datos,sizeof(Datos),max,archivo); while(feof(archivo)==0) *conta=fread(datos,sizeof(Datos),max,archivo); fclose(archivo); } }
void guardar(Datos datos[max],int *conta) {char N_archi[50]; int cont; cont=*conta; FILE *archivo; printf("Proporcione el nombre del archivo\n"); scanf("%s",N_archi); strcat(N_archi,".dat"); archivo=fopen(N_archi,"wb"); if(archivo){ fwrite(datos,sizeof(Datos),cont,archivo); fclose(archivo); printf("Archivo guardado\n");} else printf("Archivo no guardado\n"); }
//Registro de alumno// void registro(Datos datos[max],int *conta) { int cont=0,i,a=0,res,b=0; float prom=0; do { cont=*conta; printf("Registro de un alumno\n"); printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); do{ printf("Ingrese la matricula del alumno\n"); scanf("%d",&datos[cont].matricula); a=0; for (i=0;i<cont;i++){ if((datos.matricula)==(datos[i+1].matricula)){ a=1; printf("La matricula esta repetida\n");} } }while(a==1); printf("Ingrese el apellido paterno del alumno\n"); scanf("%s",datos[cont].alum.apellidop); for(i=0;i<strlen(datos[cont].alum.apellidop);i++) datos[cont].alum.apellidop=toupper(datos[cont].alum.apellidop); printf("Ingrese el apellido materno del alumno\n"); scanf("%s",datos[cont].alum.apellidom); for(i=0;i<strlen(datos[cont].alum.apellidom);i++) datos[cont].alum.apellidom=toupper(datos[cont].alum.apellidom); printf("Ingrese el nombre del alumno\n"); scanf("%s",datos[cont].alum.nombre); for(i=0;i<strlen(datos[cont].alum.nombre);i++) datos[cont].alum.nombre=toupper(datos[cont].alum.nombre); do{ printf("ingrese la edad de el alumno\n"); scanf("%d",&datos[cont].edad); if(datos[cont].edad<1) printf("Error la edad debe ser mayor a 0\n"); }while(datos[cont].edad<1); getchar(); do{ printf("ingrese el sexo de el alumno(F/M)\n"); scanf("%c",&datos[cont].sexo); b=0; if (datos[cont].sexo!='M' && datos[cont].sexo!='m' && datos[cont].sexo!='F' && datos[cont].sexo!='f'){ b=1; printf("proporcione el sexo correcto\n"); getchar();} datos[cont].sexo=toupper(datos[cont].sexo); }while(b==1); for(i=0;i<3;i++){ do { printf("Ingrese la calificacion del departamental %d\n",i+1); scanf("%f",&datos[cont].dep); if (datos[cont].dep<0 ||datos[cont].dep>10) printf("la calificacion debe estar entre 0 a 10\n"); } while(datos[cont].dep<0 || datos[cont].dep>10); prom=prom+datos[cont].dep; } datos[cont].prom=prom/3; printf("promedio de el alumno es %.2f\n",datos[cont].prom); printf("Desea ingresar los datos de otro alumno\n"); printf("0.-no, 1.- si\n"); scanf("%d",&res); cont++; printf(" alumnos registrados %d\n",cont); *conta=cont; prom=0; }while(res!=0 && cont<max); }
//muestra todos los alumnos registrados// void todos(Datos datos[max],int *conta) //imprime todos lo alumnos registrados { int cont=0,i; cont=*conta; for(i=0;cont>i;i++) printf("N:%d %d: %s, %s, %s, %d, %c,%.2f\t\n",i+1,datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); printf("\n"); }
//lista de aprobados// void lista_a(Datos datos[max],int *conta) //imprime todos lo alumnos que tengan promedio mayor a 5 { int cont=0,i; cont=*conta; for(i=0;cont>i;i++) {if(datos.prom>=6) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); printf("\n"); } }
//lista de reprobados// void lista_r(Datos datos[max],int *conta) //imprime todos lo alumnos que tengan promedio menor a 6 { int i,cont=0; cont=*conta; for(i=0;i<cont;i++) {if(datos.prom<6) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); printf("\n"); } }
//promedio// void prom(Datos datos[max],int *conta) //suma el promedio de cada alumno y lo divide entre el total de alumnos registrados { int i,cont=0; float prome=0,pro=0; cont=*conta; for(i=0;i<cont;i++) prome=datos.prom+prome; pro=prome/(cont); printf("el promedio general de el grupo es %.2f \t\n\n",pro); }
void eliminar(Datos datos[max],int *conta) { int i, j, matricu, encontrado,cont=0; encontrado = 0; cont=*conta; printf("\nIngresa matricula: "); scanf("%d", &matricu); for (i=0; i<cont; i++) { if(datos.matricula == matricu) { //al encontrar la matricula la variable "encontrado" cambia de valor encontrado = 1; for(j=i; j<cont; j++) if (j+1 != cont) datos[j].matricula = datos[j+1].matricula; } } if (encontrado==1) { cont--; *conta=cont; printf("\nEl alumno con la matricula %d, fue eliminado del registro.\n",matricu); } else printf("\nEl alumno con la matricula %d, no fue encontrado en el registro.\n",matricu);
}
//*modulo de busqueda*// void busqueda(Datos datos[max],int *conta) {int i,matri=0,res,cont=0,a; cont=*conta; do{ a=0; printf("ingrese la matricula del alumno a buscar\n"); //al encontrar la matricula la variable "a" cambia de valor scanf("%d",&matri); for(i=0;i<cont;i++) if(matri==datos.matricula){ a=1; printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); } if(a==0){ printf("la matricula ingresada no es correcta o no existe ese alumno\t\n\n");} printf("desea buscar otro alumno\t\n"); printf("0.- no, 1.- si\n"); scanf("%d",&res); }while(res!=0); }
//consulta informacion de un alumno// void consulta(Datos datos[max],int *conta) { int x; do{ printf("Usted selecciono consulta de informacion\n"); printf("1.-Todos los alumnos\n"); printf("2.-Busqueda de un alumno\n"); printf("3.-Lista de reprobados\n"); printf("4.-Lista de aprobados\n"); printf("5.-Promedio Gral\n"); printf("6.-Salir al menu principal\n"); scanf("%d",&x); switch (x) { case 1: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono mostar todos lo alumnos registrados\n"); todos(datos,conta);//entra la estructura datos y el contador de alumnos e imprime a todos lo alumnos registrados break; case 2: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono buscar un alumno\n"); busqueda (datos,conta);//entra la estructura datos y el contador de alumnos y solo imprime los datos de alumno seleccionado break; case 3: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono mostrar todos los alumnos reprobados\n"); lista_r (datos,conta);//entra la estructura datos y el contador de alumnos e imprime a los alumnos reprobados break;
case 4: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono mostrar todos los alumnos aprobados\n"); lista_a (datos,conta);//entra la estructura datos y el contador de alumnos e imprime a los alumnos aprobados break;
case 5: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("Usted selecciono mostrar el promedio general de los alumnos\n"); prom (datos,conta);//entra la estructura datos y el contador de alumnos e imprime el promedio general de el gurpo break;
case 6: printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("selecciono salir al menu anterior\n"); break;
default: printf("por favor seleccione una opcion valida\n"); } }while(x!=6); }
void ordena(Datos datos[max],int *conta)//entra la estructura datos y el contador de alumnops y solo imprime lo que se pide { int i, x,j,cont=0; Datos aux; cont=*conta; do{ printf("desea ordenar por:\n"); printf("1.-Promedio\n"); printf("2.-Edad\n"); printf("3.-Nombre\n"); printf("4.-Matricula\n"); printf("5.-Salir\n"); scanf("%d",&x); switch (x){ case 1: printf("ordenamiento por Promedio\n"); for(i=0;i<cont;i++){ j=i; while(j>0 && datos[j].prom<datos[j-1].prom){ //se intercambian los elementos aux=datos[j]; datos[j]=datos[j-1]; datos[j-1]=aux; j--; } } for(i=0;i<cont;i++) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); break;
case 2: printf("Ordenamiento por Edad\n"); for(i=0;i<cont-1;i++){ for(j=cont-1;j>i;j--) {if(datos[j].edad < datos[j-1].edad){ //se intercambian los elementos aux=datos[j]; datos[j]= datos[j-1]; datos[j-1]=aux; } } } for(i=0;i<cont;i++) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); break;
case 3: printf("Ordenamiento por Nombre\n"); for(i=0;i<cont;i++)//Ciclo q realiza el proceso de ordenamiento for(j=cont-1;j>0;j--) if(strcmp(datos[j].alum.apellidop,datos[j-1].alum.apellidop)<0) { aux= datos[j]; datos[j]=datos[j-1]; datos[j-1]=aux;
} for(i=0;i<cont;i++) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom);
break;
case 4: printf("Ordenamiento por Matricula\n"); for(i=0;i<cont-1;i++){ for(j=cont-1;j>i;j--) { if (datos[j].matricula<datos[j-1].matricula){ //se intercambian los elementos aux=datos[j]; datos[j]=datos[j-1]; datos[j-1]=aux; } } } for(i=0;i<cont;i++) printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); break;
case 5: printf("selecciono salir al menu anterior\n"); break;
default: printf("error proporcione una opcion valida\n"); break;
} }while(x!=5); }
void modificar(Datos datos[max],int *conta) { int op=0; do { printf("MODIFICAR REGISTRO\n"); printf("************************\n"); printf("1.Modificar Nombre\n"); printf("2.Modificar Edad\n"); printf("3.Modificar Sexo\n"); printf("4.Modificar Calificaciones\n"); printf("5.-Salir al menu anterior\n"); printf("Ingrese opcion\n"); scanf("%d",& op); switch (op) { case 1: modi_nombre(datos,conta); break; case 2: modi_edad(datos,conta); break; case 3: modi_sexo(datos,conta); break; case 4: modi_cal(datos,conta); break; case 5: printf("selecciono Salir al menu anterior\n"); break; default: printf("Proporcione una opcion valida\n"); } }while(op!=5); }
void modi_nombre(Datos datos[max],int *conta) { int matri,res,a,cont,j,i; cont=*conta; printf("Modificar Edad\n"); todos(datos,conta); do{ a=0; printf("ingrese la matricula del alumno a buscar\n"); //al encontrar la matricula la variable "a" cambia de valor scanf("%d",&matri); for(j=0;j<cont;j++) if(matri==datos[j].matricula){ a=1; printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos[j].matricula, datos[j].alum.apellidop, datos[j].alum.apellidom, datos[j].alum.nombre,datos[j].edad, datos[j].sexo, datos[j].prom); printf("\n\tIngrese el nombre\n\t"); printf("Ingrese el apellido paterno del alumno\n"); scanf("%s",datos[j].alum.apellidop); for(i=0;i<strlen(datos[j].alum.apellidop);i++) datos[j].alum.apellidop=toupper(datos[j].alum.apellidop); printf("Ingrese el apellido materno del alumno\n"); scanf("%s",datos[j].alum.apellidom); for(i=0;i<strlen(datos[j].alum.apellidom);i++) datos[j].alum.apellidom=toupper(datos[j].alum.apellidom); printf("Ingrese el nombre del alumno\n"); scanf("%s",datos[j].alum.nombre); for(i=0;i<strlen(datos[j].alum.nombre);i++) datos[j].alum.nombre=toupper(datos[j].alum.nombre); guardar(datos,conta);} if(a==0){ printf("la matricula ingresada no es correcta o no existe ese alumno\t\n\n");} printf("desea buscar otro alumno\t\n"); printf("0.- no, 1.- si\n"); scanf("%d",&res); }while(res!=0); }
void modi_edad(Datos datos[max],int *conta) { int matri,res,a,cont,i; cont=*conta; printf("Modificar Edad\n"); todos(datos,conta); do{ a=0; printf("ingrese la matricula del alumno a buscar\n"); //al encontrar la matricula la variable "a" cambia de valor scanf("%d",&matri); for(i=0;i<cont;i++) if(matri==datos.matricula){ a=1; printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); do{ printf("ingrese la edad de el alumno\n"); scanf("%d",&datos.edad); if(datos.edad<1) printf("Error la edad debe ser mayor a 0\n"); }while(datos.edad<1); getchar(); guardar(datos,conta);} if(a==0){ printf("la matricula ingresada no es correcta o no existe ese alumno\t\n\n");} printf("desea buscar otro alumno\t\n"); printf("0.- no, 1.- si\n"); scanf("%d",&res); }while(res!=0); }
void modi_cal(Datos datos[max],int *conta) { int matri,res,a,j,cont,i; float prom=0; cont=*conta; printf("Modificar Calificacion\n"); todos(datos,conta); do{ a=0; printf("ingrese la matricula del alumno a buscar\n"); //al encontrar la matricula la variable "a" cambia de valor scanf("%d",&matri); for(j=0;j<cont;j++) if(matri==datos[j].matricula){ a=1; printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos[j].matricula, datos[j].alum.apellidop, datos[j].alum.apellidom, datos[j].alum.nombre,datos[j].edad, datos[j].sexo, datos[j].prom); for(i=0;i<3;i++){ do { printf("Ingrese la calificacion del departamental %d\n",i+1); scanf("%f",&datos[j].dep); if (datos[j].dep<0 ||datos[j].dep>10) printf("la calificacion debe estar entre 0 a 10\n"); } while(datos[j].dep<0 || datos[j].dep>10); prom=prom+datos[j].dep; } datos[j].prom=prom/3; printf("promedio de el alumno es %.2f\n",datos[j].prom); guardar(datos,conta); } if(a==0){ printf("la matricula ingresada no es correcta o no existe ese alumno\t\n\n");} printf("desea buscar otro alumno\t\n"); printf("0.- no, 1.- si\n"); scanf("%d",&res); }while(res!=0); }
void modi_sexo(Datos datos[max],int *conta) { int matri,res,a,cont,i; cont=*conta; printf("Modificar Sexo\n"); todos(datos,conta); do{ a=0; printf("ingrese la matricula del alumno a buscar\n"); //al encontrar la matricula la variable "a" cambia de valor scanf("%d",&matri); for(i=0;i<cont;i++) if(matri==datos.matricula){ a=1; printf("%d: %s, %s, %s, %d, %c,%.2f\t\n",datos.matricula, datos.alum.apellidop, datos.alum.apellidom, datos.alum.nombre,datos.edad, datos.sexo, datos.prom); printf("ingrese el sexo de el alumno(F/M)\n"); scanf("%c",&datos.sexo); if (datos.sexo!='M' && datos.sexo!='m' && datos.sexo!='F' && datos.sexo!='f'){ printf("proporcione el sexo correcto\n"); getchar();} datos.sexo=toupper(datos.sexo); guardar(datos,conta); } if(a==0){ printf("la matricula ingresada no es correcta o no existe ese alumno\t\n\n");} printf("desea buscar otro alumno\t\n"); printf("0.- no, 1.- si\n"); scanf("%d",&res); }while(res!=0); }
|