Red de conocimiento informático - Conocimiento de Internet de las cosas - El sistema de gestión del desempeño estudiantil se ejecuta en el entorno TC en lenguaje C

El sistema de gestión del desempeño estudiantil se ejecuta en el entorno TC en lenguaje C

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

# incluir"string.h"

#include "mem.h"

#include "alloc.h"

#include "ctype.h" p>

#define N 3

typedef struct estudiante

{ char num[20];

char nombre[20];

char xi[10];

suma flotante;

promedio flotante;

orden int;

puntuación int [N ];

struct Student *next;

}ST;

main()

{ int i;

ST *init(), *create(), *delete(),*insert(), *sort(), *load(), *head,*index();

void print (),buscar(),guardar(),append(),total(),copiar();

int menu_select();

head=init();

p>

for(;;)

{

switch(menu_select())

{ caso 0:cabeza =init();romper;

caso 1:head=create();romper;

caso 2:print(head);romper;

caso 3:buscar(cabeza);

caso 4:cabeza=eliminar(cabeza);cortar;

caso 5:cabeza=insertar(cabeza);cortar;

caso 6: head=sort(head);break;

caso 7:save(head);break;

caso 8:head=load();break ;

caso 9:append();romper;

caso 10:head=index(cabeza);romper;

caso 11:total(cabeza) ;romper;

caso 12:copiar();romper;

caso 13:salir(0);

}

}

}

int menu_select()

{ char *menu[]={"************MENÚ** ********** ******",

"0.lista de inicio",

"1.Ingresar lista",

"2.imprimir lista",

"3.Buscar lista",

"4.Eliminar un registro de li

st",

"5.insertar registro en la lista",

"6.ordenar para crear un archivo nuevo",

"7.guardar el archivo" ,

"8.cargar el archivo",

"9.añadir registro al archivo" ,

"10.indexar el número",

"11.total del número",

"12.copiar el archivo a un archivo nuevo",

"13.Salir" } ;

char s[3];int c; int i;

gotoxy(1,25);

printf("presione cualquier tecla para ingresar al menú......\n ");

getch();

clrscr();

gotoxy(6,1);

textcolor(AMARILLO) ;

fondo de texto(GRIS CLARO);

gotoxy(16,2);

putch(0xc9);

for(i= 1;i<46;i++)

putch(0xcd);

putch(0xbb);

for(i=3;i<20;i++ )

{ gotoxy(16,i);parche(0xba);

gotoxy(62,i);parche(0xba);

}

gotoxy(16,20);putch(0xc8);

for(i=1;i<46;i++)

putch(0xcd); p>

putch(0xbc);

ventana(17,3,61,19);

fondo de texto(AZUL);

clrscr () ;

for(i=0;i<16;i++)

{ gotoxy(9,i+1);printf("%s",menú[i] ); }

fondo de texto(NEGRO);

ventana(1,1,80,25);

gotoxy(16,21);

do { printf("\n ingresa tu elección(0~13):");

scanf("%s",&s);

c=atoi (s );

}mientras(c<0||c>13);

return c;

}

ST *init()

{

return NULL;

}

ST *create()

{ int i , s;

ST *head=NULL,*info;

for(;;)

{ info=(ST *)malloc(sizeof (ST ));

si(!info)

{

printf("\n sin memoria");

return NULL;

}

inputs("ingrese num:",info->num,12 );

if(info->num[0]=='@') break;

inputs("ingrese nombre:",info->nombre,15);

inputs("ingrese xi:",info->xi,10);

printf("ingrese su puntuación \n",N);

s=0;

for(i=0;i

{ hacer { printf("puntuación %d:",i+1);

scanf("%d",&info->puntuación[i]);

if(info->puntuación[i]>100||info->puntuación[i]<0)

printf("datos incorrectos, repetición de entrada\n");

} while(info->score[i]>100||info->score[i]<0 );

s=s+info->puntuación[i];

}

info->suma=s;

info->avg=(float)s/N;

info->order=0;

info->next=head;

head=info ;

}

retorno (head);

}

entradas(char *prompt,char *s,int count)

{ char p[255];

hacer { printf(prompt);

scanf("%s",p);

if(strlen(p)>count) printf("\n demasiado largo \n");

} while(strlen(p)>count);

strcpy(s ,p);

}

impresión vacía(ST *cabeza)

{ int i=0,j=0;

ST *p,*q;

clrscr();

p=head;q=p;

printf("\n\n\n* *******************estudiante******************\n");

printf( "|rec|num | nombre |zhuanye |sc1|sc2|sc3| suma | promedio |orden|\n");

printf("|---|------ -- ----|---------------|--------|---|---|---|------ -| ------|-----|\n");

que

ile(p!=NULL)

{ i++;

printf("|%3d|%-12s|%-15s|%8s|%3d|%3d|%3d |%3.2f |%3.2f |%5d|\n",i,

p->num,p->nombre,p->xi,p->puntuación[0],p- >puntuación[1],p->puntuación[2],

p->suma,p->promedio,p->orden);

p=p->siguiente ;

}

printf("******************end************ *********\n");

printf("******************chongxiu******* ***** *********\n");

mientras(q!=NULL)

{ mientras(j

{ if(q->score[j]>=60)

j++;

else

{ printf(" |%-12s |%-15s| %8s|di%2d ke|\n",q->num,q->nombre,q->xi,j+1);j++; }

}

q=q->siguiente;j=0;

}

printf("****************** **fin** *******************\n");

}

búsqueda nula(ST *head )

{ ST *p;

char s[15];

clrscr();

printf("por favor ingrese su nombre para la búsqueda \n ");

scanf("%s",&s);

p=head;

while(strcmp(p-> nombre,s)&&p !=NULL)

p=p->siguiente;

if(p==NULL)

printf("\n lista no %s estudiante\ n",s);

else

{ printf("\n\n****************** **he encontrado******* ********\n");

printf("|num | nombre |zhuanye |sc1|sc2|sc3| suma | promedio | orden|\n");

printf("|----------|---------------|----- ---|---|-- -|---|-----|-----|-----|\n");

printf("| %10s|%-15s|%8s| %3d|%3d|%3d|%3.2f |%3.2f |%5d|\n",p->num,p->nombre,p->xi,

p->puntuación [0],p->puntuación[1],p->puntuación[2],p->suma,p-

>promedio,p->pedido);

printf("************************end****** ********** *******\n");

}

}

ST *eliminar(ST *cabeza)

{ ST *p,*q;

char s[12];

clrscr();

printf ("por favor elimine num \n");

scanf("%s",&s);

p=q=head;

while(strcmp). (p->num,s)&&p! =NULL)

{ q=p;

p=p->siguiente;

}

if(p==NULL )

printf("\n lista ningún %s estudiante\n",s);

else

{ printf("\n\n** *************he encontrado******************\n");

printf("|num | nombre | zhuanye |sc1 |sc2|sc3| suma | promedio |orden|\n");

printf("|---------- --|---------- -----|----------|---|---|---|------|- -----|-----|\n ");

printf("|%12s|%-15s|%8s|%3d|%3d|%3d|%4.2f |%4.2f |%5d|\n",p- >num,p->nombre,p->xi,

p->puntuación[0],p->puntuación[1], p->puntuación[2],p->suma,p ->promedio,p->orden);

printf("****************** ********fin************ ********\n");

getch();

if(p==head)

head=p-> siguiente;

else

q->next=p->siguiente;

free(p);

printf("\ n tiene eliminar num %s estudiante \n",s);

printf("no olvides guardar \n");

}

return (cabeza);

}

ST *insertar(ST *cabeza)

{ ST *p,*q,*info;

char s[12];

int s1,i;

printf( "ingrese la ubicación antes del número \n");

scanf( "%s",&s);

printf("\n por favor nuevo registro\n");

info=(ST *)malloc(sizeof(ST));

if(!info)

{ printf("\n sin memoria"); p>

return NULL;

}

entradas("ingrese num:",info->num,12);

entradas( "ingrese nombre:",info->nombre,15);

inputs("ingrese xi:",info->xi,10);

printf("ingrese su puntuación \ n",N);

s1=0;

for(i=0;i

{ hacer { printf( "puntuación %d:",i+1);

scanf("%d",&info->puntuación[i]);

if(info->puntuación[i ]> 100||info->puntuación[i]<0)

printf("datos incorrectos, entrada repetida\n");

} while(info->puntuación[ i] >100||info->puntuación[i]<0);

s1=s1+info->puntuación[i];

}

info ->sum=s1;

info->avg=(float)s1/N;

info->order=0;

info- >siguiente =NULL;

p=cabeza;

q=cabeza;

while(strcmp(p->num,s)&&p!=NULL)

{ q=p;

p=p->siguiente;

}

if(p==NULL)

if(p==head)

head=info;

else

q->next=info;

else

if(p==head){ info->next=p;head=info }

else{ info->next=p;q->siguiente; =info ; }

printf("\n----he insertado %s estudiantes----\n",info->nombre);

printf("- -- -no olvides guardar----\n");

return (head);

}

ST *sort(ST *cabeza )

{ int i=0;

ST *p,*q,*t,*h1;

h1=cabeza->siguiente;

p>

cabeza

->siguiente=NULL;

while(h1!=NULL)

{ t=h1;

h1=h1->siguiente;

p=cabeza;q=cabeza;

while(t->sumasuma&&p!=NULL){q=p;p=p->siguiente;}

if(p==q){t->next=p;head=t;}

else{t->next=p;q->next=t;}

}

p=cabeza;

while(p!=NULL){i++;p->order=i;p=p->siguiente;}

printf("clasificación exitosa!!!!\n");

return head;

}

void save (ST *head )

{ FILE *fp; ST *p;

char outfile[10];

printf("ingrese el nombre del archivo de salida, por ejemplo c:\\ f1\\te.txt:\n");

scanf("%s",&outfile);

if((fp=fopen(outfile,"wb")) ==NULL)

{ printf("no se puede abrir el archivo \n");

salir(1);

}

printf("\n guardando archivo....\n");

p=head;

while(p!=NULL){fwrite(p, sizeof(ST ),1,fp);p=p->siguiente;}

fclose(fp);

printf("----- guardado exitoso --- --" );

}

ST *load()

{ ST *p,*q,*head=NULL;

ARCHIVO *fp;char infile[10];

printf("ingrese el nombre del archivo, por ejemplo c:\\f1\\te.txt:\n");

scanf( "%s",&infile);

if((fp=fopen(infile,"rb"))==NULL)

{ printf("no se puede abrir el archivo \n ");

exit(1);

}

printf("\n-----cargando archivo!---- -\n ");

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

if(!p){printf("¡fuera de memoria!\n" );return cabeza;}

cabeza=p;

while(!feof(fp))

{ if(1!=fread(p,sizeof (ST) ,1,fp)) descanso;

p->siguiente=(ST

*)malloc(sizeof(ST));

if(!p->next){printf("fuera de memoria\n");return head;}

q= p;p=p->siguiente;

}

q->siguiente=NULL;

fclose(fp);

printf("----¡has leído correctamente los datos del archivo!---\n");

return head;

}

void append ()

{ ARCHIVO *fp;

ST *info; int s1,i;

char infile[10];

printf("\npor favor nuevo registro \n");

info=(ST *)malloc(sizeof(ST));

if(!info)

{ printf("\n fuera de memoria ");

return;

}

inputs("ingrese num:",info->num ,12);

inputs("ingrese nombre:",info->nombre,15);

inputs("ingrese xi:",info->xi,10);

printf("ingrese su puntuación \n",N);

s1=0;

for(i=0;i

{ hacer { printf("puntuación %d:",i+1);

scanf("%d",&info->puntuación[i]);

if(info->score[i]>100||info->score[i]<0)

printf("datos incorrectos, repetir entrada\n");

}mientras(info->puntuación[i]>100||info->puntuación[i]<0);

s1=s1+info->puntuación[i];

}

info->sum=s1;

info->avg=(float)s1/N;

info-> order=0;

info->next=NULL;

printf("ingrese el nombre del archivo, por ejemplo c:\\f1\\te.txt:\n");

scanf("%s",infile);

if((fp=fopen(infile,"ab"))==NULL)

{ printf("no se puede abrir el archivo \n");

salir(1);

}

printf("\n------ añadiendo

¡registro!-------\n");

if(1!=fwrite(info,sizeof(ST),1,fp))

{ printf( "------error de escritura de archivo-------");

return;

}

printf("--- - --append Success------\n");

fclose(fp);

}

ST *index(ST *head )

{ ST *p,*q,*t,*h1;

h1=head->siguiente;

head->siguiente=NULL;

while(h1!=NULL)

{ t=h1;

h1=h1->siguiente;

p=head

q=cabeza;

while(strcmp(t->num,p->num)>0&&p!=NULL)

{ q=p ; p=p->siguiente;

}

if (p==q)

{ t->siguiente=p;head=t }

else { t->next=p;q->next=t;}

}

printf("¡¡índice exitoso!!\n") ;

devolver cabeza;

}

anular total(ST *cabeza)

{ ST *p,*q;

char snum[14],qnum[14];

float s1,ave;

int i,m,n,k;

clrscr();

printf("\n\n******************total************ ****\ n");

printf("----clase----------suma-----------promedio--- --\n" );

p=head;

while(p!=NULL)

{ memcpy(snum, p->num, 10 );

snum[10]='\0';

q=p->siguiente;

s1=p->suma;

ave =p->promedio;

i=1;

while(q!=NULL);

{ memcpy (qnum, q ->num, 10 );

qnum[10]='\0';

k=0,m=0,n=0;

if( while(k <10){ snum[m]=qnum[n];k++;})

{ s1+=q->suma;

ave+=q-> promedio;

i++;

q=q->siguiente;

}

más

romper;

}

printf("%s %10.2f %5.2f\n",snum,s1,ave/i);

if(q==NULL)

romper;

else

p=q;

}

printf("---------- -------------------------------");

}

nulo copiar ()

{ char outfile[10],infile[10];

ARCHIVO *oldfp,*newfp;

ST *p=NULL;

p>

clrscr();

printf("ingrese el nombre del archivo, por ejemplo c:\\f1\\te.txt:\n");

scanf( "%s",infile);

if((oldfp=fopen(infile,"rb"))==NULL)

{ printf("no se puede abrir archivo de entrada\ n");

exit(0);

}

printf("ingrese el nombre del archivo de salida, por ejemplo c:\\f1\\ te.txt :\n");

scanf("%s",outfile);

if((newfp=fopen(outfile,"wb"))==NULL )

{ printf("no se puede abrir el archivo de salida\n");

exit(0);

}

mientras (!feof (oldfp))

{ if(1!=fread(p,sizeof(ST),1,oldfp))

break;

fwrite(p ,sizeof(ST),1,newfp);

}

fclose(oldfp);

fclose(newfp);

printf("¡¡¡Has copiado correctamente el archivo!!!!\n");

}