Red de Respuestas Legales - Derecho empresarial - Sistema de gestión de información del diseñador de cursos de lenguaje C

Sistema de gestión de información del diseñador de cursos de lenguaje C

Tengo un programa C para un sistema de gestión del desempeño estudiantil, que fue nuestro tema de diseño el año pasado para su referencia. Se siente lo mismo, básicamente lo mismo. Todavía tengo que escribir este diseño yo mismo. Sólo así podremos aprender bien C. El lenguaje C es muy útil y es la base de la lingüística. Debes ser estudiante de ingeniería, por eso es muy importante. Por ejemplo, en la Universidad de Tsinghua hay tres clases de lenguaje C en un semestre. Más tarde, todos tuvieron varios temas de diseño de cursos de este tipo y pudieron compilar cientos de líneas. No es que sean inteligentes, pero ciertamente no son estúpidos... así que todo es una cuestión de atmósfera e interés. Es correcto hacer más referencias. Pida prestados algunos libros relevantes de la biblioteca y busque en línea, pero no plagie los libros de otras personas. .....

Esto es para su referencia.

#incluye & ltstdio.h & gt

#incluye & ltconio.h & gt

#incluye & ltmalloc.h & gt

# include & ltstring.h & gt

estructura typedef estudiante

{

char número de estudiante[10] /*ID de estudiante */

char nombre del estudiante[20];/*nombre del estudiante*/

char nombre de la clase[20];/*nombre de la clase*/

marca flotante 1;/ *Nivel 1 */

Marca flotante 2; /*Segundo grado*/

Marca flotante 3 /*Tercer grado*/

Estudiante de estructura* Siguiente one;

}Estudiante;

Estudiante* headLink/*Puntero de encabezado de lista vinculada*/

/*La siguiente es la declaración de función*/

void ReadInfoFormFile(void);

void DesplayMenu(void);

void CreateHeadLink(void);

ESTUDIANTE * MallocNode(void);

void get information(STUDENT * t);

void OutputInformation(void);

void desplayfobystudentname(void);

void desplayfobystudentnumber(void);

void DesplayOneNode(estudiante * t);

void InsertOneNode(estudiante * t

void DeleteNodeBystudentNumber(void); p>

void ChangeMarkByName(void);

void ChangeMarkByNumber(void);

void SaveLinkToFile(void);

void DesplayMarkSegment(void);

void compositorbytolmark(void);

int select/*Se utiliza para aceptar la elección del usuario*/

/*Función principal*/

Principal ()

{

CreateHeadLink();

ReadInfoFormFile();

DesplayMenu();

}

/************************************

Función: leer la información del estudiante del archivo en la lista vinculada.

************************************/

void ReadInfoFormFile(void)

{

ARCHIVO * fp

Estudiante * p;

fp=fopen("estudiante.txt "," r ");

if (!fp)

{

Printf("El archivo no existe\n ");

Retorno;

}

p = MallocNode();

while(fscanf(fp, " %s%s%s%f%f " , p->Número de estudiante, p->Nombre del estudiante, p->Nombre de clase.

(p->mark1), (p->mark2) y (p->mark3))>0)

{

insertar nodo de tono (p);

p = MallocNode();

}

fclose(FP);

}

/**** ********************************

Función de función: mostrar menú, basado en la entrada del usuario.

Completa las funciones correspondientes.

************************************/

void DesplayMenu(void)

{

Estudiante* p;

Printf(" -Seleccione la función correspondiente);

Printf("| 1 Mostrar la información de todos los estudiantes | \ n ");

Printf("| 2 Consulta por nombre | \ n "); Presione Consulta de ID de estudiante | \ n ");

Printf("| 4Agregar estudiantes| \n ");

Printf("| 5Eliminar estudiantes| \n ");

Printf("| 6Modificar las calificaciones de los estudiantes por nombre| \ n ");

Printf("| 7Modificar las calificaciones de los estudiantes según el número de estudiante| \ n ");

Printf("| 8 Guardar toda la información de los estudiantes | \ n ");

Printf("| 9 Mostrar calificaciones de estudiantes excelentes y reprobados | \ n "); "| 10 Ordenar los resultados y generar los resultados | \ n ");

printf(" | 11 Salir | \ n \ n "); , & amp selección); /*Obtener la elección del usuario*/

Cambiar (seleccionar)

{

Caso 1:

información de salida();/*Mostrar información de todos los estudiantes*/

Pausa;

Caso 2:

desplayofbystudentname();

Break;

Caso 3:

desplayofbystudentnumber(); /*Mostrar información del estudiante según el número de estudiante ingresado por el usuario*/

Break;

Caso 4:

p = MallocNode(); /*Solicitar primero un nuevo nodo*/

GetInformation(p);/*Requerir que el usuario estar en el nuevo nodo Información de entrada*/

insertar nodo(p);/*Agregar nuevo nodo a la lista vinculada*/

Romper;

Caso 5:

DeleteNodeBystudentNumber();/*Eliminar estudiantes según el número de estudiante ingresado por el usuario*/

Break;

Caso 6:

ChangeMarkByName();/* Modificar las calificaciones del estudiante según el nombre ingresado por el usuario*/

Break;

Caso 7:

ChangeMarkByNumber ();/* Modificar el estudiante según el número de estudiante ingresado por el usuario Score*/

Break;

Caso 8:

SaveLinkToFile(); /*Guardar datos*/

Pausa;

p>

Caso 9:

DesplayMarkSegment() /*Mostrar las puntuaciones de los estudiantes de cada uno calificación*/

Pausa;

Caso 10:

compositorbytolmark();

Pausa;

Caso 11:

SaveLinkToFile(); /*Guardar datos antes de salir*/

Gratis(headLink);

Salir(1);

Interrupción;

Predeterminado:

Interrupción;

}

DesplayMenu(); /*llamada recursiva*/

}

/************ ************************* ***

Función: Crear encabezado de lista vinculada.

************************************/

void CreateHeadLink(void)

{

Estudiante* p;

p=(Estudiante*)malloc(sizeof(Estudiante));

headLink = p;

p->;siguiente = NULL

}

/*************** ***** *************************

Función: Solicitar nuevos nodos e inicializar.

************************************/

Estudiante*MallocNode(void)

{

Estudiante* p;

int I

p=(Estudiante*)malloc; (tamaño de (estudiante));

if(p==NULL)

Devolver NULL

for(I = 0;i<10;i++)

p->; número de estudiante[I]= '\ 0';

for(I = 0;i<20;i++)

p-> ;nombre del estudiante[ I]= ' \ 0 ';

for(I = 0;i<20;i++)

p->; nombre de clase[I]= ' \ 0 ';

p->;marca 1 = 0.0;

p->;marca2 = 0.0

p->;marca3 = 0.0

p- >;siguiente = NULL

Regresar p;

}

/****************** *** **********************

Función: Obtener la información del estudiante ingresada por el usuario.

************************************/

void GetInformation(estudiante*t)

{

Printf("Ingrese el número de estudiante:\ n ");

scanf("%s ", t-& gt; número de estudiante);

Printf("Ingrese el nombre del estudiante:\ n ");

scanf("%s ", t-& gt; estudiante nombre );

Printf("Ingrese la clase del estudiante: \ n ");

scanf("%s ", t-& gt; nombre de la clase

Printf("Ingrese el nivel 1:\ n ");

scanf("%f ", & amp(t->; marca 1)); Printf("Ingrese el segundo grado: \ n ");

scanf("%f ", & amp(t->; marca 2)); Por favor ingrese tercer grado: \ n ");

scanf("%f ", &(t->; mark 3));

}

/************************************

Función: Al final del enlace list Agregar un nodo.

************************************/

void InsertOneNode(ESTUDIANTE *t)

{

Estudiante * p;

p = headLink

mientras(p->; siguiente)

{

p = p-& gt; siguiente

}

p->; /p>

}

/************************************ * ***

Función: Muestra la información del estudiante según el nombre del estudiante ingresado por el usuario.

************************************/

void desplayfobystudentname(void)

{

Estudiante* p;

char nombre del estudiante[20];

char bandera = 0 ;

p = head link-& gt;Next;

Printf("Ingrese el nombre del estudiante:\ n ");

scanf("% s ", nombre del estudiante);

while(p)

{

if(strcmp(p-& gt; nombre del estudiante, nombre del estudiante)== 0)

{

Printf("ID de estudiante\tNombre\tClase\tGrado 1\tGrado 1\tGrado 3\tPuntuación total\tPuntuación promedio\n \ n \ "); /p>

Ir al nodo de reproducción (p);

flag = 1;

Romper

}

p = p-> next;

}

if (! flag)

Printf("Lo sentimos, no se llamó ningún % s \n "Estudiante nombrado

}

/****************************** ***** ********

Función: Muestra la información del estudiante según el ID del estudiante ingresado por el usuario

**********. *****************************/

void desplayfobystudentnumber(void)

{

Estudiante * p;

char número de estudiante[10];

char bandera = 0;

p = enlace principal-& gt; Bajar;

Printf("Ingrese el número de estudiante:\ n "

scanf("%s ", número de estudiante

); while(p )

{

if(strcmp(p-& gt; número de estudiante, número de estudiante)==0)

{

Printf("Número de estudiante\tNombre\tClase\tGrado 1\tGrado 1\tGrado 3\tPuntuación total\tPuntuación promedio\n\n\");

Ir al nodo de reproducción ( p) ;

flag = 1;

Pausa;

}

p = p-& gt;Siguiente;

p>

}

Si (! Flag)

Printf("Lo sentimos, no hay ningún estudiante con el número de estudiante %s \n ", número de estudiante);

}

/*** * ***********************************

Función: Genera la información de un nodo.

************************************/

Nodo de cancelación de reproducción no válido (estudiante *t)

{

printf("%s\t ",t-& gt; número de estudiante);

printf("%s\t ", t-& gt; nombre del estudiante);

printf("%s\t ", t-& gt; nombre de la clase); printf("%.2f\t ", t-& gt; marca 1);

printf("%.2f\t ", t-& gt; marca 2); p>printf("%.2f\t ",t-& gt;marca 3);

printf("%.2f\t ",t->marca 1+t->; marca 2+t-& gt; marca 3);

printf("%.2f\t\n ", (t-& gt; marca 1+t->; marca 2+t-& gt ;marca 3)/3);

}

/*************************** **** *************

Función: Eliminar estudiantes según el ID de estudiante ingresado por el usuario.

************************************/

void DeleteNodeBystudentNumber(void)

{

char número de estudiante[10];

Estudiante *p, * q;

char flag = 0;

Printf("Ingrese el número de estudiante que desea eliminar:"

scanf("%s ", número de estudiante

p = headLink

q = headLink-& gt; siguiente;

mientras(q)

{

if(strcmp( q-& gt; número de estudiante, número de estudiante)==0)

{

p->; siguiente = q-& gt; free(q);

flag = 1;

break;

}

p = p-> p>

q = q-& gt;Siguiente;

}

if(!flag)

{

Printf ("Estudiante sin este número de estudiante\ n ");

Regresar

}

Printf("Eliminado correctamente\ n ") ;

}

/************************************ ** *

Función: Mostrar información de todos los estudiantes.

************************************/

Mensaje de salida no válido (no válido)

{

Estudiante * p;

p = enlace principal-& gt; siguiente;

if(p==NULL)

{

Printf("No hay información del estudiante ahora, ingrese la información del estudiante primero \ n \ n "); > Return;

}

Printf("ID de estudiante\tNombre\tClase\tGrado 1\tGrado 1\tGrado 3\tPuntuación total\tPuntuación promedio\n \ n \ ");

while(p)

{

Ir al nodo de reproducción (p);

p = p- & gt;Siguiente;

}

}

/************************ ** **************

Función: Modificar el nivel según el nombre ingresado.

************************************/

void ChangeMarkByName(void)

{

estudiante* p;

char nombre del estudiante[20];

char bandera = 0 ;

float mark1, mark2, mark3

p = enlace principal-& gt; Next;

Printf("Ingrese el nombre del estudiante:\ n " );

scanf("%s ", nombre del estudiante);

while(p)

{

if(strcmp( p-& gt; nombre del estudiante, nombre del estudiante)==0)

{

Printf("Ingrese un nuevo nivel 1:\ n ");

scanf("%f ", & ampmark 1);

Printf("Ingrese el nuevo segundo grado:\ n ");

scanf("%f ", & ampmark 2);

Printf("Ingrese el nuevo tercer grado: \ n "

scanf("%f ", & ampmark 3);

p->; marca 1 = marca 1;

p->; marca2 = marca2

p->; marca3 = marca3

bandera = 1;

Printf("Modificación exitosa\n ");

Pausa;

}

p = p-& gt; Siguiente;

}

If (! flag)

Printf("Lo sentimos, no hay ningún estudiante llamado %s \n ", estudiante llamado

}

/************************************

Función: Modificar calificaciones según el número de estudiante ingresado

***************************. **. **********/

void ChangeMarkByNumber(void)

{

Estudiante * p;

char número de estudiante[20];

char flag = 0;

float mark1, mark2, mark3

p = enlace principal-& gt; ;

Printf("Ingrese el número de estudiante:\ n ");

scanf("%s ", número de estudiante

while(p)

p>

{

if(strcmp(p-& gt; número de estudiante, número de estudiante)==0)

{

Printf(" Ingrese el nuevo 1er grado:\n");

scanf("%f ", & ampmark 1);

Printf("Ingrese el nuevo 2do grado:\n ");

scanf("%f ", & ampmark 2);

Printf("Ingrese el nuevo tercer grado:\ n ") ;

scanf("%f ", & ampmark 3);

p->; marca 1 = marca 1

p->; mark2

p->; mark3 = mark3

flag = 1;

Printf("Modificación exitosa\ n ");

Romper;

}

p = p-& gt; siguiente;

}

if (! Flag)

Printf("Lo sentimos, no hay ningún estudiante con el número de estudiante %s \n ", número de estudiante);

}

/*** * ************************************

Función: guardar datos de la lista vinculada a un archivo.

************************************/

void SaveLinkToFile(void)

{

Estudiante * p;

ARCHIVO * fp

p = enlace principal-& gt; Siguiente;

if(p==NULL)

{

Printf("No hay información del estudiante ahora, ingrese primero la información del estudiante\ n \ n " );

Regresar;

}

fp=fopen("student.txt ", " w+");

Si ( ! fp)

{

Printf("El archivo no existe\n ");

Retorno;

}

mientras(p)

{

fprintf(fp, " %s %s %s %f %f %f\n ", p-& gt; número de estudiante, p-& gt; nombre del estudiante, p-& gt; nombre de la clase, p-& gt; p->mark2, p-& gt; -& gt; siguiente;

}

fclose(FP); ***************************

Función: Muestra las puntuaciones de los estudiantes sobresalientes y reprobados.

************************************/

void DesplayMarkSegment(void)

{

Estudiante * p;

int count = 0

p = enlace principal-&; gt; next;

printf("Las puntuaciones de los estudiantes por debajo de 60 (reprobados) son las siguientes: \ n "

Printf("ID del estudiante\tNombre\tClase\t); Grado 1\tGrado 1\tGrado 3\tPuntuación total\tPuntuación promedio\ n \ n \ ");

while(p)

{

if ( (6>((int)(p->marca 1/10)))|(6>((int)(p->marca 2/10)))|(6>((int)(p) -& gt;Nota 3/10)))/*Mientras una materia suspenda, se considerará que el estudiante ha suspendido*/

{

count++;

Ir al nodo de reproducción (p);

}

p = p-& gt;Siguiente;

}

Printf("%d estudiantes reprobaron-* * \n ",count);

p = enlace principal-& gt;Siguiente;

p>

Printf(" Los puntajes de los estudiantes con calificaciones excelentes son los siguientes:\ n ");

Printf("ID de estudiante\tNombre\tClase\tGrado 1\tGrado 1\tGrado 3 \tPuntuación total\tPuntuación promedio\ n \ n \ ");

cuenta = 0;

mientras(p)

{

Si ((8 & lt=( (int)(p-& gt; marca 1/10))& ​​​​amp&(8 & lt=((int)(p-& gt; marca 2/10 )))&&(8<= ((int)(p->mark3/10))))

{

count++;

Ir al nodo de reproducción (p);

}

p = p-& gt;Next;

}

Printf("Hay %d estudiantes con excelentes calificaciones\n ", contar);

}

/****************** ************* ********

Función: Ordenar por puntuación total

************ ********* *********************/

void compositorbytalmark(void)

{

Estudiante exchange, *r, *p, *q;

r = enlace principal-& gt; siguiente;

if(r==NULL)

{

Printf("Aún no hay información del estudiante, ingrese primero la información del estudiante\ n "

Regresar

}

While(r)/*Bucle While de dos niveles para implementar la clasificación*/

{

p = r;

q = r -& gt; siguiente;

mientras(q)

{

si ((q-& gt; marca 1+q->; marca 2 +q-> marca3)>(p->;marca 1+p->marca 2+p->marca3))

{

strcpy( exchange.studentNumber, q-> número de estudiante /*Copiar información del nodo Q para intercambiar*/ primero */

strcpy(exchange.studentName, q->student name);

strcpy(exchange.className); , q->nombre de clase);

marca de intercambio 1 = q->marca 1;

marca de intercambio 2 = q-& gt;

marca de intercambio 3 = q-& gt; marca 3;

strcpy(q-& gt; número de estudiante, p-& gt ; número de estudiante /*Luego copie la información del nodo P); a q*/

stracpy(q-& gt; nombre del estudiante, p-& gt; nombre del estudiante);

strcpy(q-& gt; nombre de la clase, p-& gt; nombre de clase);

q->; marca 1 = p-> marca 1; >

q->mark 3 = p->mark3;

stracpy(p->studentNumber , exchange . número de estudiante); /*Finalmente, copie la información del nodo de intercambio en p*/

strcpy(p-> nombre_estudiante, intercambio . nombre del estudiante

stracpy (p-> nombre_clase, intercambio . nombre de la clase); p->; marca 1 = marca de intercambio 1;

p->; marca 2 = marca de intercambio .

}

q = q-& gt;Siguiente;

}

r = r-& gt; p>

}

información de salida();

}

Le deseo éxito en el aprendizaje del lenguaje C. No estoy aquí para ganar puntos, solo quiero que sepas el verdadero significado de la universidad. ¡Este tipo de comida práctica puede hacerte madurar gradualmente!