本站提供最佳棋牌游戏源码宝塔服务,欢迎转载和分享。

【_123的源码】【lsi源码】【黑猫源码】查成绩源码_成绩查询源码

2024-12-23 23:00:37 来源:宝塔本地测试源码 分类:综合

1.��ɼ�Դ��

查成绩源码_成绩查询源码

��ɼ�Դ��

       #include "stdio.h"

       #include "stdlib.h"

       #include "conio.h"

       #include "math.h"

       #include "ctype.h"

       #include "string.h"

       #define MAX 4

       #define TERM 6

       struct STUD{

       unsigned number;

       char name[];

       unsigned score[MAX];

       float average;

       struct STUD *next;

       };

       struct CLASS{

       unsigned no;

       unsigned students;

       float score[MAX];

       float average;

       struct STUD *first;

       };

       //输出所有学生的查成_123的源码成绩及名次

       void output(struct CLASS *pclass)

       {

       struct STUD *p;

       int n=0;

       printf("Class:%u\t number of students:%u\n",pclass->no ,pclass->students );

       printf("number name math physics politics "

       "english average place\n");

       for(n=1,p=pclass->first ;p!=NULL;p=p->next ,++n)

       printf("%-8u%-s%-8u%-8u%-8u%-8u%-.2f%-d\n",

       p->number ,p->name ,p->score[0] ,p->score [1],

       p->score [2],p->score [3],p->average ,n);

       }

       //按平均成绩排序

       void sort(struct CLASS *pclass)

       {

       struct STUD *p, *next, *last;

       int m,n;

       for(m=0;m<pclass->students -1;m++)

       for(last=p=pclass->first ,n=0;n<pclass->students-1-m;

       n++,last=p,p=p->next)

       if(p->average<p->next->average){

       next=p->next;

       if(p!=pclass->first)

       last->next=next;

       else

       pclass->first=next;

       next->next=p;

       p=next;

       }

       }

       char *cou[MAX]={ "math","phusics","politics","english"};

       //将链表所有接点写入文件

       void write_file(struct CLASS *pclass,FILE *myfile)

       {

       struct STUD *p;

       for(p=pclass->first;p!=NULL;p=p->next)

       fwrite(p,sizeof(struct STUD),1,myfile);

       }

       //从文件中读数据重建链表

       void read_file(struct CLASS *pclass,FILE *myfile)

       {

       struct STUD buf,*p,*tail;

       int n;

       for(tail=pclass->first ,n=0;n<pclass->students ;tail=p,++n){

       if(fread(&buf,sizeof(struct STUD),1,myfile)!=1){

       pclass->students =n;

       break;

       }

       p=(struct STUD *) malloc(sizeof(struct STUD));

       *p=buf;

       //连接成先进先出链表

       if(pclass->first==NULL)

       pclass->first =p;

       else

       tail->next =p;

       p->next =NULL;

       }

       }

       //增加信息

       void insert(struct CLASS *pclass)

       {

       struct STUD *p,*current,*last;

       int k,ch,flag;

       do{

       p=(struct STUD *) malloc(sizeof(struct STUD));

       printf("\ninput number and name of student:");

       scanf("%u%s",&p->number ,p->name );

       while(1){

       for(flag=1,k=0;k<MAX;++k){

       printf("\niput %s:",cou[k]);

       scanf("%u",&p->score[k]);

       if(p->score[k]>)

       flag=0;

       }

       if(flag) break;

       printf("score error\n");

       }

       p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4;

       //找插入点

       for(last=current=pclass->first;current->next&¤t->average>p->average;

       last=current,current=current->next );

       if(current->next ==NULL&¤t->average>p->average){

       p->next =NULL;

       current->next =p;

       }

       else{

       p->next =current;

       if(current==pclass->first)

       pclass->first =p;

       else

       last->next =p;

       }

       pclass->students ++;

       printf("continue?(y/n)");

       while(isspace(ch=getchar()));

       }while (ch=='y'||ch=='Y');

       }

       //删除学生

       void delete_stu(struct CLASS *pclass)

       {

       unsigned ch;

       struct STUD *current,*last,*p;

       do{

       printf("\ninput number of student:");

       scanf("%u",&p->number,&ch);

       for(last=current=pclass->first;current!=NULL&¤t->number!=ch;

       last=current,current=current->next);

       if(current!=NULL){

       if(current!=pclass->first)

       last->next=current->next;

       else

       pclass->first=current->next;

       free(current);

       pclass->students--;

       }

       else

       fprintf(stderr,"error:number of student!\n");

       printf("continue?(y/n)");

       while(isspace(ch=getchar()));

       }while (ch=='y'||ch=='Y');

       }

       void create(struct CLASS *pclass)

       {

       struct STUD *p,*tmp=NULL;

       int n=0,k,ch,flag;

       do{

       p=(struct STUD *) malloc(sizeof(struct STUD));

       printf("\ninput number and name of student:");

       scanf("%u%s",&p->number ,p->name );

       while(1){

       for(flag=1,k=0;k<MAX;++k){

       printf("\niput %s:",cou[k]);

       scanf("%u",&p->score[k]);

       if(p->score[k]>)

       flag=0;

       }

       if(flag) break;

       printf("score error\n");

       }

       p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4;

       p->next =pclass->first ;

       pclass->first =p;

       ++n;

       printf("continue?(y/n)");

       while(isspace(ch=getchar()));

       }while (ch=='y'||ch=='Y');

       pclass->students =n;

       }

       //计算平均分

       void average(struct CLASS *pclass)

       {

       static double general[MAX],g;

       struct STUD *p;

       int i;

       for(p=pclass->first;p!=NULL;p=p->next)

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

       general[i]+=p->score[i];

       printf("\n math physics politics english\n");

       for(i=0;i<MAX;++i){

       pclass->score[i]=general[i]/pclass->students ;

       printf("%.2f",pclass->score[i]);

       g+=general[i];

       }

       pclass->average =g/(MAX*pclass->students );

       printf("\ngeneral average:%.2f\n",pclass->average );

       }

       void main()

       {

       struct CLASS cla;

       FILE *fp;

       int flag=1,k;

       char c,*menu[]={

       "\n1:insert a student\n",

       "2:delete a student\n",

       "3:save into file\n",

       "4:print class score list\n",

       "5:stat average\n",

       "0:exit\n",

       "\nselect[0-6]:"

       };

       if((fp=fopen("students.dat","rb"))==NULL){

       printf("input number of class:");

       scanf("%u",&cla.no);

       cla.students=0;

       cla.first=0;

       create(&cla);

       sort(&cla);

       }

       else{

       fread(&cla,sizeof(struct CLASS),1,fp);

       cla.first=NULL;

       read_file(&cla,fp);

       fclose(fp);

       }

       while(flag){

       for(k=0;k<=TERM;k++)

       printf("%s",menu[k]);

       scanf("%d",&k);

       switch (k){

       case 1:

       insert(&cla);

       break;

       case 2:

       delete_stu(&cla);

       break;

       case 3:

       if((fp=fopen("students.dat","wb"))==NULL){

       fprintf(stderr,"error:can't create file students!\n");

       return;

       }

       fwrite(&cla,sizeof(struct CLASS),1,fp);

       write_file(&cla,fp);

       fclose(fp);

       break;

       case 4:

       output(&cla);

       break;

       case 5:

       average(&cla);

       break;

       case 0:

       printf("save yout change?(y/n)");

       scanf("%c%*c",&c);

       c=='y'||c=='Y'?(c=1):(c==0);

       if(c){

       if((fp=fopen("students.dat","wb"))==NULL){

       fprintf(stderr,"error:can't create file students!\n");

       return;

       }

       rewind(fp);

       fwrite(&cla,sizeof(struct CLASS),1,fp);

       write_file (&cla,fp);

       fclose(fp);

       }

       flag=0;

       break;

       default:

       fprintf(stderr,"select error!\n");

       }

       }

       }

【本文网址:http://04.net.cn/html/62f469695241.html 欢迎转载】

copyright © 2016 powered by 皮皮网   sitemap