⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 学生成绩系统.txt

📁 学生成绩管理器
💻 TXT
字号:
#include
 #include
 
 #define LEN sizeof(struct student)
 #define N 35
 #include
 #define NULL 0
 int n=0;
 char m[8]={'0','1','2','3','4','5','6','7'};
 int i;char c[10];char d[10];
 char fname[20],fname0[20],fname6[20]={"shanchu"};
 struct student
 {long num;
 char name[10];
 int eng;
 int math;
 int comp;
 int ave;
 int all;
 }p;

 void shuru()
 {FILE *fp;
  printf("\n\n\t请输入存储学生数据的文件名:");
  scanf("%s",fname);
  fp=fopen(fname,"w");
  printf("\t输入的数据之间请用跳格键(Tab)隔开\n\t每输入完一个学生的信按回车键(Enter)\n");
  printf("\t结束输入学生数据时,请输入一个学生的学号为0并按回车键\n");
  printf("\t学号 姓名 英语 数学 计算机\n");
  do{ printf("\t");
  scanf("%ld",&p.num);
  if(p.num==0) break;
  scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp);
  p.all=(p.eng+p.math+p.comp);
  p.ave=(p.all/3);
  fwrite(&p,LEN,1,fp);
  n++;
    }while(1);
  fclose(fp);
  }

  void chazhao()
  {char fname1[20];
  FILE *fp;
  do{printf("\n\n\t请输入查找学生数据的文件名:");
     scanf("%s",fname1);
     if(strcmp(fname1,fname)==0){fp=fopen(fname,"r");break;}
       else printf("\t你输入的文件不存在\n");}while(1);
  long number;
  do
   { printf("\t请输入要查找的学生的学号按回键(Enter):");
     scanf("%ld",&number); rewind(fp);
     for(i=0;i      { fread(&p,LEN,1,fp);
 if(number==p.num) { printf("\t学号 姓名 英语 数学   计算机 平均分 总? \n");
   printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
   }
       }

  printf("\t你还要查找吗?如果继续请输y'加回车键,否'n'加回车键:");
  scanf("%s",c);}while(c[0]=='y');
  fclose(fp);
  }


  void paixu()
  {FILE *fp;char fname3[20];struct student k[N];
  do{printf("\n\n\t请输入你要排序的学生数据的文件名:");
  scanf("%s",fname3);
  if(strcmp(fname3,fname)==0)
  {fp=fopen(fname,"r");break;}
  else printf("\t你输入的文件不存在\n");}while(1);
  rewind(fp);
  for(i=0;i  fread(&k[i],LEN,1,fp);
   int w,q,j,g,t,t2,t3,t4,t5;char z[10];long t1;
   for(q=0;q   {g=q;
  for(j=q+1;j  if(k[j].ave  t=k[g].ave;k[g].ave=k[q].ave;k[q].ave=t;
  t1=k[g].num;k[g].num=k[q].num;k[q].num=t1;
  t2=k[g].eng;k[g].eng=k[q].eng;k[q].eng=t2;
  t3=k[g].math;k[g].math=k[q].math;k[q].math=t3;
  t4=k[g].comp;k[g].comp=k[q].comp;k[q].comp=t4;
  t5=k[g].all;k[g].all=k[q].all;k[q].all=t5;
  for(w=0;w<10;w++)
  {z[w]=k[g].name[w];k[g].name[w]=k[q].name[w];k[q].name[w]=z[w];};
  }
  fclose(fp);
  printf("\n\n\t请输入存储排完序的数据的文件名\n\t注意此文件名和存储原始数据的文件名不相同\n");
  printf("\t");
  scanf("%s",fname0);
  fp=fopen(fname0,"w");
  for(i=0;i  fclose(fp);
  }

   void shuchu()
  {FILE *fp;char fname2[20];
   do{printf("\n\n\t请输入你要输出学生数据的文件名:");
   scanf("%s",fname2);
  if(strcmp(fname2,fname)==0){fp=fopen(fname,"r");break;}
  else if(strcmp(fname2,fname0)==0){fp=fopen(fname0,"r");break;}
  else if(strcmp(fname2,fname6)==0){fp=fopen(fname6,"r");break;}
  else printf("\t你输入的文件不存在\n");}while(1);
  rewind(fp);
  printf("\t学号 姓名 英语 数学 计算机 平均分 总分\n");
  printf("\t==============================================================\n");
  for(i=0;i  {fread(&p,LEN,1,fp);
   printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
  }
  printf("\t==============================================================\n");
  fclose(fp);}

  void tongji()
  {FILE *fp;char fname4[20];int e1=0,e2=0,e3=0,e4=0,e5=0;
   do{printf("\n\n\t请输入你要统计的学生数据的文件名:");
  scanf("%s",fname4);
  if(strcmp(fname4,fname)==0)
  {fp=fopen(fname,"r");break;}
  else printf("\t你输入的文件不存在\n");}while(1);
  rewind(fp);
  for(i=0;i  {fread(&p,LEN,1,fp);
    if(p.ave<=59&&p.ave>=0)e1=e1+1;
    if(p.ave<=69&&p.ave>=60)e2=e2+1;
    if(p.ave<=79&&p.ave>=70)e3=e3+1;
    if(p.ave<=89&&p.ave>=80)e4=e4+1;
    if(p.ave<=100&&p.ave>=90)e5=e5+1;
    }
   fclose(fp);
    printf("\t按平均分统计各分数段的学生人数         \n");
    printf("\t==============================================================\n");
    printf("\t分数段\t0--59\t60--69\t70--79\t80--89\t90--100        \n");
    printf("\t人 数 \t  %d\t  %d\t  %d\t  %d\t  %d\n",e1,e2,e3,e4,e5);
    printf("\t==============================================================\n");
   }

   void shanchu()
  {FILE *fp,*fp1;char fname5[20];long number;struct student M[N];
   printf("\n\t");
   do{printf("\n\t请输入你要删除学生数据的文件名:");
  scanf("%s",fname5);
  if(strcmp(fname5,fname)==0)
  {fp=fopen(fname,"r");break;}
  else printf("\n\t你输入的文件不存在 \n");}while(1);
  rewind(fp);
  fp1=fopen(fname6,"w");
  do{printf("\t请输入要删除数据的学生的学号并按回车键:");
     scanf("%ld",&number);
     for(i=0;i       {fread(&M[i],LEN,1,fp);
 if(M[i].num!=number)fwrite(&M[i],LEN,1,fp1);
       }
      n--;
      fcloseall();
      fp1=fopen(fname6,"r");fp=fopen(fname,"w");
      for(i=0;i      {fread(&M[i],LEN,1,fp1);fwrite(&M[i],LEN,1,fp);}
      fcloseall();
      printf("\t你还要删除吗?如果继续请输入'y'加回车键,否则'n'加回车键:");
      scanf("%s",c);
    }while(c[0]=='y');

  }

   void charu()
   {FILE *fp;char fname7[20];
    do{printf("\t请输入你要插入学生数据的文件名:");
    scanf("%s",fname7);
    if(strcmp(fname7,fname)==0){fp=fopen(fname,"r+");break;}
     else printf("\t你输入的文件不存在 ");}while(1);

 printf("\t请输入你要插入的数据\n\t输入的数据之间请用跳格键(Tab)隔开\n\t每输入完一个学生的数据按回车键(Enter) \n");
 printf("\t结束插入学生数据时,请输入一个学生的学号为0并按回车键\n");
 printf("\t学号\t姓名\t英语\t数学\t计算机 \n");
 do{fseek(fp,n*LEN,0);printf("\t");
    scanf("\t%ld",&p.num);
    if(p.num==0) break;
    scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp);
    p.all=(p.eng+p.math+p.comp);
    p.ave=(p.all/3);
    fwrite(&p,LEN,1,fp);
    n++;}while(1);
    fclose(fp);
  }


  void zhujiemian()
 {
 printf("\n\t                          主菜单                   \n");
 printf("\n");
 printf("\t============================================================== \n");
 printf("\n");
 printf("\t              1.数据输入               2.数据输出             \n");
 printf("\n");
 printf("\t              3.数据排序(按平均分)     4.数据查找(按学号)     \n");
 printf("\n");
 printf("\t              5.数据的插入             6.数据的删除(按学号)   \n");
 printf("\n");
 printf("\t              7.数据的统计(按平均分)? 0.退出         \n");
 printf("\n");
 printf("\t============================================================== \n");
 printf("\t请输入你的选择(0---7)并按回车键:");
 scanf("%s",d);
 }
  void main()
   {do
  {
  zhujiemian();
  if(d[0]==m[0])break;
  else if(d[0]==m[1]){shuru();printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");}
  else if(d[0]==m[2]){shuchu();}
  else if(d[0]==m[3]){paixu();}
  else if(d[0]==m[4]){chazhao();}
  else if(d[0]==m[5]){charu();}
  else if(d[0]==m[6]){shanchu();}
  else if(d[0]==m[7]){tongji();}
  else {printf("\t你的选择不正确!请重新选择! \n");

       }
 }while(1);
  printf("\n\t\n\t\n\t\n\t\n\t\n\t\n\t");
  printf("\t\t谢谢你的使用!!! 如果发现什么问题\n\t\t\t请联 系:E-mail:zhudepeng@sohu.com ") ;
 
 }

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -