#include "stdio.h"
#include "string.h"
#include "conio.h"
int N=0;
struct stu
{
int xh; /*学号*/
char name[10]; /*姓名*/
double yy; /*英语*/
double mat; /*数学*/
double jsj; /*计算机*/
double wl; /*物理*/
double zf; /*总分*/
}s[20];
void Re_file()
{
FILE *fp;
fp=fopen("bjcjk.txt","r");
while( fscanf(fp,"%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n",
&s[N].xh,s[N].name,&s[N].yy,&s[N].mat,&s[N].jsj,&s[N].wl,&s[N].zf)!=EOF)
N++;
fclose(fp);
}
void Wr_file()
{
int i;
FILE *fp;
fp=fopen("nwejck.txt","w");
for(i=0;i<N;i++)
fprintf(fp,"%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n",
s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf);
fclose(fp);
}
void Js() /*计算总分*/
{
int i;
for(i=0;i<N;i++)
s[i].zf=s[i].yy+s[i].mat+s[i].jsj+s[i].wl;
}
void Sort() /*排序模块*/
{
int j,k;
double ave[20],t;
struct stu m;
Js();
for(k=0;k<N;k++)
ave[k]=s[k].zf/4; /*计算平均分*/
for(k=0;k<N-1;k++)
for(j=k+1;j<N;j++)
if(ave[k]<ave[j])
{
t=ave[k];ave[k]=ave[j];ave[j]=t; /*对平均分排序*/
m=s[k];s[k]=s[j];s[j]=m;
} /*按平均分整体排序*/
} void Disp() /*显示模块*/
{
int i;
printf("******************************************************************************\n");
printf("学号 姓名 英语 数学 计算机 物理 总分");
printf("******************************************************************************\n");
Js();
for(i=0;i<N;i++)
printf("%-13d %-10s %-3lf %-4lf% -11lf% -11lf %-13lf",
s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf);
getchar();
}
void Total() /*统计模块*/
{
double yyzf=0,yypj,wlzf=0,wlpj,matzf=0,matpj,jsjzf=0,jsjpj;
int i,j=0,n,o;
printf("===============================\n");
printf(" 请问你想看哪一门课的成绩?? \n");
printf("===============================\n");
printf("\t1.英语\t2.数学\t3.计算机\t4.物理\n:");
printf("\t\t\t\t\t");
scanf("%d",&n);
switch(n)
{
case 1:
{
printf("===============================================================================\n");
printf("学号 姓名 英语 数学 计算机 物理 总分\n");
printf("===============================================================================\n");
for(i=0;i<N;i++)
yyzf+=s[i].yy;
yypj=yyzf/i;
for(i=0;i<N;i++)
{
if(s[i].yy >=yypj)
{
j++;
printf("%d %s %f %f %f %f %f\n",
s[i].xh ,s[i].name ,s[i].yy ,s[i].mat ,s[i].jsj ,s[i].wl, s[i].zf);
}
}
printf("英语平均分=%f\t\t超过平均的人数为%d个\n",yypj,j);
getchar();break;
}
case 2:
{
printf("===============================================================================\n");
printf("学号 姓名 英语 数学 计算机 物理 总分\n");
printf("===============================================================================\n");
for(i=0;i<N;i++)
matzf+=s[i].mat ;
matpj=matzf/i;
for(i=0;i<N;i++)
{
if(s[i].mat >=matpj)
{
j++;
printf("%d %s %f %f %f %f %f\n",
s[i].xh ,s[i].name ,s[i].yy ,s[i].mat ,s[i].jsj ,s[i].wl, s[i].zf);
}
}
printf("==============================================================\n");
printf(" 数学平均分=%f\t超过平均的人数为%d个\n",matpj,j);
printf("==============================================================\n");
getchar();break;
}
case 3:
{
printf("===============================================================================\n");
printf("学号 姓名 英语 数学 计算机 物理 总分\n");
printf("===============================================================================\n");
for(i=0;i<N;i++)
jsjzf+=s[i].yy;
jsjpj=jsjzf/i;
for(i=0;i<N;i++)
{
if(s[i].jsj >=jsjpj)
{
j++;
printf("%d %s %f %f %f %f %f\n",
s[i].xh ,s[i].name ,s[i].yy ,s[i].mat ,s[i].jsj ,s[i].wl, s[i].zf);
}
}
printf("计算机平均分=%f\t超过平均分的人数为%d个\n",jsjpj,j);
getchar();break;
}
case 4:
{
printf("===============================================================================\n");
printf("学号 姓名 英语 数学 计算机 物理 总分\n");
printf("===============================================================================\n");
for(i=0;i<N;i++)
wlzf+=s[i].wl;
wlpj=wlzf/i;
for(i=0;i<N;i++)
{
if(s[i].wl >=wlpj)
{
j++;
printf("%d %s %f %f %f %f %f\n",
s[i].xh ,s[i].name ,s[i].yy ,s[i].mat ,s[i].jsj ,s[i].wl, s[i].zf);
}
}
printf("物理平均分=%f\t超过平均分的人数为%d个\n",wlpj,j);
getchar();break;
}
}
printf("要显示每一科的平均分吗??\t1、是\t2、否\n");
scanf("%d",&o); if(o==1)
{
yyzf=0;yypj=0;wlzf=0;wlpj=0;matzf=0;matpj=0;jsjzf=0;jsjpj=0;
for(i=0;i<N;i++)
wlzf+=s[i].wl;
wlpj=wlzf/(N-1);
for(i=0;i<N;i++)
jsjzf+=s[i].yy;
jsjpj=jsjzf/(N-1);
for(i=0;i<N;i++)
matzf+=s[i].mat ;
matpj=matzf/(N-1);
for(i=0;i<N;i++)
yyzf+=s[i].yy;
yypj=yyzf/(N-1);
printf("课程\t\t平均分\n");
printf("英语\t\t%f\n",yypj);
printf("数学\t\t%f\n",matpj);
printf("计算机\t\t%f\n",jsjpj);
printf("物理\t\t%f\n",wlpj);
}
}