|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#define N 30
int Menu(void);
void ReadScore(long num[],float score[],int n);
void Average(float score[],int n);
void PrintScore(long num[],float score[],int n);
void DataSort(float score[],int n);
void StuID(long num[],float score[],int n);
void BinSearch(long num[],float score[],int n);
void FenJi(float score[],int n);
main()
{
int n;
char op;
printf("Welcome to student achievement management system 1.0!\n");
printf("please input how many students(n<%d):",N);
scanf("%d",&n);
printf("\n");
long num[N];
float score[N];
while(1)
{
op=Menu();
switch(op)
{
case 1:
ReadScore(num,score,n);
printf("\n");
break;
case 2:
Average(score,n);
printf("\n");
break;
case 3:
DataSort(score,n);
PrintScore(num,score,n);
printf("\n");
break;
case 4:
StuID(num,score,n);
PrintScore(num,score,n);
printf("\n");
break;
case 5:
BinSearch(num,score,n);
printf("\n");
break;
case 6:
FenJi(score,n);
printf("\n");
break;
case 7:
Average(score,n);
PrintScore(num,score,n);
case 0:
printf("End of program!\n");
exit(0);
default:printf("input error!\n");
}
}
return 0;
}
int Menu(void)
{
int m;
printf("1.Input record and stuid:\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 records:\n");
printf("0.Exit\n");
printf("\n");
printf("please enter your choice:");
scanf("%d",&m);
return m;
}
/*函数功能:录入学生学号和成绩*/
void ReadScore(long num[],float score[],int n)
{
int j;
printf("input student's ID and score:\n");
for(j=0;j<n;j++)
{
scanf("%ld %f",&num[j],&score[j]);
}
}
/*函数功能:按成绩高低排出成绩表*/
void DataSort(float score[],int n)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(score[j]>score[i])
{
temp=score[j];
score[j]=score[i];
score[i]=temp;
}
}
}
}
/*函数功能:按学号由小到大排出成绩表*/
void StuID(long num[],float score[],int n)
{
int i,j;
long temp1;
float temp2;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(num[j]<num[i])
{
temp1=num[j];
num[j]=num[i];
num[i]=temp1;
temp2=score[j];
score[j]=score[i];
score[i]=temp2;
}
}
}
}
/*按学号查询学生排名和成绩*/
void BinSearch(long num[],float score[],int n)
{
int i;
long j;
printf("please input the number you want to watch:");
scanf("%ld",&j);
for(i=0;i<n;i++)
{
if(num[i]==j)
{
printf("the student's ranging and score are %d\t%f\n",j,score[j]);
}
}
printf("Not found!\n");
}
/*函数功能:按成绩进行分级*/
void FenJi(float score[],int n)
{
int i,YX=0,LH=0,ZD=0,JG=0,BJG=0;
for(i=0;i<n;i++)
{
if(score[i]>=90&&score[i]<=100)
{
YX++;
}
if(score[i]>=80&&score[i]<90)
{
LH++;
}
if(score[i]>=70&&score[i]<80)
{
ZD++;
}
if(score[i]>=60&&score[i]<70)
{
JG++;
}
if(score[i]>=0&&score[i]<60)
{
BJG++;
}
}
printf("优秀(90-100)人数为%d\n",YX);
printf("优秀率为%.1d%%\n",(100*YX)/n);
printf("良好(80-89)人数为%d\n",LH);
printf("良好率为%.1d%%\n",(100*LH)/n);
printf("中等(70-79)人数为%d\n",ZD);
printf("中等率为%.1d%%\n",(100*ZD)/n);
printf("及格(60-69)人数为%d\n",JG);
printf("及格率为%.1d%%\n",(100*JG)/n);
printf("不及格(0-59)人数为%d\n",BJG);
printf("不及格率为%.1d%%\n",(100*BJG)/n);
}
/*函数功能:计算课程总分和平均分*/
void Average(float score[],int n)
{
int j;
float aver,SUM=0;
for(j=0;j<n;j++)
{
SUM+=score[j];
}
aver=SUM/n;
printf("%f %f\n",SUM,aver);
}
/*函数功能:输出学生的学号和成绩*/
void PrintScore(long num[],float score[],int n)
{
int j;
for(j=0;j<n;j++)
{
printf("%10ld\t%.1f\n",num[j],score[j]);
}
}
这个成绩管理系统只有第六个按成绩分级能用,其它的选项都有问题(我感觉学号的录入出了问题)o(╥﹏╥)o
ps:第一次发帖,有什么弄得不好的地方还请指正!
|
|