c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统

某班最多有不超过30人(具体人数由键盘输入)参加某门课程的考试。用一维数组作函数参数实现如下学生成绩管理:

(1)录入每个学生学号和考试成绩;

(2)计算课程的总分和平均分;

(3)按成绩由高到低排出名次表;

(4)按学号由小大排出成绩表;

(5)按学号查询学生排名及其考试成绩;

按优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60~69分)、不及格(0~59分)5个类别,统计每个类别的人数及所占的百分比。

1、源代码

#include

#include

#define stu_num 30 /*最多的学生人数*/

int menu(void); /*menu()函数原型,功能是显示菜单*/

void readscore(long num[],float score [],int n);

void aversumofscore(float score[],int n);

void desortbyscore(long num[],float [],int n);

void assortbynum(long num[],float score[],int n);

void searchbynum(long num[],float score[],int n);

void statisticanalysis(float score[],int n);

void printscore(long num[],float score[],int n);

int main()

{

char itemselected; /*字符型变量itemselected为菜单选项*/

int n=0; /*n为实际学生数,由用户输入*/

float score[stu_num]; /*一组数组score,长度为stu_num,用于存放学生成绩*/

long num[stu_num]; /*一组数组num,长度为stu_num,用于存放学生成绩*/

while(1)

{

itemselected=menu(); /*显示菜单,并读取用户输入*/

switch(itemselected) /*根据菜单选项执行相应的程序*/

{

/*输入学生人数,向数组num和score顺序输入n个学生的学号和某门课的成绩*/

case 1:printf("input student number(n

scanf("%d",&n);

readscore(num,score,n);

break;

/*计算全班总分和平均分*/

case 2:aversumofscore(score,n);

break;

/*按选择法将数组score的元素按从高到低排序*/

case 3:desortbyscore(num,score,n);

printf("\nsort in descending order by score:\n");

printscore(num,score,n);

break;

/* 按选择法将数组num的元素按从大到小排序*/

case 4:assortbynum(num,score,n);

printf("\nsort in ascending order by score:\n");

printscore(num,score,n);

break;

/*按学号查找学生成绩并显示查找成绩*/

case 5:searchbynum(num,score,n);

break;

/*统计各分数段的学生人数及所占百分比*/

case 6:statisticanalysis(score,n);

break;

/*打印学生分数*/

case 7:printscore(num,score,n);

break;

/*退出程序*/

case 0:printf("退出程序!\n");

exit(0);

default:printf("输入选项错误!");

}

}

return 0;

}

/*函数功能:显示菜单并读得用户键盘输入的选项*/

int menu(void)

{

int itemselected;/*整型变量itemselected为菜单选项*/

printf("\n学生成绩管理系统你\n");

printf("1.输入学生成绩\n");

printf("2.计算全班课程总分和平均分\n");

printf("3.将成绩按从高到低排序\n");

printf("4.将学号按从大到小排序\n");

printf("5.按学号查询学生成绩\n");

printf("6.统计分数\n");

printf("7.成绩列表\n");

printf("0.退出\n");

printf("请输入你的选择:");

scanf("%d",&itemselected); /*读取用户输入*/

return itemselected;

}

/*函数功能:输入n个学生的某门课成绩*/

void readscore(long num[],float score [],int n)

{

int i;

printf("input student's id,name and score:\n");

for(i=0;i0?sum/n:0);

}

/*函数功能:按选择法将数组score的元素值按从高到低排序*/

void desortbyscore(long num[],float score[],int n)

{

int i,j,k;

float temp1;

long temp2;

for(i=0;iscore[k])k=j;

}

if(k!=i)

{

/*交换成绩*/

temp1=score[k];score[k]=score[i];score[i]=temp1;

/*交换学好*/

temp2=num[k];num[k]=num[i];num[i]=temp2;

}

}

}

/*函数功能:按选择法将数组num的元素值按从小到大排序*/

void assortbynum(long num[],float score[],int n)

{

int i,j,k;

float temp1;

long temp2;

for(i=0;i=0 && score[i]<60)t[0]++;

else if (score[i]<70) t[1]++;

else if (score[i]<80) t[2]++;

else if (score[i]<90) t[3]++;

else if (score[i]<100) t[4]++;

else if (score[i]==100) t[5]++;

}

for(total=0,i=0;i<5;i++)

{

total=total+t[i];

}

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

{

if(i==0)

{

printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);

}

else if(i==5)

{

printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n*100);

}

else

{

printf("%d-%d\t%d\t.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],(float)t[i]/n*100);

}

}

}

/*函数功能:打印学生成绩*/

void printscore(long num[],float score[],int n)

{

int i;

for(i=0;i

2、运行结果

c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统_第1张图片

c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统_第2张图片

c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统_第3张图片

c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统_第4张图片

你可能感兴趣的:(c语言按学号查询学生排名极其考试成绩,C语言--学生成绩管理系统)