收藏 分销(赏)

c语言大作业学生成绩基础管理系统.docx

上传人:a199****6536 文档编号:9631216 上传时间:2025-04-01 格式:DOCX 页数:20 大小:12.98KB
下载 相关 举报
c语言大作业学生成绩基础管理系统.docx_第1页
第1页 / 共20页
c语言大作业学生成绩基础管理系统.docx_第2页
第2页 / 共20页
点击查看更多>>
资源描述
//成绩管理系统v1.0 #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 30 #define M 6 typedef struct student { long studentID; char studentName[10]; int score[M]; }STU; void Input (STU stu[],int n,int m); void Totalave (STU stu[],int n,int m); void evestuTotalave (STU stu[],int n,int m); void Scoredes (STU stu[],int n,int m); void Scoreas (STU stu[],int n,int m); void Numas (STU stu[],int n,int m); void Dicas (STU stu[],int n,int m); void Searchbynum (STU stu[],int n,int x,int m); void Searchbymane(STU stu[],int n,char name[],int m); void statistis (STU stu[],int n,int m); void List (STU stu[],int n,int m); int main() { int n,c,x,m; char name[10]; STU stu[N]; printf("输入学生人数"); scanf("%d",&n); printf("输入考试科目"); scanf("%d",&m); printf("1.Input record\n"); printf("2.Caculate totel and average score of every course\n"); printf("3.Caculate totel and average score of every student\n"); printf("4.Sort in descending order by total score of every student\n"); printf("5.Sort in ascending order by total score of every student\n"); printf("6.Sort in ascending order by number\n"); printf("7.Sort in ascending order by name"); printf("8.Search by number\n"); printf("9.Search by name\n"); printf("10.Statistic analysis for every course\n"); printf("11.List record\n"); printf("0.Exit\n"); printf("Please enter your choice:\n"); printf("\n"); for(;;) { scanf("%d",&c); switch(c) { case 1: //录入学生学号和各科成绩 Input (stu,n,m); printf("Please enter your choice:\n"); break; case 2: //计算每门课程旳总分和平均分 Totalave (stu,n,m); printf("Please enter your choice:\n"); break; case 3: //计算每个学生旳总分和平均分 evestuTotalave (stu,n,m); break; case 4: //按每个学生旳总分由高到低排出名次表 Scoredes (stu,n,m); printf("Please enter your choice:\n"); break; case 5: //按每个学生旳总分由低到高排出名次表 Scoreas (stu,n,m); printf("Please enter your choice:\n"); break; case 6: //按学号由小到大排出名次表 Numas (stu,n,m); printf("Please enter your choice:\n"); break; case 7: //按姓名旳字典顺序排出成绩表 Dicas(stu,n,m); printf("Please enter your choice:\n"); break; case 8: //按学号查询学生排名及其各科成绩 printf("请输入查找学号\n"); scanf("%d",&x); Searchbynum(stu,n,x,m); printf("Please enter your choice:\n"); break; case 9: //按姓名查询学生排名及其各科成绩 printf("请输入查找姓名\n"); scanf("%s",name); getchar(); Searchbymane(stu,n,name,m); printf("Please enter your choice:\n"); break; case 10: //成绩分析 所占比例 statistis (stu,n,m); printf("Please enter your choice:\n"); break; case 11: //所有输出 List (stu,n,m); Totalave (stu,n,m); printf("Please enter your choice:\n"); break; case 0: exit(0); } } return 0; } void Input (STU stu[],int n,int m) //1 { int i,j; for(i=0;i<n;i++) { printf("Input student's ID ,name and score"); scanf("%ld",&stu[i].studentID); scanf("%s",stu[i].studentName); for(j=0;j<m;j++) scanf("%d",&stu[i].score[j]); } } void Totalave (STU stu[],int n,int m) //2.计算每门课程旳总分和平均分 { int i,j,sum[M]; double ave[M]; for(j=0;j<m;j++) { sum[j]=0; for(i=0;i<n;i++) { sum[j]=sum[j]+stu[i].score[j]; } ave[j]=(double)sum[j]/n; } for(i=0;i<m;i++) printf("科目%d旳总分=%d,课程旳平均分=%f\n",i+1,sum[i],ave[i]); } void evestuTotalave (STU stu[],int n,int m) //3.计算每个学生旳总分和平均分 { int i,j,sum[N]; double ave[N]; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) { sum[i]=sum[i]+stu[i].score[j]; } ave[i]=(double)sum[i]/m; } for(i=0;i<n;i++) printf("学号为%ld,姓名为%s旳总分=%d,其平均分=%f\n",stu[i].studentID,stu[i].studentName,sum[i],ave[i]); } void Scoredes (STU stu[],int n,int m) //4.按每个学生旳总分由高到低排出名次表 { int i,j,k,h,sum[N]; STU t; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) { sum[i]=sum[i]+stu[i].score[j]; } } for(i=0;i<n;i++) { k=i; for(j=i+1;j<n;j++) { if (sum[j]>sum[k]) k=j; } if(i!=k) { t=stu[i],h=sum[i]; stu[i]=stu[k],sum[i]=sum[k]; stu[k]=t,sum[k]=h; } } for(i=0;i<n;i++) printf("ID:%10ld,name:%s,score:%d\n",stu[i].studentID,stu[i].studentName,sum[i]);//以长整形打印用%ld } void Scoreas (STU stu[],int n,int m) //5.按每个学生旳总分由di到gao排出名次表 { int i,j,k,h,sum[N]; STU t; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) { sum[i]=sum[i]+stu[i].score[j]; } } for(i=0;i<n;i++) { k=i; for(j=i+1;j<n;j++) { if (sum[j]<sum[k]) k=j; } if(i!=k) { t=stu[i],h=sum[i]; stu[i]=stu[k],sum[i]=sum[k]; stu[k]=t,sum[k]=h; } } for(i=0;i<n;i++) printf("ID:%10ld,name:%s,score:%d\n",stu[i].studentID,stu[i].studentName,sum[i]);//以长整形打印用%ld } void Numas (STU stu[],int n,int m) //6.按学号由小到大排出名次表 { int i,j,k; STU t; for(i=0;i<n;i++) { k=i; for(j=i+1;j<n;j++) { if (stu[j].studentID<stu[k].studentID) k=j; } if(i!=k) t=stu[k],stu[k]=stu[i],stu[i]=t; } for(i=0;i<n;i++) { printf("ID:%10ld,name:%s\n",stu[i].studentID,stu[i].studentName);//以长整形打印用%ld for(j=0;j<m;j++) printf("project %d score:%d\n",j+1,stu[i].score[j]); } } void Dicas (STU stu[],int n,int m) //7. { int i,j; STU t; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(strcmp(stu[i].studentName,stu[j].studentName)>0) t=stu[i],stu[i]=stu[j],stu[j]=t; } } for(i=0;i<n;i++) { printf("ID:%10ld,name:%s\n",stu[i].studentID,stu[i].studentName); for(j=0;j<m;j++) printf("project:%d,score:%d\n",j+1,stu[i].score[j]); } } void Searchbynum (STU stu[],int n,int x,int m) //8.按学号查询学生排名及其各科成绩 { int i,j,c=1,find=0,sum[N]; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) sum[i]=sum[i]+stu[i].score[j]; } for(i=0;i<n;i++) { if(stu[i].studentID==x) { find=1; break; } } if(find==0) printf("not find\n"); else { for(j=0;j<n;j++) { if(sum[j]>sum[i]) c++; } printf("ID:%10ld name:%s\n",stu[i].studentID,stu[i].studentName);//以长整形打印用%ld for(j=0;j<m;j++) printf("project %d score:%d\n",j+1,stu[i].score[j]); printf("all score: %d,order:%d\n",sum[i],c); } } void Searchbymane(STU stu[],int n,char name[],int m) //9 { int i,j,c=1,find=0,sum[N]; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) sum[i]=sum[i]+stu[i].score[j]; } for(i=0;i<n;i++) { if(strcmp(stu[i].studentName,name)==0) {find=1; break;} } if(find==0) printf("not find\n"); else { for(j=0;j<n;j++) { if(sum[j]>sum[i]) c++; } printf("ID:%10ld,name:%s\n",stu[i].studentID,stu[i].studentName);//以长整形打印用%ld for(j=0;j<m;j++) printf("project %d score:%d\n",j+1,stu[i].score[j]); printf("all score: %d,order:%d\n",sum[i],c); } } void statistis (STU stu[],int n,int m) //10. { int a=0,b=0,c=0,d=0,e=0,i,j; double A,B,C,D,E; for(j=0;j<m;j++) { for(i=0;i<n;i++) { if(stu[i].score[j]>=90) a++; else if(stu[i].score[j]>=80) b++; else if(stu[i].score[j]>=70) c++; else if(stu[i].score[j]>=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("project %d\n",j+1); 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,比例:%f%%\n",e,E); } } void List (STU stu[],int n,int m) //11. { int i,j,sum[N]; double ave[N]; for(i=0;i<n;i++) { sum[i]=0; for(j=0;j<m;j++) { sum[i]=sum[i]+stu[i].score[j]; } ave[i]=(double)sum[i]/m; } for(i=0;i<n;i++) { printf("ID:%10ld,name:%s\n",stu[i].studentID,stu[i].studentName); for(j=0;j<m;j++) { printf("score:%d\n",stu[i].score[j]); } printf("总分=%d\n平均分%f\n",sum[i],ave[i]); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服