¡Ayuda! Ayude a modificar el plan de diseño del curso de lenguaje C.
Información relacionada:
Un sistema de estadísticas de desempeño estudiantil hecho en lenguaje C
/*Programa fuente 11.3.2*/
/ * * * * * * * * * * * * * xuesheng c * * * * * * * * * */
/* * * * *Archivo de encabezado (.h)* * * * * * * */
#include "stdio.h" /*Funciones de E/S*/
#include "stdlib.h" /*Otros comentarios*/ p >
#include "string.h" /*Función de cadena*/
#Include "conio. h" /*Función de operación de pantalla*/
#include " mem. h" /*Función de operación de memoria*/
#include "ctype.h" /*Función de operación de caracteres*/
#include "alloc.h" /*Función de asignación de dirección dinámica */
# define N ^ 3/*Definir constantes*/
Typedef struct z1 /*Definir estructura de datos*/
{
Número de carácter[11];
nombre de carácter[15];
puntuación int[N];
Suma flotante;
Promedio flotante;
int orden;
struct z 1 * next;
}Estudiante;
/*a continuación está la función prototipo*/
Estudiante* init();/*Función de inicialización*/
Estudiante* create();/*Crear una lista enlazada*/
Estudiante*Eliminar(Estudiante*h);/*Eliminar registro*/
Nular impresión(Estudiante*h);/*Mostrar todos los registros*/
Nular búsqueda(Estudiante*h ); /*Buscar*/
void save(Estudiante* h); /*Guardar*/
Estudiante* cargar() /*Leer registros*/ p>;
void computer(estudiante * h);/*calcular puntaje total y puntaje promedio*/
estudiante * insertar(estudiante * h);/*insertar registro*/
void append();/*Registro adicional*/
void copy();/*Copiar archivo*/
Estudiante * sort (estudiante * h); /* Ordenar */
Indice de estudiante*(estudiante* h); /*Índice*/
void total(estudiante* h /*Número total por categoría*/ p>
int menu _ select();/*Función de menú*/
/* * * * * *Se inicia la función principal* * * * * *
Principal()
{
int I;
Estudiante*head;/*Puntero de encabezado de definición de lista vinculada*/
head = init() ;/* Inicializar la lista enlazada*/
clr SCR();/*Borrar la pantalla*/
for(;;)/*Bucle infinito*/
{
Switch(menu_select()) /*Llama a la función del menú principal y devuelve un número entero como condición de la instrucción Switch*/
{/*Los valores son diferentes Y las funciones ejecutadas también son diferentes.
break no se puede omitir*/
Caso 0: head = init(); break /*Realizar inicialización*/
Caso 1: head = create(); Crear una lista vinculada*/
Caso 2: head=delete (head); /*eliminar registro*/
Caso 3: print (head); mostrar todo Registro*/
Caso 4: Buscar (cabecera);*Buscar registro*/
Caso 5: Guardar (cabecera); /
Caso 6: head = load(); break; /*Leer archivo*/
Caso 7: Computadora (head /*Calcular puntaje total y puntaje promedio); * /
Caso 8: encabezado = insertar (encabezado); /*insertar registro*/
Caso 9: copiar(); /*copiar archivo*/< / p>
Caso 10: head = sort(head); /*sort*/
caso 11:append(); p >Caso 12: head=index (head); /*index*/
Caso 13: total (head); /*Número total por categoría*/
Caso 14: Salir (0); /*Si el valor de retorno del menú es 14, el programa finaliza*/
}
}
} p >
/*Función de menú, el valor de retorno es un número entero*/
menu_select()
{
char * menu[]= { * * * * * * * * * * * menú * * * * * * * * * * * * * * * * * * * *, /* define la matriz de cadenas del menú*/
" 0. Inicializar lista", /* Inicializar */
"1. Lista de entrada", /*Ingresar registro*/
"2 Eliminar registro de la lista", /*Desde. tabla Eliminar registros en */
"3. Imprimir lista", /*Mostrar todos los registros en una lista enlazada individualmente*/
"4. Buscar registros por nombre", /* Por nombre Buscar registros*/
"5. Guarde el archivo", /*Guarde los registros de la lista enlazada individualmente en un archivo*/
"6. Cargue el archivo" , /*Del archivo Leer registros en */
"7. Calcular puntuaciones", /*Calcular las puntuaciones totales y medias de todos los estudiantes*/
"8. Insertar registros en la lista",/ *Insertar registros en la tabla*/
"9. Copiar archivos a archivos nuevos", /*Copiar archivos*/
"10. files", /* Ordenar */
"11.Agregar registros al archivo", /*Agregar registros al archivo*/
"12.Indexar por número",/* indexar */
"13. Número total", /*Total por categoría*/
" 14. Salir" } /*Salir*/
char s[ 3]; /*Guardar el número de selección en forma de carácter*/
int c, I; /*Definir una variable entera*/
gotoxy(1, 25); /*Mover cursor*/
printf("Presione cualquier tecla para ingresar al menú...\n " /*Presione cualquier tecla para ingresar al menú principal*/
getch(); /*Ingresa cualquier clave*/
clr SCR(); /*Borrar la pantalla*/
gotoxy(1, 1); /
textcolor(amarillo);/*Establece el color de visualización del texto en amarillo*/
textbackground(blue);/*Establece el color de fondo en azul*/
gotoxy (10, 2); /*Mover el cursor*/
patch(0xc 9); /*Imprimir el borde de la esquina superior izquierda┏ */
<p>for(I = 1;i<44;i++)
patch(0x CD);/*Emite la línea horizontal del borde superior*/
patch(0x bb);/* Muestra el borde de la esquina superior derecha┓ */
for(I = 3;i<20;i++)
{
gotoxy(10,I);putch( 0x ba); /*Imprime la línea vertical izquierda*/
gotoxy(54, I); putch(0x ba);
}/*Imprime la línea vertical derecha*/ p>
gotoxy(10, 20); putch(0x c8); /*Importa el borde de la esquina superior izquierda┗ */
for(I = 1;I<44;i++) p>
patch(0x CD); /*Imprime la línea horizontal del borde inferior*/
patch(0x BC); /*Imprime el borde de la esquina inferior derecha ┛ */
<); p>Window (11, 3, 53, 19); /*Crea una ventana para mostrar el menú El tamaño de la ventana se diseña de acuerdo con el número de menús*/clr SCR(); /*Borrar la pantalla*/
for(I = 0;I<16;I++) /*Salir matriz del menú principal*/
{
gotoxy(10 , I+1);
cprintf("%s ", menú);
}
textbackground(negro); black*/
Ventana (1, 1, 80, 25); /*Restaurar el tamaño original de la ventana*/
gotoxy(10, 21); /
Hacer { p>
printf("\nIngrese su elección (0 ~ 14):" /*Mostrar información de solicitud fuera de la ventana del menú*/
scanf("%s ", s) ;/*Opciones de entrada*/
c = atoi(s);/*Convertir la cadena de entrada a un número entero*/
} while(c & lt; 0 | | c >;14);/*El elemento seleccionado no está entre 0 y 14.
Vuelva a ingresar*/
Volver a c /*Volver a la opción, el programa principal llama a la función correspondiente según el número*/
}
Estudiante *init()
{
Devolver NULL
}
/*Crear una lista enlazada*/
Estudiantes* crear ( )
{
int I; int s;
ESTUDIANTE *h=NULL, *info/*Puntero de estudiante a estructura */
for(;;)
{
info=(estudiante*)malloc(sizeof(estudiante));/*Espacio de aplicación*/
if (!Info) /*Si la información del puntero está vacía*/
{
printf("\nMemoria insuficiente"); */
Devolver NULL/*Devolver puntero nulo*/
}
Entrada ("Ingrese número:", información -& gt; No, 11) ; /*Ingrese el número de estudiante y marque */
if(info-& gt; no [0]=='@ ') delimitador /*Si el primer carácter del número de estudiante es @; la entrada termina */
Input("Ingrese el nombre:", información -> nombre, 15 /*Ingrese el nombre y verifique*/
printf("Por favor, ingrese %d); score\n " , N); /*Solicita comenzar a ingresar puntajes*/
s = 0; /*Calcula el puntaje total de cada estudiante, el valor inicial es 0*/
for(I = 0;I<n;I++) /*Recorrer N cursos N veces*/
{
Hacer {
printf("Puntuación % d:" , I+1); /* Preguntar a qué curso asistir */
scanf ("%d ", & amp information-> puntuación); /* Ingresar la puntuación */ p>
if(info->Puntuación>100 | |Información->Puntuación<0) /*Asegúrese de que la puntuación esté entre 0~100*/
printf("Datos incorrectos, repita la entrada\ n " );/*Mensaje de error*/
} while(info->score>100 | |info->score<0);
s = s+ info-& gt; Puntuaciones acumuladas de cada curso*/
}
Información-& gt;sum = s /*Guardar la puntuación total*/ p>
Información-> Promedio = (coma flotante) relación señal-ruido;/*Promedio*/
Información->Orden = 0;/*El valor antes de ordenar es 0 */
Información -> next = h; /*usa el primer nodo como nodo sucesor del nuevo nodo de entrada*/
h = info/*nuevo nodo de entrada Es el nuevo nodo principal*/
}
Return (h); /*Devuelve el puntero principal*/
}
/ *Ingresa una cadena y verifica su longitud*/
Entrada (char *pista, char *s, int count)
{
char p[255 ]
Hacer {
printf(prompt); /*Mostrar información de solicitud*/
scanf("%s ", p); (strlen(p)>count)printf("\n¡Demasiado largo! \n ");/*Comprueba la longitud y vuelve a ingresar*/
} while(strlen(p)>count);
strcpy(s, p);/* Convertir Copiar la cadena de entrada a la cadena s */
}
/*Imprimir la información del nodo en la lista vinculada*/
Deshabilitar la impresión (estudiante *h )
{
int I = 0 /*Número de registros estadísticos*/
<p>Estudiante* p; /*Mover el puntero*/
clr SCR(); /*Borrar la pantalla*/
p = h; puntero de cabeza*/
printf(" \ n \ n \ n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" | rec | nO | nombre | sc 1 | sc2 | suma | n ");
printf(" |-|-|-| -|-|- | \ n ");
Y (p!=null)
{
i++;
printf (" | % 3d | %-10s | %-15s | % 4d | % 4d | % 4d | % 4.2f | % 4.2f | % 3d | \n ",I,p->No,p-> Nombre,p ->puntuación[0],p->puntuación[1],
p->puntuación[2],p->suma,p->promedio,p- > Orden);
p = p->Siguiente;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * fin * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
}
/*Eliminar registro*/
Estudiante*Eliminar(Estudiante*h)
{
Estudiante *p, * q; /*p es el puntero del nodo que se eliminará, q es su puntero predecesor*/
char s[11];/*Almacenamiento estudiante number*/
clr SCR();/*Borrar pantalla*/
printf("Por favor eliminar\n");/*Mostrar información de solicitud */
scanf("%s ", s); /*Ingrese el número de estudiante del registro a eliminar*/
q = p = h /*Dar Q y P Asignar valor inicial*/
while(strcmp(p-& gt; No, s)&& ampp! =NULL) /*Cuando el número de estudiante registrado no es el que buscas, o el puntero no es nulo*/
{
q = p /*Asigna la P; valor del puntero a Q, como puntero predecesor de P*/
p = p-& gt Siguiente /* Apunta el puntero P al siguiente registro*/
}
If(p==NULL) /*Si p está vacío, el nodo no está en la lista enlazada*/
printf("\nlist no %s estudiante\n ", s);
De lo contrario /*p no está vacío, muestra la información del registro encontrado*/
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * Encontrado* * * * * * * * * * * * * * * * * * * * * * * * * * \n "); p>
printf(" | no | nombre | sc 1 | sc2 | sc3 | suma | ave | orden | \ n ");
>
printf(" |-|-|-|-|-|-|-|-|-| \ n ");
printf(" | %-10s | %-15s | % 4d | % 4d | % 4d | % 4.2f | % 4.2f | puntuación[0], p-> puntuación[1], p-> puntuación[2], p-> suma,
p->; /p>
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * fin * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n ");
getch();/*Después de presionar cualquier tecla, Eliminar*/ p>
If(p==h) /*Si p==h, el nodo eliminado es el nodo principal*/
h = p-& gt; puntero para apuntar al siguiente registro*/
Otros
q->;next = p-& gt;Next;/*No es el puntero principal, P's Se considera el nodo sucesor como nodo sucesor de Q*/
Free (p); /*Libera el espacio del nodo indicado por P*/
printf("\n%s estudiantes no fueron eliminados \ n ", s);
printf("No olvides guardar\n "); /*No olvides guardar el archivo después de eliminarlo*/
}
Retorno (h); /*Regresar puntero de cabeza*/
}
Otros relacionados:
/% BB % AA % C4 % CF % D0 % a 1% d 1% BC/blog/item/a5b F6 e 10 e0d 2d 104213 F2 ECD html
Descripción en lenguaje C del código fuente para estadística del rendimiento de los estudiantes
Solo como referencia, estudie por su cuenta.
Espero que esto ayude.