åæ°åéï¼åªè½æè¿å¤äºæççè¿ä¸ª
http://wenku.baidu.com/view/92d3d138376baf1ffc4fad1a.html#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "mem.h" #include "ctype.h" /#include "alloc.h" #define N 3 typedef struct z1
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *delete(STUDENT *h);
void print(STUDENT *h); /* æ¾ç¤ºææè®°å½*/
void search(STUDENT *h); /*æ¥æ¾*/
void save(STUDENT *h); /*ä¿å*/
STUDENT *load(); /*读å
¥è®°å½*/
void computer(STUDENT *h); /*计ç®æ»åååå*/
STUDENT *insert(STUDENT *h); /*æå
¥è®°å½*/
void append(); /*追å è®°å½*/
void copy(); /*å¤å¶æ件*/
STUDENT *sort(STUDENT *h); /*æåº*/
STUDENT *index(STUDENT *h); /*ç´¢å¼*/
void total(STUDENT *h); /*åç±»å计*/
int menu_select(); /*èåå½æ°*/
/******主å½æ°å¼å§*******/
main()
{
int i;
STUDENT *head; /*é¾è¡¨å®ä¹å¤´æé*/
head=init(); /*åå§åé¾è¡¨*/
clrscr(); /*æ¸
å±*/
for(;;) /*æ é循ç¯*/
{
switch(menu_select()) /*è°ç¨ä¸»èåå½æ°ï¼è¿åå¼æ´æ°ä½å¼å
³è¯å¥çæ¡ä»¶*/
{ /*å¼ä¸åï¼æ§è¡çå½æ°ä¸åï¼break ä¸è½çç¥*/
case 0:head=init();break;
case 1:head=create();break;
case 2:head=delete(head);break;
case 3:print(head);break; /*æ¾ç¤ºå
¨é¨è®°å½*/
case 4:search(head);break; /*æ¥æ¾è®°å½*/
case 5:save(head);break; /*ä¿åæ件*/
case 6:head=load(); break; /*读æ件*/
case 7:computer(head);break; /*计ç®æ»åååå*/
case 8:head=insert(head); break; /*æå
¥è®°å½*/
case 9:copy();break; /*å¤å¶æ件*/
case 10:head=sort(head);break; /*æåº*/
case 11:append();break; /*追å è®°å½*/
case 12:head=index(head);break; /*ç´¢å¼*/
case 13:total(head);break; /*åç±»å计*/
case 14:exit(0); /*å¦èåè¿åå¼ä¸º14ç¨åºç»æ*/
}
}
}
/*èåå½æ°ï¼è¿åå¼ä¸ºæ´æ°*/
menu_select()
{
char *menu[]={"***************MENU***************", /*å®ä¹èåå符串æ°ç»*/
" 0. init list", /*åå§å*/
" 1. Enter list", /*è¾å
¥è®°å½*/
" 2. Delete a record from list", /*ä»è¡¨ä¸å é¤è®°å½*/
" 3. print list ", /*æ¾ç¤ºåé¾è¡¨ä¸ææè®°å½*/
" 4. Search record on name", /*æç
§å§åæ¥æ¾è®°å½*/
" 5. Save the file", /*å°åé¾è¡¨ä¸è®°å½ä¿åå°æ件ä¸*/
" 6. Load the file", /*ä»æ件ä¸è¯»å
¥è®°å½*/
" 7. compute the score", /*计ç®ææå¦ççæ»åååå*/
" 8. insert record to list ", /*æå
¥è®°å½å°è¡¨ä¸*/
" 9. copy the file to new file", /*å¤å¶æ件*/
" 10. sort to make new file", /*æåº*/
" 11. append record to file", /*追å è®°å½å°æ件ä¸*/
" 12. index on nomber", /*ç´¢å¼*/
" 13. total on nomber", /*åç±»å计*/
" 14. Quit"}; /*éåº*/
char s[3]; /*以å符形å¼ä¿åéæ©å·*/
int c,i; /*å®ä¹æ´å½¢åé*/
gotoxy(1,25); /*移å¨å
æ */
printf("press any key enter menu......\n"); /*åä»»ä¸é®è¿å
¥ä¸»èå*/
getch(); /*è¾å
¥ä»»ä¸é®*/
clrscr(); /*æ¸
å±å¹*/
gotoxy(1,1); /*移å¨å
æ */
textcolor(YELLOW); /*设置ææ¬æ¾ç¤ºé¢è²ä¸ºé»è²*/
textbackground(BLUE); /*设置èæ¯é¢è²ä¸ºèè²*/
gotoxy(10,2); /*移å¨å
æ */
putch(0xc9); /*è¾åºå·¦ä¸è§è¾¹æ¡â*/
for(i=1;i<44;i++)
putch(0xcd); /*è¾åºä¸è¾¹æ¡æ°´å¹³çº¿*/
putch(0xbb); /*è¾åºå³ä¸è§è¾¹æ¡ â*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*è¾åºå·¦åç´çº¿*/
gotoxy(54,i);putch(0xba);
} /*è¾åºå³åç´çº¿*/
gotoxy(10,20);putch(0xc8); /*è¾åºå·¦ä¸è§è¾¹æ¡â*/
for(i=1;i<44;i++)
putch(0xcd); /*è¾åºä¸è¾¹æ¡æ°´å¹³çº¿*/
putch(0xbc); /*è¾åºå³ä¸è§è¾¹æ¡â*/
window(11,3,53,19); /* å¶ä½æ¾ç¤ºèåççªå£ï¼å¤§å°æ ¹æ®èåæ¡æ°è®¾è®¡*/
clrscr(); /*æ¸
å±*/
for(i=0;i<16;i++) /*è¾åºä¸»èåæ°ç»*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置èæ¯é¢è²ä¸ºé»è²*/
window(1,1,80,25); /*æ¢å¤åçªå£å¤§å°*/
gotoxy(10,21); /*移å¨å
æ */
do{
printf("\n Enter you choice(0~14):"); /*å¨èåçªå£å¤æ¾ç¤ºæ示信æ¯*/
scanf("%s",s); /*è¾å
¥éæ©é¡¹*/
c=atoi(s); /*å°è¾å
¥çå符串转å为æ´å½¢æ°*/
}while(c<0||c>14); /*éæ©é¡¹ä¸å¨0~14ä¹é´éè¾*/
return c; /*è¿åéæ©é¡¹ï¼ä¸»ç¨åºæ ¹æ®è¯¥æ°è°ç¨ç¸åºçå½æ°*/
}
STUDENT *init()
{
return NULL;
}
/*å建é¾è¡¨*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENTæåç»æä½çæé*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*ç³è¯·ç©ºé´*/
if(!info) /*å¦ææéinfo为空*/
{
printf("\nout of memory"); /*è¾åºå
å溢åº*/
return NULL; /*è¿å空æé*/
}
inputs("enter no:",info->no,11); /*è¾å
¥å¦å·å¹¶æ ¡éª*/
if(info->no[0]=='@') break; /*å¦æå¦å·é¦å符为@åç»æè¾å
¥*/
inputs("enter name:",info->name,15); /*è¾å
¥å§åï¼å¹¶è¿è¡æ ¡éª*/
printf("please input %d score \n",N); /*æ示å¼å§è¾å
¥æ绩*/
s=0; /*计ç®æ¯ä¸ªå¦ççæ»åï¼åå¼ä¸º0*/
for(i=0;i<N;i++) /*Né¨è¯¾ç¨å¾ªç¯N次*/
{
do{
printf("score%d:",i+1); /*æ示è¾å
¥ç¬¬å é¨è¯¾ç¨*/
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i];
}
info->sum=s;
info->average=(float)s/N;
info->order=0;
info->next=h;
h=info; }
return(h); /*è¿å头æé*/
}
/*è¾å
¥å符串ï¼å¹¶è¿è¡é¿åº¦éªè¯*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*æ¾ç¤ºæ示信æ¯*/
scanf("%s",p); if(strlen(p)>count)printf("\n too long! \n"); }while(strlen(p)>count);
strcpy(s,p); }
void print(STUDENT *h)
{
int i=0; /* ç»è®¡è®°å½æ¡æ°*/
STUDENT *p; /*移å¨æé*/
clrscr(); /*æ¸
å±*/
p=h; /*åå¼ä¸ºå¤´æé*/
printf("\n\n\n****************************STUDENT********************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************\n");
}
/*å é¤è®°å½*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为æ¥æ¾å°è¦å é¤çç»ç¹æéï¼q为å
¶å驱æé*/
char s[11]; /*åæ¾å¦å·*/
clrscr(); /*æ¸
å±*/
printf("please deleted no\n"); /*æ¾ç¤ºæ示信æ¯*/
scanf("%s",s); /*è¾å
¥è¦å é¤è®°å½çå¦å·*/
q=p=h; /*ç»qåpèµåå¼å¤´æé*/
while(strcmp(p->no,s)&&p!=NULL) /*å½è®°å½çå¦å·ä¸æ¯è¦æ¾çï¼ææéä¸ä¸ºç©ºæ¶*/
{
q=p; /*å°pæéå¼èµç»qä½ä¸ºpçå驱æé*/
p=p->next; /*å°pæéæåä¸ä¸æ¡è®°å½*/
}
if(p==NULL) /*å¦æp为空ï¼è¯´æé¾è¡¨ä¸æ²¡æ该ç»ç¹*/
printf("\nlist no %s student\n",s);
else /*pä¸ä¸ºç©ºï¼æ¾ç¤ºæ¾å°çè®°å½ä¿¡æ¯*/
{
printf("*****************************have found***************************\n");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************\n");
getch(); /*åä»»ä¸é®åï¼å¼å§å é¤*/
if(p==h) /*å¦æp==hï¼è¯´æ被å ç»ç¹æ¯å¤´ç»ç¹*/
h=p->next; /*ä¿®æ¹å¤´æéæåä¸ä¸æ¡è®°å½*/
else
q->next=p->next; /*ä¸æ¯å¤´æéï¼å°pçå继ç»ç¹ä½ä¸ºqçå继ç»ç¹*/
free(p); /*éæ¾pææç»ç¹ç©ºé´*/
printf("\n have deleted No %s student\n",s);
printf("Don't forget save\n");/*æ示å é¤åä¸è¦å¿è®°ä¿åæ件*/
}
return(h); /*è¿å头æé*/
}
/*æ¥æ¾è®°å½*/
void search(STUDENT *h)
{
STUDENT *p; char s[15]; clrscr();
printf("please enter name for search\n");
scanf("%s",s); /*è¾å
¥å§å*/
p=h; /*å°å¤´æéèµç»p*/
while(strcmp(p->name,s)&&p!=NULL) /*å½è®°å½çå§åä¸æ¯è¦æ¾çï¼ææéä¸ä¸ºç©ºæ¶*/
p=p->next; /*移å¨æéï¼æåä¸ä¸ç»ç¹*/
if(p==NULL) /*å¦ææé为空*/
printf("\nlist no %s student\n",s); /*æ¾ç¤ºæ²¡æ该å¦ç*/
else /*æ¾ç¤ºæ¾å°çè®°å½ä¿¡æ¯*/
{
printf("\n\n*****************************havefound***************************\n");
printf("|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("********************************end*******************************\n");
}
}
/*æå
¥è®°å½*/
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info; /*pæåæå
¥ä½ç½®ï¼qæ¯å
¶å驱ï¼infoææ°æå
¥è®°å½*/
char s[11]; /*ä¿åæå
¥ç¹ä½ç½®çå¦å·*/
int s1,i;
printf("please enter location before the no\n");
scanf("%s",s); /*è¾å
¥æå
¥ç¹å¦å·*/
printf("\nplease new record\n"); /*æ示è¾å
¥è®°å½ä¿¡æ¯*/
info=(STUDENT *)malloc(sizeof(STUDENT)); /*ç³è¯·ç©ºé´*/
if(!info)
{
printf("\nout of memory"); /*å¦æ²¡æç³è¯·å°ï¼å
å溢åº*/
return NULL; /*è¿å空æé*/
}
inputs("enter no:",info->no,11); /*è¾å
¥å¦å·*/
inputs("enter name:",info->name,15); /*è¾å
¥å§å*/
printf("please input %d score \n",N); /*æ示è¾å
¥åæ°*/
s1=0; /*ä¿åæ°è®°å½çæ»åï¼åå¼ä¸º0*/
for(i=0;i<N;i++) /*Né¨è¯¾ç¨å¾ªç¯N次è¾å
¥æ绩*/
{
do{ /*对æ°æ®è¿è¡éªè¯ï¼ä¿è¯å¨0~100ä¹é´*/
printf("score%d:",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s1=s1+info->score[i]; /*计ç®æ»å*/
}
info->sum=s1; /*å°æ»ååå
¥æ°è®°å½ä¸*/
info->average=(float)s1/N; /*计ç®åå*/
info->order=0; /*å次èµå¼0*/
info->next=NULL; /*设å继æé为空*/
p=h; /*å°æéèµå¼ç»p*/
q=h; /*å°æéèµå¼ç»q*/
while(strcmp(p->no,s)&&p!=NULL) /*æ¥æ¾æå
¥ä½ç½®*/
{
q=p; /*ä¿åæépï¼ä½ä¸ºä¸ä¸ä¸ªpçå驱*/
p=p->next; /*å°æépå移*/
}
if(p==NULL) /*å¦æpæé为空ï¼è¯´æ没ææå®ç»ç¹*/
if(p==h) /*åæ¶pçäºhï¼è¯´æé¾è¡¨ä¸ºç©º*/
h=info; /*æ°è®°å½å为头ç»ç¹*/
else
q->next=info; else
if(p==h) {
info->next=p; h=info; }
else
{
info->next=p; q->next=info;
}
printf("\n ----have inserted %s student----\n",info->name); printf("---Don't forget save---\n"); /*æ示åç*/
return(h); /*è¿å头æé*/
}
/*ä¿åæ°æ®å°æ件*/
void save(STUDENT *h)
{
FILE *fp; /*å®ä¹æåæ件çæé*/
STUDENT *p; /* å®ä¹ç§»å¨æé*/
char outfile[10]; /*ä¿åè¾åºæ件å*/
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*æ示æ件åæ ¼å¼ä¿¡æ¯*/
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*为è¾åºæå¼ä¸ä¸ªäºè¿å¶æ件ï¼å¦æ²¡æå建ç«*/
{
printf("can not open file\n");
exit(1);
}
printf("\nSaving file......\n"); /*æå¼æ件ï¼æ示æ£å¨ä¿å*/
p=h; /*移å¨æéä»å¤´æéå¼å§*/
while(p!=NULL) /*å¦pä¸ä¸ºç©º*/
{
fwrite(p,sizeof(STUDENT),1,fp);/*åå
¥ä¸æ¡è®°å½*/
p=p->next; /*æéå移*/
}
fclose(fp); /*å
³éæ件*/
printf("-----save success!!-----\n"); /*æ¾ç¤ºä¿åæå*/
}
/* ä»æ件读æ°æ®*/
STUDENT *load()
{
STUDENT *p,*q,*h=NULL; /*å®ä¹è®°å½æéåé*/
FILE *fp; /* å®ä¹æåæ件çæé*/
char infile[10]; /*ä¿åæ件å*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*è¾å
¥æ件å*/
if((fp=fopen(infile,"rb"))==NULL) /*æå¼ä¸ä¸ªäºè¿å¶æ件ï¼ä¸ºè¯»æ¹å¼*/
{
printf("can not open file\n"); /*å¦ä¸è½æå¼ï¼åç»æç¨åº*/
exit(1);
}
printf("\n -----Loading file!-----\n");
p=(STUDENT *)malloc(sizeof(STUDENT)); /*ç³è¯·ç©ºé´*/
if(!p)
{
printf("out of memory!\n"); /*å¦æ²¡æç³è¯·å°ï¼åå
å溢åº*/
return h; /*è¿å空头æé*/
}
h=p; /*ç³è¯·å°ç©ºé´ï¼å°å
¶ä½ä¸ºå¤´æé*/
while(!feof(fp)) /*循ç¯è¯»æ°æ®ç´å°æ件尾ç»æ*/
{
if(1!=fread(p,sizeof(STUDENT),1,fp))
break; /*å¦æ没读å°æ°æ®ï¼è·³åºå¾ªç¯*/
p->next=(STUDENT *)malloc(sizeof(STUDENT)); /*为ä¸ä¸ä¸ªç»ç¹ç³è¯·ç©ºé´*/
if(!p->next)
{
printf("out of memory!\n"); return h;
}
q=p; p=p->next; }
q->next=NULL; /*æåä¸ä¸ªç»ç¹çå继æé为空*/
fclose(fp); /*å
³éæ件*/
printf("---You have success read data from file!!!---\n");
return h; /*è¿å头æé*/
}
/*追å è®°å½å°æ件*/
void append()
{
FILE *fp; /*å®ä¹æåæ件çæé*/
STUDENT *info; /*æ°è®°å½æé*/
int s1,i;
char infile[10]; /*ä¿åæ件å*/
printf("\nplease new record\n");
info=(STUDENT *)malloc(sizeof(STUDENT)); /*ç³è¯·ç©ºé´*/
if(!info)
{
printf("\nout of memory"); /*没æç³è¯·å°ï¼å
å溢åºæ¬å½æ°ç»æ*/
return ;
}
inputs("enter no:",info->no,11); /*è°ç¨inputsè¾å
¥å¦å·*/
inputs("enter name:",info->name,15); /*è°ç¨inputsè¾å
¥å§å*/
printf("please input %d score \n",N); /*æ示è¾å
¥æ绩*/
s1=0;
for(i=0;i<N;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&info->score[i]); /*è¾å
¥æ绩*/
if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0); /*æ绩æ°æ®éªè¯*/
s1=s1+info->score[i]; /*æ±æ»å*/
}
info->sum=s1; /*ä¿åæ»å*/
info->average=(float)s1/N; /*æ±åå*/
info->order=0; /*å次åå§å¼ä¸º0*/
info->next=NULL; /*å°æ°è®°å½å继æéèµå¼ä¸ºç©º*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*è¾å
¥æ件å*/
if((fp=fopen(infile,"ab"))==NULL) /*åäºè¿å¶æ件尾å¢å æ°æ®æ¹å¼æå¼æ件*/
{
printf("can not open file\n"); /*æ¾ç¤ºä¸è½æå¼*/
exit(1); /*éåºç¨åº*/
}
printf("\n -----Appending record!-----\n");
if(1!=fwrite(info,sizeof(STUDENT),1,fp)) /*åæ件æä½*/
{
printf("-----file write error!-----\n");
return; /*è¿å*/
}
printf("-----append sucess!!----\n");
fclose(fp); /*å
³éæ件*/
}
/*æ件æ·è´*/
void copy()
{
char outfile[10],infile[10];
FILE *sfp,*tfp; /*æºåç®æ æ件æé*/
STUDENT *p=NULL; /*移å¨æé*/
clrscr(); /*æ¸
å±*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n");
scanf("%s",infile); /*è¾å
¥æºæ件å*/
if((sfp=fopen(infile,"rb"))==NULL) /*äºè¿å¶è¯»æ¹å¼æå¼æºæ件*/
{
printf("can not open input file\n");
exit(0);
}
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*æ示è¾å
¥ç®æ æ件å*/
scanf("%s",outfile); /*è¾å
¥ç®æ æ件å*/
if((tfp=fopen(outfile,"wb"))==NULL) /*äºè¿å¶åæ¹å¼æå¼ç®æ æ件*/
{
printf("can not open output file \n");
exit(0);
}
while(!feof(sfp)) /*读æ件ç´å°æ件尾*/
{
if(1!=fread(p,sizeof(STUDENT),1,sfp))
break; /*å读*/
fwrite(p,sizeof(STUDENT),1,tfp); /*åå*/
}
fclose(sfp); /*å
³éæºæ件*/
fclose(tfp); /*å
³éç®æ æ件*/
printf("you have success copy file!!!\n"); /*æ¾ç¤ºæåæ·è´*/
}
/*æåº*/
STUDENT *sort(STUDENT *h)
{
int i=0; /*ä¿åå次*/
STUDENT *p,*q,*t,*h1; /*å®ä¹ä¸´æ¶æé*/
h1=h->next; /*å°å表ç头æéææçä¸ä¸ä¸ªç»ç¹ä½å¤´æé*/
h->next=NULL; /*第ä¸ä¸ªç»ç¹ä¸ºæ°è¡¨ç头ç»ç¹*/
while(h1!=NULL) /*å½å表ä¸ä¸ºç©ºæ¶ï¼è¿è¡æåº*/
{
t=h1; /*åå表ç头ç»ç¹*/
h1=h1->next; /*å表头ç»ç¹æéå移*/
p=h; /*设å®ç§»å¨æépï¼ä»å¤´æéå¼å§*/
q=h; /*设å®ç§»å¨æéqå为pçå驱ï¼åå¼ä¸ºå¤´æé*/
while(t->sum<p->sum&&p!=NULL) /*ä½æ»åæ¯è¾*/
{
q=p; /*å¾
æåºç¹å¼å°ï¼åæ°è¡¨æéå移*/
p=p->next;
}
if(p==q) /*p==qï¼è¯´æå¾
æåºç¹å¼å¤§ï¼åºæå¨é¦ä½*/
{
t->next=p; /*å¾
æåºç¹çå继为p*/
h=t; /*æ°å¤´ç»ç¹ä¸ºå¾
æåºç¹*/
}
else /*å¾
æåºç¹åºæå
¥å¨ä¸é´æ个ä½ç½®qåpä¹é´ï¼å¦p为空åæ¯å°¾é¨*/
{
t->next=p; /*tçå继æ¯p*/
q->next=t; /*qçå继æ¯t*/
}
}
p=h; /*å·²æ好åºç头æéèµç»pï¼åå¤å¡«åå次*/
while(p!=NULL) /*å½pä¸ä¸ºç©ºæ¶ï¼è¿è¡ä¸åæä½*/
{
i++; /*ç»ç¹åºå·*/
p->order=i; /*å°å次èµå¼*/
p=p->next; /*æéå移*/
}
printf("sort sucess!!!\n"); /*æåºæå*/
return h; /*è¿å头æé*/
}
/*计ç®æ»åååå¼*/
void computer(STUDENT *h)
{
STUDENT *p; /*å®ä¹ç§»å¨æé*/
int i=0; /*ä¿åè®°å½æ¡æ°åå¼ä¸º0*/
long s=0; /*æ»ååå¼ä¸º0*/
float average=0; /*åååå¼ä¸º0*/
p=h; /*ä»å¤´æéå¼å§*/
while(p!=NULL) /*å½pä¸ä¸ºç©ºæ¶å¤ç*/
{
s+=p->sum; /*ç´¯å æ»å*/
i++; /*ç»è®¡è®°å½æ¡æ°*/
p=p->next; /*æéå移*/
}
average=(float)s/i;/* æ±ååï¼åå为浮ç¹æ°ï¼æ»å为æ´æ°ï¼æ以åç±»å转æ¢*/
printf("\n--All students sum score is:%ld average is %5.2f\n",s,average);
}
/*ç´¢å¼*/
STUDENT *index(STUDENT *h)
{
STUDENT *p,*q,*t,*h1; /*å®ä¹ä¸´æ¶æé*/
h1=h->next; /*å°å表ç头æéææçä¸ä¸ä¸ªç»ç¹ä½å¤´æé*/
h->next=NULL; /*第ä¸ä¸ªç»ç¹ä¸ºæ°è¡¨ç头ç»ç¹*/
while(h1!=NULL) /*å½å表ä¸ä¸ºç©ºæ¶ï¼è¿è¡æåº*/
{
t=h1; /*åå表ç头ç»ç¹*/
h1=h1->next; /*å表头ç»ç¹æéå移*/
p=h; /*设å®ç§»å¨æépï¼ä»å¤´æéå¼å§*/
q=h; /*设å®ç§»å¨æéqå为pçå驱ï¼åå¼ä¸ºå¤´æé*/
while(strcmp(t->no,p->no)>0&&p!=NULL) /*ä½å¦å·æ¯è¾*/
{
q=p; p=p->next;
}
if(p==q) /*p==qï¼ {
t->next=p; h=t; }
else {
t->next=p; /*tçå继æ¯p*/
q->next=t; /*qçå继æ¯t*/
}
}
printf("index sucess!!!\n"); /*ç´¢å¼æåºæå*/
return h; /*è¿å头æé*/
}
/*åç±»å计*/
void total(STUDENT *h)
{
STUDENT *p,*q; /*å®ä¹ä¸´æ¶æéåé*/
char sno[9],qno[9],*ptr; /*ä¿åç级å·ç*/
float s1,ave; /*ä¿åæ»åååå*/
int i; clrscr(); /*æ¸
å±*/
printf("\n\n *******************Total*****************\n");
printf("---class---------sum--------------average----\n");
p=h; while(p!=NULL)
{
memcpy(sno,p->no,8); /*ä»å¦å·ä¸ååºç级å·*/
sno[8]='\0'; /*åå符串ç»ææ è®°*/
q=p->next; /*å°æéæåå¾
æ¯è¾çè®°å½*/
s1=p->sum; /*å½åç级çæ»ååå¼ä¸ºè¯¥ç级ç第ä¸æ¡è®°å½æ»å*/
ave=p->average; /*å½åç级çåååå¼ä¸ºè¯¥ç级ç第ä¸æ¡è®°å½åå*/
i=1; /*ç»è®¡å½åç级人æ°*/
while(q!=NULL) /*å
循ç¯å¼å§*/
{
memcpy(qno,q->no,8); /*读åç级å·*/
qno[8]='\0'; /*åå符串ç»ææ è®°*/
if(strcmp(qno,sno)==0) /*æ¯è¾ç级å·*/
{
s1+=q->sum; /*ç´¯å æ»å*/
ave+=q->average; /*ç´¯å åå*/
i++; /*ç´¯å ç级人æ°*/
q=q->next; /*æéæåä¸ä¸æ¡è®°å½*/
}
else
break; }
printf("%s %10.2f %5.2f\n",sno,s1,ave/i);
if(q==NULL)
break; else
p=q; }
printf("---------------------------------------------\n");
}