#include<stdio.h>
#define N 5
#define M 50
void cover()
{
printf("--------------------------------\n");
printf(" 班级成绩管理系统 \n");
printf("| 版本号V1.0 |\n");
printf("| 开发日前:2014年 |\n");
printf("--------------------------------\n");
}
void input(float a[][N+4],int m,int n)
{
int i,j;
printf("成绩输入开开始....\n");
printf("请依次输入对应学生%d门课程的成绩\n",n);
printf("学号\t各科成绩\n");
for(i=0;i<m;i++)
{
printf("%d",i+1);
a[i][0]=i+1;
for(j=1;j<=n;j++)
{
printf("\t课程%d:",j);
scanf("%f",&a[i][j]);
}
a[i][n+1]=0;a[i][n+2]=0;a[i][n+3]=0;
}
printf("成绩录入结束,单击任意键结束.....\n");
getch();
}
int select()
{
int x;
printf("你好,本系统主要有如下功能\n");
printf("\t\t0:计算每个学生的总分和平均分\n");
printf("\t\t1:按学号显示班级学生的各科成绩\n");
printf("\t\t2:计算每门课程的平均分,最高分和最低分\n");
printf("\t\t3:按照总分从高分到低分显示学生成绩——排出名次\n");
printf("\t\t4:统计课程的及格率和优秀率\n");
printf("\t\t5:统计课程不及格人数,并打印不及格学生名单\n");
printf("\t\t6:退出\n");
do
{
printf("请选择:");
scanf("%d",&x);
if(x<0||x>6)
printf("对不起,你的输入有误,请从新输入:");
else return x;
}while(1);
}
void show(float a[][N+4],int m,int n)
{
int i,j;
printf("\t\t班级学生所有课程成绩表\n");
printf("\t学号\t");
for(i=1;i<=n;i++)
printf("课程%d\t",i);
printf("总分\t平均分\n");
for(i=0;i<m;i++)
{
printf("\t%.0f\t",a[i][0]);
for(j=1;j<=n;j++)
printf("%.1f\t",a[i][j]);
printf("%.1f\t%.1f\t",a[i][n+1],a[i][n+2]);
printf("\n");
}
}
void compute(float a[][N+4],int m,int n)
{
int i,j;
printf("正在计算每个学生的总分和平均分,请稍等....\n");
for(i=0;i<m;i++)
{
for(j=1;j<=n;j++)
a[i][n+1]+=a[i][j];
a[i][n+2]=a[i][n+1]/n;
}
}
#define N 5
#define M 50
void cover()
{
printf("--------------------------------\n");
printf(" 班级成绩管理系统 \n");
printf("| 版本号V1.0 |\n");
printf("| 开发日前:2014年 |\n");
printf("--------------------------------\n");
}
void input(float a[][N+4],int m,int n)
{
int i,j;
printf("成绩输入开开始....\n");
printf("请依次输入对应学生%d门课程的成绩\n",n);
printf("学号\t各科成绩\n");
for(i=0;i<m;i++)
{
printf("%d",i+1);
a[i][0]=i+1;
for(j=1;j<=n;j++)
{
printf("\t课程%d:",j);
scanf("%f",&a[i][j]);
}
a[i][n+1]=0;a[i][n+2]=0;a[i][n+3]=0;
}
printf("成绩录入结束,单击任意键结束.....\n");
getch();
}
int select()
{
int x;
printf("你好,本系统主要有如下功能\n");
printf("\t\t0:计算每个学生的总分和平均分\n");
printf("\t\t1:按学号显示班级学生的各科成绩\n");
printf("\t\t2:计算每门课程的平均分,最高分和最低分\n");
printf("\t\t3:按照总分从高分到低分显示学生成绩——排出名次\n");
printf("\t\t4:统计课程的及格率和优秀率\n");
printf("\t\t5:统计课程不及格人数,并打印不及格学生名单\n");
printf("\t\t6:退出\n");
do
{
printf("请选择:");
scanf("%d",&x);
if(x<0||x>6)
printf("对不起,你的输入有误,请从新输入:");
else return x;
}while(1);
}
void show(float a[][N+4],int m,int n)
{
int i,j;
printf("\t\t班级学生所有课程成绩表\n");
printf("\t学号\t");
for(i=1;i<=n;i++)
printf("课程%d\t",i);
printf("总分\t平均分\n");
for(i=0;i<m;i++)
{
printf("\t%.0f\t",a[i][0]);
for(j=1;j<=n;j++)
printf("%.1f\t",a[i][j]);
printf("%.1f\t%.1f\t",a[i][n+1],a[i][n+2]);
printf("\n");
}
}
void compute(float a[][N+4],int m,int n)
{
int i,j;
printf("正在计算每个学生的总分和平均分,请稍等....\n");
for(i=0;i<m;i++)
{
for(j=1;j<=n;j++)
a[i][n+1]+=a[i][j];
a[i][n+2]=a[i][n+1]/n;
}
}
void ave(float a[][N+4],int m,int n)
{
int i,j;
printf("正在计算每门课程的平均分、最高分和最低分,请稍等....\n");
for(i=1;i<=n+2;i++)
{
a[m][i]=0;
a[m+1][i]=a[m+2][i]=a[0][i];
for(j=0;j<m;j++)
{
a[m][i]+=a[j][i];
if(a[j][i]>a[m+1][i])
a[m+1][i]=a[j][i];
if(a[j][i]<a[m+2][i])
a[m+2][i]=a[j][i];
}
a[m][i]/=m;
}
printf("下面显示各科的及格率和优秀率...\n");
printf("\t\t");
for(i=1;i<=n;i++)
{
printf("课程%d\t",i);
}
printf("\n\t平均分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+1][j]);
printf("\n");
printf("\t最高分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+1][j]);
printf("\n");
printf("\t最低分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+2][j]);
printf("\n");
}
void sort(float a[][N+4],int m,int n)
{
int i,j,k;
float t,b[M+3][N+4];
for(i=0;i<m;i++)
for(j=0;j<n+4;j++)
b[i][j]=a[i][j];
for(i=0;i<m-1;i++)
{
k=i;
if(b[i][n+1]==0)
{
printf("对不起,总分还没有计算,请先计算总分在排序.....\n");
return;
}
for(j=i+1;j<m;j++)
if(b[j][n+1]>b[k][n+1])
k=j;
if(k!=i)
{
for(j=0;j<=n+2;j++)
{
t=b[k][j];b[k][j]=b[i][j];b[i][j]=t;
}
}
b[i][n+3]=i+1;
}
b[i][n+3]=i+1;
printf("排序后-----------------------\n");
printf("\t学号\t");
for(i=1;i<=n;i++)
printf("课程%d\t",i);
printf("总分\t平均分\t名次\n");
for(i=0;i<m;i++)
{
printf("\t%.0f\t",b[i][0]);
for(j=1;j<=n;j++)
printf("%.1f\t",b[i][j]);
printf("%.1f\t%.1f\t",b[i][n+1],b[i][n+2]);
printf("%.0f\n",b[i][n+3]);
}
}
void pass(float a[][N+4],int m,int n)
{
int i,j,jg=0,yx=0;
printf("正在计算每门课程的及格率和优秀率,请稍等....\n");
printf("下面显示各科的及格率和优秀率.....\n");
printf("\t\t");
for(i=1;i<=n;i++)
{
printf("课程%d\t",i);
}
for(i=1;i<=n+2;i++)
{
a[m+3][i]=a[m+4][i]=0;jg=yx=0;
for(j=0;j<m;j++)
{
if(a[j][i]>=60)
jg++;
if(a[j][i]>=85)
yx++;
}
a[m+3][i]=jg*1.0/m;
a[m+4][i]=yx*1.0/m;
}
printf("\n\t及格率\t");
for(i=1;i<=n;i++)
printf("%.1f%%\t",a[m+3][i]*100);
printf("\n\t优秀率\t");
for(i=1;i<=n;i++)
printf("%.1f%%\t",a[m+4][i]*100);
printf("\n");
}
{
int i,j;
printf("正在计算每门课程的平均分、最高分和最低分,请稍等....\n");
for(i=1;i<=n+2;i++)
{
a[m][i]=0;
a[m+1][i]=a[m+2][i]=a[0][i];
for(j=0;j<m;j++)
{
a[m][i]+=a[j][i];
if(a[j][i]>a[m+1][i])
a[m+1][i]=a[j][i];
if(a[j][i]<a[m+2][i])
a[m+2][i]=a[j][i];
}
a[m][i]/=m;
}
printf("下面显示各科的及格率和优秀率...\n");
printf("\t\t");
for(i=1;i<=n;i++)
{
printf("课程%d\t",i);
}
printf("\n\t平均分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+1][j]);
printf("\n");
printf("\t最高分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+1][j]);
printf("\n");
printf("\t最低分\t");
for(j=1;j<=n;j++)
printf("%.1f\t",a[m+2][j]);
printf("\n");
}
void sort(float a[][N+4],int m,int n)
{
int i,j,k;
float t,b[M+3][N+4];
for(i=0;i<m;i++)
for(j=0;j<n+4;j++)
b[i][j]=a[i][j];
for(i=0;i<m-1;i++)
{
k=i;
if(b[i][n+1]==0)
{
printf("对不起,总分还没有计算,请先计算总分在排序.....\n");
return;
}
for(j=i+1;j<m;j++)
if(b[j][n+1]>b[k][n+1])
k=j;
if(k!=i)
{
for(j=0;j<=n+2;j++)
{
t=b[k][j];b[k][j]=b[i][j];b[i][j]=t;
}
}
b[i][n+3]=i+1;
}
b[i][n+3]=i+1;
printf("排序后-----------------------\n");
printf("\t学号\t");
for(i=1;i<=n;i++)
printf("课程%d\t",i);
printf("总分\t平均分\t名次\n");
for(i=0;i<m;i++)
{
printf("\t%.0f\t",b[i][0]);
for(j=1;j<=n;j++)
printf("%.1f\t",b[i][j]);
printf("%.1f\t%.1f\t",b[i][n+1],b[i][n+2]);
printf("%.0f\n",b[i][n+3]);
}
}
void pass(float a[][N+4],int m,int n)
{
int i,j,jg=0,yx=0;
printf("正在计算每门课程的及格率和优秀率,请稍等....\n");
printf("下面显示各科的及格率和优秀率.....\n");
printf("\t\t");
for(i=1;i<=n;i++)
{
printf("课程%d\t",i);
}
for(i=1;i<=n+2;i++)
{
a[m+3][i]=a[m+4][i]=0;jg=yx=0;
for(j=0;j<m;j++)
{
if(a[j][i]>=60)
jg++;
if(a[j][i]>=85)
yx++;
}
a[m+3][i]=jg*1.0/m;
a[m+4][i]=yx*1.0/m;
}
printf("\n\t及格率\t");
for(i=1;i<=n;i++)
printf("%.1f%%\t",a[m+3][i]*100);
printf("\n\t优秀率\t");
for(i=1;i<=n;i++)
printf("%.1f%%\t",a[m+4][i]*100);
printf("\n");
}
void fail(float a[][N+4],int m,int n)
{
int i,j,bjg[N];
for(j=1;j<=n;j++)
{
bjg[j]=0;
printf("课程%d不及格学生的学号为:",j);
for(i=0;i<m;i++)
if(a[i][j]<60)
{
printf("%.0f\t",a[i][0]);
bjg[j]++;
}
printf("\n\t\t\t该课程共有%d个学生不及格\n",bjg[j]);
}
}
{
int i,j,bjg[N];
for(j=1;j<=n;j++)
{
bjg[j]=0;
printf("课程%d不及格学生的学号为:",j);
for(i=0;i<m;i++)
if(a[i][j]<60)
{
printf("%.0f\t",a[i][0]);
bjg[j]++;
}
printf("\n\t\t\t该课程共有%d个学生不及格\n",bjg[j]);
}
}
void main()
{
float stu[M+3][N+4];
int i,kc,rs;
cover();
printf("老师,你好!欢迎使用本系统\n");
printf("请问本学期一共进行了几门考试:");
scanf("%d",&kc);
printf("请输入该班级的学生人数:");
scanf("%d",&rs);
input(stu,rs,kc);
while(1)
{
i=select();
switch(i)
{
case 0:compute(stu,rs,kc);break;
case 1:show(stu,rs,kc);break;
case 2:ave(stu,rs,kc);break;
case 3:sort(stu,rs,kc);break;
case 4:pass(stu,rs,kc);break;
case 5:fail(stu,rs,kc);break;
case 6:printf("谢谢使用,再见.....\n");exit(0);
}
printf("本操作完成,单击任意键继续....\n");
getch();
}
}
{
float stu[M+3][N+4];
int i,kc,rs;
cover();
printf("老师,你好!欢迎使用本系统\n");
printf("请问本学期一共进行了几门考试:");
scanf("%d",&kc);
printf("请输入该班级的学生人数:");
scanf("%d",&rs);
input(stu,rs,kc);
while(1)
{
i=select();
switch(i)
{
case 0:compute(stu,rs,kc);break;
case 1:show(stu,rs,kc);break;
case 2:ave(stu,rs,kc);break;
case 3:sort(stu,rs,kc);break;
case 4:pass(stu,rs,kc);break;
case 5:fail(stu,rs,kc);break;
case 6:printf("谢谢使用,再见.....\n");exit(0);
}
printf("本操作完成,单击任意键继续....\n");
getch();
}
}