学生成绩管理系统
#include<stdio.h> #include<stdlib.h> struct STUDENT { int num; char name[10]; float computer; float math; float english; float sum; float ave; }; struct STUDENT stu[30]; struct STUDENT stu1[3]; int n; int i,j; int p1,p2,p3,p4,p5; char k[30]; float sum1,sum2,sum3; float ave1,ave2,ave3; void menu(); void c1(); void c2(); void c3(); void c4(); void c5(); void c6(); void c7(); void c8(); void c9(); void c10(); void main() { while(1) { menu(); } } void menu() { printf("学生成绩管理系统菜单\n"); printf("***************************************\n"); printf("1.学生信息录入\n"); printf("2.计算每门课的总分和平均分\n"); printf("3.计算每个学生的总分和平均分\n"); printf("4.按学号从高到低排出名次表\n"); printf("5.按学号从小到大排出成绩表\n"); printf("6.按学号查询学生的排名和各科的考试成绩\n"); printf("7.每门课程各个类别的人数及所占的百分比\n"); printf("8.将学生的记录信息写入文件\n"); printf("9.从文件中读出每个学生的记录信息并显示。\n"); printf("10.退出\n"); printf("***************************************\n"); printf("请输入选项(1-10):"); scanf("%d",&i); switch(i) { case 1: c1(); break; case 2: c2(); break; case 3: c3(); break; case 4: c4(); break; case 5: c5(); break; case 6: c6(); break; case 7: c7(); break; case 8: c8(); break; case 9: c9(); break; case 10: c10(); break; default:printf("无此选项\n"); break; } } void c1() { printf("请输入学生人数"); scanf("%d",&n); printf("欢迎使用a1\n"); printf("请录入学生的学号,姓名,和三门科目的成绩(计算机,高数,英语)\n\n"); for(i=0;i<n;i++) { scanf("%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].computer,&stu[i].math,&stu[i].english); } printf("\n\n"); } void c2() { printf("欢迎使用2\n"); sum1=sum2=sum3=0; for(i=0;i<n;i++) { sum1=stu[i].computer+sum1; sum2=stu[i].math+sum2; sum3=stu[i].english+sum3; } ave1=ave2=ave3=0; ave1=sum1/n; ave2=sum2/n; ave3=sum3/n; printf("计算机总分 数学总分 英语总分\n"); printf("%.1f %.1f %.1f\n\n",sum1,sum2,sum3); printf("计算机平均分 数学平均分 英语平均分\n"); printf("%.1f %.1f %.1f\n\n\n",ave1,ave2,ave3); } void c3() { printf("欢迎使用3\n"); for(i=0;i<n;i++) { stu[i].sum=stu[i].computer+stu[i].math+stu[i].english; stu[i].ave=stu[i].sum/3; printf("%s学生的 总分 平均分\n",stu[i].name); printf(" %.1f %.1f\n\n\n",stu[i].sum,stu[i].ave) ; } } void c4() { printf("欢迎使用项目4\n"); int i,j; for(i=0;i<n;i++) { stu[i].sum=stu[i].computer+stu[i].math+stu[i].english; for(j=0;j<n;j++) { if(stu[i].sum<stu[j].sum) { stu1[0]=stu[i]; stu[i]=stu[j]; stu[j]=stu1[0];}} for(i=0;i<n;i++) { k[i]=stu[i].num; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(stu[i].num <stu[j].num){ stu1[0]=stu[i]; stu[i]=stu[j]; stu[j]=stu1[0];} } } printf("按学号排出名次表:\n"); printf("学号\t姓名\t名次\n"); for(i=0;i<n;i++) { printf("%d\t%s\t",stu[i].num,stu[i].name); for(j=0;j<n;j++) { if(stu[i].num==k[j]) { printf("%d\n",(j+1)); } } } } void c5() { printf("欢迎使用5\n"); int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(stu[i].num <stu[j].num){ stu1[0]=stu[i]; stu[i]=stu[j]; stu[j]=stu1[0];} } } printf("按学号排出成绩表:\n"); printf("学号\t姓名\t计算机\t数学\t英语\t总分\n"); for(i=0;i<n;i++) { printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english,stu[i].sum); } } void c6() { int m; printf("欢迎使用6\n"); printf("请输入学生学号:\n"); scanf("%d",&m); printf("学号\t姓名\t计算机\t数学\t英语\t名次\n"); for(i=0;i<n;i++) { stu[i].sum=stu[i].computer+stu[i].math+stu[i].english; for(j=0;j<n;j++) { stu[j].sum=stu[j].computer+stu[j].math+stu[j].english; if(stu[i].sum<stu[j].sum) { stu1[0]=stu[i]; stu[i]=stu[j]; stu[j]=stu1[0];}} for(i=0;i<n;i++) { k[i]=stu[i].num; } } for(i=0;i<n;i++) { if(stu[i].num==m) printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%d\n\n\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english,i+1); } } void c7() { printf("欢迎使用7\n"); printf("\t不及格\t及格\t中等\t良好\t优秀\n"); p1=p2=p3=p4=p5=0; for(i=0;i<n;i++) { if(stu[i].computer<60&&stu[i].computer>=0) p1++; if(stu[i].computer>=60&&stu[i].computer<70 ) p2++; if( stu[i].computer>=70&&stu[i].computer<80) p3++; if( stu[i].computer>=80&&stu[i].computer<90) p4++; if( stu[i].computer>=90&&stu[i].computer<=100) p5++; } printf("计算机\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\n",p1,100*p1/n,p2,100*p2/n,p3,100*p3/n,p4,100*p4/n,p5,100*p5/n); p1=p2=p3=p4=p5=0; for(i=0;i<n;i++) { if(stu[i].math<60&&stu[i].math>=0) p1++; if(stu[i].math>=60&&stu[i].math<70 ) p2++; if( stu[i].math>=70&&stu[i].math<80) p3++; if( stu[i].math>=80&&stu[i].math<90) p4++; if( stu[i].math>=90&&stu[i].math<=100) p5++; } printf("数学\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\n",p1,100*p1/n,p2,100*p2/n,p3,100*p3/n,p4,100*p4/n,p5,100*p5/n); p1=p2=p3=p4=p5=0; for(i=0;i<n;i++) { if(stu[i].english<60&&stu[i].english>=0) p1++; if(stu[i].english>=60&&stu[i].english<70 ) p2++; if( stu[i].english>=70&&stu[i].english<80) p3++; if( stu[i].english>=80&&stu[i].english<90) p4++; if( stu[i].english>=90&&stu[i].english<=100) p5++; } printf("英语\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\t%d人%d%%\n\n",p1,100*p1/n,p2,100*p2/n,p3,100*p3/n,p4,100*p4/n,p5,100*p5/n); } void c8() { int i; printf("欢迎使用项目8\n"); FILE *p; p=fopen("学生数据1.txt","w"); if(p==NULL) { printf("cannot open file\n"); exit(0); } for(i=0;i<n;i++) { fprintf(p,"%d\t%s\t%.1f\t%.1f\t%.1f\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english); } fclose(p); printf("您写入文件的数据为:\n"); printf("学号\t姓名\t计算机成绩\t高数成绩\t英语成绩\n"); for(i=0;i<n;i++) { printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english); } }; void c9() { printf("欢迎使用项目9\n"); int i; FILE *p; p=fopen("学生数据1.txt","w"); if(p==NULL) { printf("cannot open file\n"); exit(0); } for(i=0;i<n;i++) { fprintf(p,"%d\t%s\t%.1f\t%.1f\t%.1f\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english); } fclose(p); printf("您写入文件的数据为:\n"); printf("学号\t姓名\t计算机成绩\t高数成绩\t英语成绩\n"); for(i=0;i<n;i++) { printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,stu[i].computer,stu[i].math,stu[i].english); } }; void c10() { printf("欢迎使用10\n"); exit(0); }