C语言大作业学生成绩管理系统v2.0.docx
《C语言大作业学生成绩管理系统v2.0.docx》由会员分享,可在线阅读,更多相关《C语言大作业学生成绩管理系统v2.0.docx(8页珍藏版)》请在冰豆网上搜索。
![C语言大作业学生成绩管理系统v2.0.docx](https://file1.bdocx.com/fileroot1/2022-10/22/320bd386-d781-4d40-b1da-eb40241897a1/320bd386-d781-4d40-b1da-eb40241897a11.gif)
//成绩管理系统v2.0
#include
#include
#defineN30
voidInput(longnum[],intscore[],intn);
voidTotalave(intscore[],intn);
voidScoredes(longnum[],intscore[],intn,int(*compare)(inta,intb));
intAscending(inta,intb);
voidNumas(longnum[],intscore[],intn);
voidSearch(longnum[],intscore[],intn,intx);
voidstatistis(longnum[],intscore[],intn);
voidList(longnum[],intscore[],intn);
intmain()
{
intn,score[N],c,x,i;
longnum[N];
printf("输入学生人数");
scanf("%d",&n);
printf("1.Inputrecord\n");
printf("2.Caculatetotelandaveragescoreofcourse\n");
printf("3.Sortindescendingorderbyscore\n");
printf("4.Sortinascendingorderbynumber\n");
printf("5.Searchbynumber\n");
printf("6.Statisticanalysis\n");
printf("7.Listrecord\n");
printf("0.Exit\n");
printf("Pleaseenteryourchoice:
\n");
printf("\n");
for(;;)
{
scanf("%d",&c);
switch(c)
{
case1:
Input(num,score,n);
printf("Pleaseenteryourchoice:
\n");
break;
case2:
Totalave(score,n);
printf("Pleaseenteryourchoice:
\n");
break;
case3:
Scoredes(num,score,n,Ascending);
for(i=0;iprintf("ID:
%10ld,score:
%d\n",num[i],score[i]);//以长整形打印用%ld
printf("Pleaseenteryourchoice:
\n");
break;
case4:
Numas(num,score,n);
printf("Pleaseenteryourchoice:
\n");
break;
case5:
printf("请输入查找学号\n");
scanf("%d",&x);
Search(num,score,n,x);
printf("Pleaseenteryourchoice:
\n");
break;
case6:
statistis(num,score,n);
printf("Pleaseenteryourchoice:
\n");
break;
case7:
List(num,score,n);
Totalave(score,n);
printf("Pleaseenteryourchoice:
\n");
break;
case0:
exit(0);
}
}
return0;
}
voidInput(longnum[],intscore[],intn)
{
inti;
for(i=0;i{
printf("Inputstudent'sIDandscore");
scanf("%ld%d",&num[i],&score[i]);
}
}
voidTotalave(intscore[],intn)
{
inti,sum=0;
doubleave;
for(i=0;isum=sum+score[i];
ave=(double)sum/n;
printf("Caculatetotal=%d,averagescoreofcourse=%f\n",sum,ave);
}
voidScoredes(longnum[],intscore[],intn,int(*compare)(inta,intb))
{
inti,j,k,t,h;
for(i=0;i{
k=i;
for(j=i+1;j{
if((*compare)(score[j],score[k]))
k=j;
}
if(i!
=k)
{
t=score[k],h=num[k];
score[k]=score[i],num[k]=num[i];
score[i]=t,num[i]=h;
}
}
}
intAscending(inta,intb)
{
returna
}
voidNumas(longnum[],intscore[],intn)
{
inti,j,k,t,h;
for(i=0;i{
k=i;
for(j=i+1;j{
if(num[j]k=j;
}
if(i!
=k)
{
t=score[k],h=num[k];
score[k]=score[i],num[k]=num[i];
score[i]=t,num[i]=h;
}
}
for(i=0;iprintf("ID:
%10ld,score:
%d\n",num[i],score[i]);//以长整形打印用%ld
}
voidSearch(longnum[],intscore[],intn,intx)
{
inthigh=n-1,low=0,mid,c=0,pos,find=0,i,j,k,t,h;
for(i=0;i{
k=i;
for(j=i+1;j{
if(num[j]k=j;
}
if(i!
=k)
{
t=score[k],h=num[k];
score[k]=score[i],num[k]=num[i];
score[i]=t,num[i]=h;
}
}
while(find==0&&low<=high)
{
mid=(high+low)/2;
if(x>num[mid])
low=mid+1;
elseif(xhigh=mid-1;
else
{
pos=mid;
find=1;
}
}
if(find==0)
printf("notfind\n");
else
{
for(i=0;i{
if(score[i]>score[pos])
c++;
}
printf("ID:
%10ld,order:
%d,score:
%d\n",num[pos],c+1,score[pos]);
}
}
voidstatistis(longnum[],intscore[],intn)
{
inta=0,b=0,c=0,d=0,e=0,i;
doubleA,B,C,D,E;
for(i=0;i{
if(score[i]>=90)
a++;
elseif(score[i]>=80)
b++;
elseif(score[i]>=70)
c++;
elseif(score[i]>=60)
d++;
else
e++;
}
A=(double)a/n*100;
B=(double)b/n*100;
C=(double)c/n*100;
D=(double)d/n*100;
E=(double)e/n*100;
printf("优秀人数%d,百分比:
%f%%\n",a,A);
printf("良好人数%d,百分比:
%f%%\n",b,B);
printf("中等人数%d,百分比:
%f%%\n",c,C);
printf("及格人数%d,百分比:
%f%%\n",d,D);
printf("不及格人数%d,百分比