收藏 分销(赏)

学生成绩管理系统v6.0.doc

上传人:可**** 文档编号:4576631 上传时间:2024-09-30 格式:DOC 页数:10 大小:39.04KB
下载 相关 举报
学生成绩管理系统v6.0.doc_第1页
第1页 / 共10页
学生成绩管理系统v6.0.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
#include <stdio。h> #include 〈stdlib.h> #include <string。h〉 #define m_l 10 #define m_num 30 #define m_cs 6 typedef struct student { long num ; char name[m_l]; float score[m_cs]; float sum; float aver; }STU; int menu(void); void Readscore(STU stu[],int n,int m); void Aversumofeverystudent(STU stu[],int n,int m); void Aversumofeverycourse(STU stu[],int n,int m); void Sortbyscore(STU stu[],int n,int m,int (*compare)(float a,float b)); int Ascending(float a,float b); int Descending(float a,float b); void swapfloat(float *x,float *y); void swaplong(long *x,long *y); void swapchar(char x[],char y[]); void Assortbynum(STU stu[], int n, int m); void Sortbyname(STU stu[], int n, int m); void Searchbynum(STU stu[], int n, int m); void Searchbyname(STU stu[], int n, int m); void StatisticAnlysis(STU stu[], int n, int m); void Printscore(STU stu[], int n, int m); void Writetofile(STU stu[], int n, int m); void Readfromfile(STU stu[], int *n, int *m); int main() { char ch; int n=0,m=0; STU stu[m_num]; printf(”请输入学生人数(n〈=%d):\n”,m_num); scanf(”%d",&n); printf("请输入课程数目(m<=%d):\n",m_cs); scanf("%d",&m); while(1) { ch=menu(); switch(ch) { case 1: Readscore(stu,n,m); break; case 2: Aversumofeverystudent(stu ,n,m); break; case 3: Aversumofeverycourse(stu ,n,m); break; case 4: Sortbyscore(stu ,n,m,Descending); printf("\n成绩降序排序\n”); Printscore( stu ,n, m); break; case 5: Sortbyscore(stu ,n,m,Ascending); printf(”\n成绩升序排序\n"); Printscore( stu ,n, m); break; case 6: Assortbynum( stu , n, m); printf(”\n学号升序排序\n"); Printscore( stu ,n, m); break; case 7: Sortbyname( stu , n, m); printf("\n姓名字典升序排序\n”); Printscore( stu ,n, m); break; case 8: Searchbynum( stu , n, m); break; case 9: Searchbyname( stu , n, m); break; case 10: StatisticAnlysis( stu , n, m); break; case 11: Printscore( stu ,n, m); break; case 12: Writetofile(stu,n,m); break; case 13: Readfromfile(stu,&n,&m); break; case 0: printf("\n欢迎下次继续使用”); exit(0); default: printf("\n输入错误”); } } return 0; } int menu(void) { int items; 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("11。显示成绩\n"); printf(”12.写入文件\n”); printf(”13。读取文件\n”); printf(”0.退出\n”); printf("请做出您的选择\n”); scanf("%d",&items); return items; } void Readscore(STU stu[],int n,int m) { int i,j; printf(”请输入学生学号,姓名,成绩\n”); for(i=0;i〈n;i++) { scanf("%ld%s”,&stu[i].num,stu[i]。name); stu[i].sum=0; for(j=0;j<m;j++) { scanf("%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; } } void Aversumofeverystudent(STU stu[],int n,int m) { int i,j; for(i=0;i〈n;i++) { printf("学生 %d:总成绩: %.1f,平均成绩: %.1f\n",i+1,stu[i]。sum,stu[i]。aver); } } void Aversumofeverycourse(STU stu[],int n,int m) { int i,j; float sum[m_cs],aver[m_cs]; for(i=0;i<m;i++) { sum[i]=0; for(j=0;j<n;j++) { sum[i]+=stu[j]。score[i]; } aver[i]= n>0?sum[i]/n:—1; printf("课程 %d:总成绩: %。1f,平均成绩: %。1f\n”,i+1,sum[i],aver[i]); } } void Sortbyscore(STU stu[],int n,int m,int (*compare)(float a,float b)) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if((*compare)(stu[j]。sum,stu[k]。sum)) k=j; } if(k!=i) { for(t=0;t〈m;t++) { swapfloat(&stu[k].score[t],&stu[i]。score[t]); } swapfloat(&stu[k].sum,&stu[i].sum); swapfloat(&stu[k].aver,&stu[i].aver); swaplong(&stu[k]。num,&stu[i].num); swapchar(stu[k]。name,stu[i].name); } } } int Ascending(float a,float b) { return a〈b; } int Descending(float a,float b) { return a〉b; } void swapfloat(float *x,float *y) { float b; b=*x; *x=*y; *y=b; } void swaplong(long *x,long *y) { long b; b=*x; *x=*y; *y=b; } void swapchar(char x[],char y[]) { char b[m_l]; strcpy(b,x); strcpy(x,y); strcpy(y,b); } void Assortbynum(STU stu[], int n, int m) { int i,j,k,t; for(i=0;i〈n—1;i++) { k=i; for(j=i+1;j<n;j++) { if(stu[j]。num〈stu[k]。num) k=j; } if(k!=i) { for(t=0;t<m;t++) { swapfloat(&stu[k].score[t],&stu[i]。score[t]); } swapfloat(&stu[k]。sum,&stu[i]。sum); swapfloat(&stu[k]。aver,&stu[i]。aver); swaplong(&stu[k].num,&stu[i]。num); swapchar(stu[k].name,stu[i]。name); } } } void Sortbyname(STU stu[], int n, int m) { int i,j,t; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(strcmp(stu[j].name,stu[i].name)〈0) { for(t=0;t<m;t++) { swapfloat(&stu[i].score[t],&stu[j].score[t]); } swapfloat(&stu[j].sum,&stu[i]。sum); swapfloat(&stu[j].aver,&stu[i].aver); swaplong(&stu[j].num,&stu[i]。num); swapchar(stu[j].name,stu[i].name); } } } } void Searchbynum(STU stu[], int n, int m) { long num; int i,j; printf("输入你所想要查找的学号\n"); scanf(”%ld",&num); for(i=0;i〈n;i++) { if(stu[i]。num==num) { printf(”%ld\t%s\t",stu[i]。num,stu[i].name); for(j=0;j〈m;j++) { printf(”%.0f\t”,stu[i].score[j]); } printf("%。0f\t%。0f\n”,stu[i].sum,stu[i].aver); return; } } printf("\n查无此号 \n”); } void Searchbyname(STU stu[], int n, int m) { char name[m_l]; int i,j; printf(”输入你所想要查找的姓名\n”); scanf(”%s”,name); for(i=0;i〈n;i++) { if(strcmp(stu[i].name,name)==0) { printf(”%ld\t%s\t”,stu[i]。num,stu[i]。name); for(j=0;j〈m;j++) { printf("%。0f\t”,stu[i]。score[j]); } printf("%.0f\t%.0f\n”,stu[i]。sum,stu[i].aver); return; } } printf("\n查无此人 \n"); } void StatisticAnlysis(STU stu[], int n, int m) { int i,j,total,t[6]; for(j=0;j〈m;j++) { printf("学科:%d:\n”,j+1); memset(t,0,sizeof(t)); for(i=0;i<n;i++) { if(stu[i]。score[j]〉=0&&stu[i].score[j]〈60) t[0]++; else if(stu[i].score[j]<70) t[1]++; else if(stu[i]。score[j]〈80) t[2]++; else if(stu[i].score[j]〈90) t[3]++; else if(stu[i]。score[j]〈100) t[4]++; else if(stu[i].score[j]==100) t[5]++; } total=0; for(i=0;i<=5;i++) { total+=t[i]; } for(i=0;i<=5;i++) { if(i==0) printf(”〈60\t%d\t%。2f%%\n”,t[i],(float)t[i]/n*100); else if(i==5) printf(”=100\t%d\t%.2f%%\n”,t[i],(float)t[i]/n*100); else printf("%d-%d\t%d\t%.2f%%\n”,t[i],(i+5)*10,(i+5)*10+9,(float)t[i]/n*100); } } } void Printscore(STU stu[], int n, int m) { int i,j; for(i=0;i<n;i++) { printf("%ld\t%s\t",stu[i].num,stu[i]。name); for(j=0;j〈m;j++) { printf(”%。1f\t”,stu[i].score[j]); } printf(”%。1f\t%.1f\n",stu[i]。sum,stu[i]。aver); } } void Writetofile(STU stu[], int n, int m) { FILE *fp; int i,j; if((fp=fopen("student。txt”,”w"))==NULL) { printf(”打开 “student。txt”失败!\n"); exit(0); } fprintf(fp,”%d\t%d\n",n,m); for(i=0;i〈n;i++) { fprintf(fp,”%10ld%10s”,stu[i]。num,stu[i]。name); for(j=0;j<m;j++) { fprintf(fp,"%12.0f",stu[i]。score[j]); } fprintf(fp,"%12.0f%12.0f\n",stu[i]。sum,stu[i]。aver); } fclose(fp); } void Readfromfile(STU stu[],int *n,int *m) { FILE *fp; int i,j; if((fp=fopen("student。txt",”r”))==NULL) { printf("打开 score.txt!失败\n"); exit(0); } fscanf(fp,”%d\t%d”,n,m); for(i=0;i<*n;i++) { fscanf(fp,"%10ld”,&stu[i].num); fscanf(fp,”%s”,&stu[i].name); for(j=0;j<*m;j++) { fscanf(fp,”%10f",&stu[i].score[j]); } fscanf(fp,"%10f%10f\n”,&stu[i].sum,&stu[i]。aver); } fclose(fp); }
展开阅读全文

开通  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 

客服