Resolver problemas de programación en lenguaje c
¿Por qué tantas preguntas? El software de gestión de información sobre el desempeño estudiantil es para usted.
Esto es lo que hice específicamente para la semana, jaja, lo estoy usando ahora
#include
#include
#include
void Menu(); //Menú principal
void Infobase() //Mantenimiento de información
void Find(); //Consulta de información
void InfoStat(); //Estadísticas de puntuación
void Comp() //Clasificación de puntuación
void Find_ID (); //Buscar por número de estudiante
void Find_name(); //Buscar por nombre
void Infobase_add() //Ingresar información
p>
void Infobase_amend(); //Modificar información
void Delete(); //Eliminar información
typedef struct //Renombrar la estructura de información del estudiante
{
char name[10]; //Nombre
char sex[3]; //Género
int ID; //Número de estudiante
int math; //Puntuaciones de matemáticas
int english; //Puntuaciones de inglés
int computer_C; //Puntuaciones de lenguaje C de computadora
int sum; / /Suma de calificaciones
}Estudiante;
void main()
{
int chg=1,n ;
printf("\t\tBienvenido a este sistema de gestión, para su uso normal, utilícelo en Depuración\n");
while(chg)
{
Menú();
scanf("%d",&n);
cambiar(n)
{
caso 1:
Infobase(); //Mantenimiento de la información
pausa;
caso 2:
Find( ); //Consulta de información
descanso;
caso 3:
InfoStat() //Estadísticas de puntuación
descanso;
caso 4:
Comp();
descanso; //clasificación de puntuación
caso 0:
chg=0; //Salir del menú
printf("(^_^)¡Gracias por usarlo! Adiós\n");
break;
predeterminado:
printf("(~_~) ¿Selección incorrecta (0~4)? Vuelva a introduzca \n");
}
}
getch();
}
/* * ***********************************Pantalla del menú principal********** ******** *************************************/
void Menú()
{
printf("\
t\t\t************************\n");
printf("\t\t\t** ** \n");
printf("\t\t\t** Menú principal**\n");
printf("\t\t\t ** **\n");
printf("\t\t\t************************\ n"); p>
printf("\t\t\t 1 Mantenimiento de información\n");
printf("\t\t\t 2 Consulta de información\n" );
printf("\t\t\t 3 Estadísticas de puntuación\n");
printf("\t\t\t 4 Clasificación de puntuación\n");
printf("\t\t\t 0 Salir del menú\n");
}
/********** ****** **********************Mantenimiento de información********************* ********* *************************/
void Infobase()
{
int n, cambio=1;
while(cambio)
{
printf("\t\t \t1 Ingresar información del estudiante\n");
printf("\t\t\t2 Modificar información del estudiante\n");
printf("\t\t\t3 Eliminar información del estudiante\n");
printf("\t\t\t0 Volver al menú principal\n");
scanf("%d",&n) ;
switch(n) p>
{
caso 1:
Infobase_add() //Ingrese información
break;
caso 2:
Infobase_amend(); //Modificar información
break;
caso 3: p>
Delete(); //Eliminar información
case 0:
chg=0; //Regresar al menú principal
break;
predeterminado:
printf("\t(~_~) Selección incorrecta, vuelva a ingresar\n:");
}
}
}
/****************************** Ingrese información****************** ******************************* *********/
void Infobase_add( )
{
Student stu[1] //Definir variable de matriz de Student p>
FILE* fp=NULL; //Declarar puntero de archivo
fp=fopen("Special Week.txt","a"); //Abrir en modo agregar
printf("\tIngrese nombre, sexo, número de estudiante, puntaje (matemáticas, idioma extranjero C) \n");
scanf("%s%s%d%d%d%d ", //Recibir entrada
stu[0].nombre,
stu[0].sexo,
&
amp;stu[0].ID,
&stu[0].matemáticas,
&stu[0].inglés,
&stu[0].computer_C );
stu[0].sum=stu[0].english+stu[0].computer_C+stu[0].math;//Calcular puntuación total
si (fprintf(fp," %s %s %d %d %d %d %d \n",//Procesamiento de prevención de errores de escritura en disco
stu[0].name,
stu[0].sexo,
stu[0].ID,
stu[0].matemáticas,
stu[0]. inglés,
stu[0].computer_C,
stu[0].sum)==0)
{
printf ("Error de escritura");
}
fclose(fp); //Cerrar el puntero del archivo
}
/* ***********************************Modificar información************ ****** *************************************/
void Infobase_amend()
{
int i,j;
char ch[10] //Declara una matriz de caracteres para guardar el nombre que necesita; a modificar
Student stu [50]; //Declarar matriz de tipo de estudiante
FILE* fp=NULL; //Declarar puntero de archivo
printf(" \tIngrese el nombre del estudiante a modificar");/ /Solicitar entrada
scanf("%s",ch); //Recibir nombre de entrada
fp=fopen ("Special Week.txt","rt+"); // Abierto para lectura y escritura
for(i=0;;i++)
{
fscanf(fp," %s %s %d %d %d %d %d ",//Leer del disco a la memoria
stu[i].name,
stu[i].sexo,
&stu[i].ID,
&stu[i].matemáticas,
&stu[i].inglés,
&stu[i].computer_C,
&stu[i].sum);
if(strcmp(stu[i].nombre,ch)== 0) //Determina si encontrar lo que necesitas
{
rewind(fp); //Mueve el puntero al principio del archivo
printf ("\tIngrese para modificar nombre, género, número de estudiante, puntaje (matemáticas, idioma extranjero C)\n" );
scanf("%s%s%d%d%d%d" , //Recibir entrada
stu[i].name,
stu[i].sex,
&stu[i].ID,
&stu[i].matemáticas,
&stu[i].inglés,
&stu[i].computer_C);
j=i ;
stu[i].sum=stu[i].english+stu[i].computer_C+stu[i].math;
for(i=0;i { fprintf(fp," %s %s %d %d %d %d %d \n",//Escribir datos originales en el disco stu [i].nombre, estu[i].sexo, estu[i].ID, estu[i].matemáticas, p> p> stu[i].inglés, stu[i].computer_C, stu[i].sum); } fprintf(fp," %s %s %d %d %d %d %d ",//Escribir datos modificados en el disco stu[i].name, stu[i].sexo, stu[i].ID, stu[i].matemáticas, stu [ i].english, stu[i].computer_C, stu[i].sum); fclose(fp); el puntero del archivo break; } } } /****** ** *******************************Eliminar información**************** ** ******************************/ void Delete() { int i,j,k=0; char ch[10] //Declara una matriz de caracteres para guardar el nombre a eliminar Student stu[50]; / /Declarar matriz de tipo de estudiante FILE* fp=NULL,*fp1=NULL //Declarar puntero de archivo printf("\tIngrese el nombre; del estudiante que se va a eliminar"); //Solicitar entrada scanf("%s",ch); //Recibir nombre de entrada fp=fopen("Semana especial .txt","rt+"); // Abierto para lectura y escritura for(i=0;!feof(fp);i++) { fscanf(fp," %s % s %d %d %d %d %d ",//Leer del disco a la memoria stu[i].name, stu[i].sexo, &stu[i].ID, &stu[i].matemáticas, &stu[i]. inglés, &stu[i ].computer_C, &stu[i].sum); if(strcmp(stu[i].nombre,ch )==0) //Determina si se encuentra el j=i; } rewind(fp); //Mueve el puntero a el principio for(;j { stu[j]=stu[j+1] //sobrescribir Avanzar los elementos que deben eliminarse } for(i=0;i fprintf(fp," %s %s %d %d %d %d %d \n", //Escribir en el disco stu[i].nombre, stu[i].sexo, stu[i].ID, stu[i].matemáticas, stu[i].inglés, stu[ i] .computer_C, stu[i].sum); } fclose(fp); /** ** *************************************Solicitud de información********* ******* *************************************/ void Find() { int n,chg=1; //Declarar variable chg para bucle while(chg) { printf("\t\t\t1 Buscar por número de estudiante\n"); printf("\t\t\t2 Buscar por nombre\n" ); printf("\t\t\t0 Volver al menú principal\n"); scanf("%d",&n); switch(n) { caso 1: Find_ID() //Llama a la función para buscar por ID de estudiante caso 2: Find_name(); //Llama a la función para buscar por nombre break; case 0: chg= 0; //Volver al menú principal break; default :printf("\n(~_~) Incorrecto selección, vuelva a ingresar\n"); } } } /******* ********************** **********Búsqueda por número de estudiante**************** ********************** ****************/ void Find_ID() { int n,i; Student stu[50]; //Declarar variable de matriz de tipo Student FILE* fp=NULL; //Declarar puntero de archivo printf("Ingrese el número de estudiante"); //Solicitar recibir entrada scanf("%d",&n); número de estudiante fp=fopen("Special Week.txt","rt "); //Abrir en modo de solo lectura for(i=0;!feof(fp) );i++) { if(fscanf( fp," %s %s %d %d %d %d %d \n", //Evita errores de lectura en la memoria stu[i].nombre, stu [i].sexo, &stu[i].ID, &stu[i].matemáticas, &stu[i].inglés, &st u[i].computer_C, &stu[i].sum)==0) printf("Error de lectura"); if( stu [i].ID==n) //Determinar si buscar estudiantes { printf("Buscar: %s Género %s ID de estudiante %d Matemáticas %d Extranjero idioma %d idioma C %d Puntuación total %d\n",//Objetivo de búsqueda de salida stu[i].name, stu[i].sex, p> p> stu[i].ID, stu[i].matemáticas, stu[i].inglés, stu [i ].computer_C, stu[i].sum); break; } if(feof(fp )) //Manejar situación no encontrada { printf("No existe dicha información del estudiante\n"); }fclose (fp); //Cerrar el puntero del archivo } /********************** ******** *****Buscar por nombre********************************** ******** ***********/ void Find_name() { int i; char ch [10]; //Declarar una matriz de caracteres para almacenar el nombre de búsqueda Estudiante stu[50] //Declarar una variable de matriz de Estudiante FILE* fp=NULL; //Declara el puntero del archivo printf("Por favor ingresa tu nombre\n"); //Solicita entrada scanf("%s", ch); //Recibir nombre de entrada fp=fopen("Special Weekly.txt","rt"); //Abrir en modo de solo lectura for(i= 0;!feof(fp);i++) //Bucle, finaliza el bucle con el puntero del archivo al final { fscanf(fp," %s %s %d %d %d %d %d ",//Leer del disco a la memoria stu[i].name, stu[i].sex, &stu[i].ID, &stu[i].matemáticas, &stu[i].inglés, &stu[i].computadora_C , &stu[i].sum); if(strcmp(stu[i].name,ch)==0) //Determinar si buscar estudiantes { printf("Encontrado: %s Género %s ID de estudiante %d Matemáticas %d Idioma extranjero %d Idioma C %d Puntuación total %d\n",//Objetivo de búsqueda de salida estudiante[i].nombre, estudiante[i].sexo, estudiante[i].ID, estudiante [i].matemáticas, stu[i].inglés, stu[i].computer_C, stu[i].sum); b reak; } if(feof(fp)) // Maneja la situación no encontrada { printf("No dicha información del estudiante\n"); } }fclose(fp); //Cerrar el puntero del archivo } /* *************************************Información Estadística********** ******** *************************************/ void InfoStat() { int n,m,i,count=0; char ch[15] //Declarar carácter matriz para guardar el nombre del curso Student stu[60] //Declarar variable de matriz de tipo de estudiante FILE* fp=NULL //Declarar puntero de archivo fp=fopen("Semana especial.txt ","rt"); //Abrir en modo de solo lectura printf("Ingrese el nombre del curso (Matemáticas, lengua extranjera C) y el segmento fraccionario (formato: Matemáticas x1-x2)\n"); scanf("%s",ch); //Recibir nombre del curso de entrada scanf("%d-%d" ,&n,&m); //Recibir segmento de puntuación de entrada for(i=0;!feof(fp);i++) //Finalizar el ciclo con el puntero del archivo al final del archivo p> { if(fscanf(fp ," %s %s %d %d %d %d %d \n", //Evita errores al leer en la memoria stu[i].nombre, stu[i].sexo, &stu[i].ID, &stu[i]. matemáticas, &stu[i].inglés, &stu[i].computadora_C, &stu[i].sum)==0) p> printf("Error de lectura"); count++; } fclose(fp); //Cerrar el puntero del archivo p> /****************** ****************El siguiente resultado encuentra el objetivo******* ********************************************/ printf("Nombre y género %s puntuación total\n",ch); for(i= 0;i if(strcmp(ch ,"Matemáticas")==0 && stu[i].math>=n && stu[i].math<=m) { printf("%s\ t%s\t%d\t%d\n", stu[i].nombre, stu[i].sexo, stu[i].math, stu[i].sum); } for(i=0;i if(strcmp(ch,"idioma extranjero")==0 && stu[i].engl ish>=n && stu[i].english<=m) { printf("%s\t%s\t%d\t%d\n" , stu[i].nombre, stu[i].sexo, stu[i].inglés, stu[i].sum); } for(i=0;i if(!strcmp(ch," C") && stu[i].computer_C>=n && stu[i].computer_C<=m) { printf("%s\t%s\t %d\t%d\n", stu[i].nombre, stu[i].sexo, stu[i]. inglés, stu[i].sum); } } /******** * **********************Ranking de resultados*************************** * *****************************/ void Comp() { p> int i,k,j,count=0; char ch[15]; //Declarar matriz de caracteres para guardar el nombre del curso Estudiante [50], temp; //Declarar variables de tipo Estudiante FILE *fp=NULL; //Declarar puntero de archivo printf("Ingrese el nombre del curso que necesita ser ordenado"); //Solicita entrada scanf("%s",ch); //Recibir el nombre del curso ingresado fp=fopen("Special Week.txt ","rt"); //Con Abrir el archivo en modo lectura for(i=0;!feof(fp);i++) //Finalizar el ciclo con el puntero del archivo al final { if (fscanf(fp," %s %s %d %d %d %d %d \n", //Evita errores al leer en la memoria stu[i].nombre, stu[i].sexo, &stu[i].ID, &stu[i] .matemáticas, &stu[i].inglés, &stu[i].computadora_C, &stu[i].sum)==0) printf("Lectura fallida"); count++; //Registra el número de estudiantes en el archivo } fclose( fp); //Cerrar el puntero del archivo if(strcmp (ch,"mathematics")==0) { for(i=0 ;i { k=i; for(j= i+1;j if(stu[k ].math& lt;stu[j].math) k=j; if(i!=k) { temp =stu[i]; stu[i]=stu[k]; stu[k]=temp; } } printf("Nombre, sexo, número de estudiante, matemáticas, idioma extranjero, lenguaje C, puntaje total, puntaje de matemáticas, clasificación\n"); for(i =0;i { printf("%-6s %4s %d %d %d %d %d %d\n", // Información de salida stu[i].name, stu[i].sex, stu[i].ID, stu[i].matemáticas, stu[i].inglés, stu[i].computadora_C, stu[i].sum, i+1); } } if(strcmp(ch,"idioma extranjero")==0) { for( i=0;i { k=i; for(j=i +1;j if(stu[k].english k=j; if(i!=k) { temp=stu[i]; stu[ i]=stu[k]; stu[k]=temp; } } printf("Nombre, género, número de estudiante, matemáticas, lengua extranjera, C, puntuación total, puntuación de lengua extranjera, clasificación\ n"); for(i=0;i { printf("%-6s %4s %d %d %d %d %d %d\n", //Información de salida stu[i].name , stu[i].sexo, stu[i].ID, stu[i].matemáticas, stu[i].inglés, stu[i].computer_C, stu[i].sum,i+1 }); p> } if(strcmp(ch,"C ")==0) { for(i=0;i< count-1;i++) //Lo siguiente es ordenar en orden descendente { k=i; for(j=i+1;j if(stu[k].computer_C k=j; if(i! =k) { temp=stu[i ]; st u[i]=stu[k]; stu[k]=temp; } } printf(" Nombre, sexo, número de estudiante, matemáticas, lengua extranjera C, puntuación total, puntuación de lengua C, clasificación\n"); for(i=0;i { printf("%-6s %4s %d %d %d %d %d %d\n", //Información de salida stu[i]. nombre, stu[i].sexo, stu[i].ID, stu[i].matemáticas, stu[i].english , stu[i].computer_C, stu[i].sum,i+1 } } }