作者:江南水恋 | 来源:互联网 | 2023-06-08 16:22
学生成绩管理系统V1.0(4分)题目内容:某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:(1)录入每个学生的学号和考
学生成绩管理系统V1.0(4分)
题目内容:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩。
#include
#include
#include
#define N 200
void menu();
void Readnumber_score(int number[],float score[],int n );//录入每个学生的学号和考试成绩
void Total_avescore( float score[],int n);//计算课程的总分和平均分
void Score_Sort(int number[],float score[],int n);//按成绩由高到低排序
void Number_Sort(int number[],float score[],int n);//按成绩由小到大排出成绩表
void Search(int number[],float score[],int n);//按学号查询学生排名及其考试成绩
void Statistic(int number[],float score[],int n);//统计每个类别的人所占比例
void Output(int number[],float score[],int n);//输出每个学生的学号和考试成绩
int main()
{
int number[N];
float score[N];
int n;
int choice;
printf("input n :");
scanf("%d",&n);
while(1)
{
menu();
printf("Please input your choice :");
scanf("%d",&choice );
switch(choice)
{
case 1:
printf("***************************\n");
Readnumber_score(number,score,n);
printf("***************************\n");
break;
case 2:
printf("***************************\n");
Total_avescore( score,n);
printf("***************************\n");
break;
case 3:
printf("***************************\n");
Score_Sort(number,score,n);
printf("***************************\n");
break;
case 4:
printf("***************************\n");
Number_Sort(number ,score,n);
printf("***************************\n");
break;
case 5:
printf("***************************\n");
Search(number,score,n);
printf("***************************\n");
break;
case 6:
printf("***************************\n");
Statistic(number,score,n);
printf("***************************\n");
break;
case 7:
printf("***************************\n");
Output(number,score,n);
printf("***************************\n");
break;
case 0:
printf("End of program!\n");
exit(0);
default :
printf("***************************\n");
printf("input error!!!\n");
printf("***************************\n");
break;
}
}
return 0;
}
int menu()
{
printf("Management for Students' scores\n");
printf("1.Input record\n");
printf("2.Caculate total and average score of course\n");
printf("3.Sort in descending order by score\n");
printf("4.Sort in ascending order by number\n");
printf("5.Search by number\n");
printf("6.Statistic analysis\n");
printf("7.List record\n");
printf("0.Exit\n");
}
void Readnumber_score(int number[],float score[],int n )
{
int i;
printf("input student's ID,name and score :\n");
for(i=0;i<n;i++)
{
scanf("%d",&number[i]);
scanf("%f",&score[i]);
}
}
void Total_avescore(float score[],int n)
{
int i;
float sum=0;
float ave;
for(i=0;i<n;i++)
{
sum=sum+score[i];
}
printf("sum = %f\n",sum);
printf("ave = %f\n",sum/n);
}
void Score_Sort(int number[],float score[],int n)
{
int i;
int j;
float temp;
int num;
for(i=0;i<n-1;i++)
{
for(j=1;j<n-i;j++)
{
if(score[j]>score[j-1])
{
temp=score[j];
score[j]=score[j-1];
score[j-1]=temp;
num=number[j];
number[j]=number[j-1];
number[j-1]=num;
}
}
}
for(i=0;i<n;i++)
{
printf("%d\t%f\n",number[i],score[i]);
}
}
void Number_Sort(int number[],float score[],int n)
{
int i;
int j;
int num;
float temp;
for(i=0;i<n-1;i++)
{
for(j=1;j<n-i;j++)
{
if(number[j]<number[j-1])
{
temp=score[j];
score[j]=score[j-1];
score[j-1]=temp;
num=number[j];
number[j]=number[j-1];
number[j-1]=num;
}
}
}
for(i=0;i<n;i++)
{
printf("%d\t%f\n",number[i],score[i]);
}
}
void Search(int number[],float score[],int n)
{
int i,j,k;
float temp;
int num;
int rank=1;//排名
int school_number;//学号
for(i=0;i<n-1;i++)
{
for(j=1;j<n-i;j++)
{
if(score[j]>score[j-1])
{
temp=score[j];
score[j]=score[j-1];
score[j-1]=temp;
num=number[j];
number[j]=number[j-1];
number[j-1]=num;
}
}
}
printf("input number :");
scanf("%d",&school_number);
for(k=0;k<n;k++)
{
if(school_number!=number[k])
{
rank++;
}
if(school_number==number[k])
{
printf("%d ",rank);
printf("%d :",number[k]);
printf("%f\n",score[k]);
break;
}
}
}
void Statistic(int number[],float score[],int n)
{
int a=0,b=0,c=0,d=0,e=0;//五类人个数
int i;
for(i=0;i<n;i++)
{
if(score[i]<=100&&score[i]>=90)
{
a++;
}
if(score[i]>=80&&score[i]<=89)
{
b++;
}
if(score[i]>=70&&score[i]<=79)
{
c++;
}
if(score[i]>=60&&score[i]<=69)
{
d++;
}
if(score[i]<60&&score[i]>=0)
{
e++;
}
}
printf("优秀所占比例: %f%%\n",((float)a/n)*100 );
printf("良好所占比例: %f%%\n",((float)b/n)*100 );
printf("中等所占比例: %f%%\n",((float)c/n)*100 );
printf("及格所占比例: %f%%\n",((float)d/n)*100 );
printf("不及格所占比例: %f%%\n",((float)e/n)*100 );
}
void Output(int number[],float score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d :",number[i]);
printf("%f\n",score[i]);
}
}