学生成绩管理系统v60Word文档下载推荐.docx
《学生成绩管理系统v60Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统v60Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
voidSearchbyname(STUstu[],intn,intm);
voidStatisticAnlysis(STUstu[],intn,intm);
voidPrintscore(STUstu[],intn,intm);
voidWritetofile(STUstu[],intn,intm);
voidReadfromfile(STUstu[],int*n,int*m);
intmain()
charch;
intn=0,m=0;
STUstu[m_num];
printf("
请输入学生人数(n<
=%d):
\n"
m_num);
scanf("
%d"
&
n);
请输入课程数目(m<
m_cs);
m);
while
(1)
{
ch=menu();
switch(ch)
case1:
Readscore(stu,n,m);
break;
case2:
Aversumofeverystudent(stu,n,m);
case3:
Aversumofeverycourse(stu,n,m);
case4:
Sortbyscore(stu,n,m,Descending);
\n成绩降序排序\n"
);
Printscore(stu,n,m);
case5:
Sortbyscore(stu,n,m,Ascending);
\n成绩升序排序\n"
case6:
Assortbynum(stu,n,m);
\n学号升序排序\n"
case7:
Sortbyname(stu,n,m);
\n姓名字典升序排序\n"
case8:
Searchbynum(stu,n,m);
case9:
Searchbyname(stu,n,m);
case10:
StatisticAnlysis(stu,n,m);
case11:
case12:
Writetofile(stu,n,m);
case13:
Readfromfile(stu,&
n,&
case0:
\n欢迎下次继续使用"
exit(0);
default:
\n输入错误"
}
return0;
}
intmenu(void)
intitems;
欢迎使用学生成绩管理系统\n"
1.输入成绩\n"
2.计算各个学生总成绩和平均成绩\n"
3.计算各门学科总成绩和平均成绩\n"
4.成绩降序排序\n"
5.成绩升序排序\n"
6.学号升序排序\n"
7.姓名升序排序\n"
8.通过学号查找成绩\n"
9.通过姓名查找成绩\n"
10.标准分析\n"
11.显示成绩\n"
12.写入文件\n"
13.读取文件\n"
0.退出\n"
请做出您的选择\n"
items);
returnitems;
voidReadscore(STUstu[],intn,intm)
inti,j;
请输入学生学号,姓名,成绩\n"
for(i=0;
i<
n;
i++)
%ld%s"
stu[i].num,stu[i].name);
stu[i].sum=0;
for(j=0;
j<
m;
j++)
%f"
stu[i].score[j]);
stu[i].sum+=stu[i].score[j];
if(m>
0)
stu[i].aver=m>
0?
stu[i].sum/m:
-1;
voidAversumofeverystudent(STUstu[],intn,intm)
学生%d:
总成绩:
%.1f,平均成绩:
%.1f\n"
i+1,stu[i].sum,stu[i].aver);
voidAversumofeverycourse(STUstu[],intn,intm)
floatsum[m_cs],aver[m_cs];
sum[i]=0;
sum[i]+=stu[j].score[i];
aver[i]=n>
0?
sum[i]/n:
-1;
课程%d:
i+1,sum[i],aver[i]);
voidSortbyscore(STUstu[],intn,intm,int(*compare)(floata,floatb))
inti,j,k,t;
for(i=0;
n-1;
k=i;
for(j=i+1;
if((*compare)(stu[j].sum,stu[k].sum))
k=j;
if(k!
=i)
for(t=0;
t<
t++)
swapfloat(&
stu[k].score[t],&
stu[i].score[t]);
stu[k].sum,&
stu[i].sum);
stu[k].aver,&
stu[i].aver);
swaplong(&
stu[k].num,&
stu[i].num);
swapchar(stu[k].name,stu[i].name);
intAscending(floata,floatb)
returna<
b;
intDescending(floata,floatb)
returna>
voidswapfloat(float*x,float*y)
floatb;
b=*x;
*x=*y;
*y=b;
voidswaplong(long*x,long*y)
longb;
voidswapchar(charx[],chary[])
charb[m_l];
strcpy(b,x);
strcpy(x,y);
strcpy(y,b);
voidAssortbynum(STUstu[],intn,intm)
inti,j,k,t;
if(stu[j].num<
stu[k].num)
voidSortbyname(STUstu[],intn,intm)
inti,j,t;
if(strcmp(stu[j].name,stu[i].name)<
stu[i].score[t],&
stu[j].score[t]);
stu[j].sum,&
stu[j].aver,&
stu[j].num,&
swapchar(stu[j].name,stu[i].name);
voidSearchbynum(STUstu[],intn,intm)
longnum;
输入你所想要查找的学号\n"
%ld"
num);
if(stu[i].num==num)
%ld\t%s\t"
stu[i].num,stu[i].name);
%.0f\t"
stu[i].score[j]);
%.0f\t%.0f\n"
stu[i].sum,stu[i].aver);
return;
\n查无此号\n"
voidSearchbyname(STUstu[],intn,intm)
输入你所想要查找的姓名\n"
%s"
name);
if(strcmp(stu[i].name,name)==0)
\n查无此人\n"
voidStatisticAnlysis(STUstu[],intn,intm)
inti,j,total,t[6];
学科:
%d:
j+1);
memset(t,0,sizeof(t));
if(stu[i].score[j]>
=0&
&
stu[i].score[j]<
60)
t[0]++;
elseif(stu[i].score[j]<
70)
t[1]++;
80)
t[2]++;
90)
t[3]++;
100)
t[4]++;
elseif(stu[i].score[j]==100)
t[5]++;
total=0;
=5;
total+=t[i];
if(i==0)
<
60\t%d\t%.2f%%\n"
t[i],(float)t[i]/n*100);
elseif(i==5)
=100\t%d\t%.2f%%\n"
else
%d-%d\t%d\t%.2f%%\n"
t[i],(i+5)*10,(i+5)*10+9,(float)t[i]/n*100);
voidPrintscore(STUstu[],intn,intm)
%.1f\t"
%.1f\t%.1f\n"
voidWritetofile(STUstu[],intn,intm)
FILE*fp;
if((fp=fopen("
student.txt"
"
w"
))==NULL)
打开“student.txt”失败!
fprintf(fp,"
%d\t%d\n"
n,m);
%10ld%10s"
%12.0f"
%12.0f%12.0f\n"
fclose(fp);
voidReadfromfile(STUstu[],int*n,int*m)
r"
打开score.txt!
失败\n"
fscanf(fp,"
%d\t%d"
*n;
%10ld"
stu[i].name);
*m;
%10f"
%10f%10f\n"
stu[i].sum,&