C语言学生成绩管理系统设计
本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下
Ps:后加了个链表排序,用冒泡写的。
/* Title:Student'sscoremanagementsystem Author:nyist_xiaod Date:2012.5.8 */ #include#include #include #include #definePrint_Head_Numputs("班级姓名语文数学英语总成绩") #definePrint_Head_Claputs("学号姓名语文数学英语总成绩") #definePrint_Head_Allputs("班级学号姓名语文数学英语总成绩") typedefstructNodeNode; structScore { intchinese,math,english,sum; }; structNode { charname[20],classs[20],number[20]; structScorescore; structNode*next; }*head,*u,*p,*q; intn,C,M,E,Cj,Cy,Mj,My,Ej,Ey; charnum[20]; voidWelcome() { printf("\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); printf("\t\t%c欢迎您使用学生成绩管理系统%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c1.读取文件%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c2.保存文件%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c3.添加学生成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c4.修改学生成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c5.删除学生成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c6.查询本人成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c7.查询本班成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c8.查询全校成绩%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c9.退出管理系统%c\n",4,4); printf("\t\t%c%c\n",4,4); printf("\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); printf("\t\t请输入指令:(1-9)"); } Node*new_node(Node*uu) { uu=(Node*)malloc(sizeof(Node)); uu->next=NULL; returnuu; } voidAdd() { u=new_node(u); printf("\n请输入您要加入的学生的信息:\n"); printf("\n姓名:"); scanf("%s",u->name); printf("\n班级:"); scanf("%s",u->classs); printf("\n学号:"); scanf("%s",u->number); printf("\n语文、数学、英语成绩:"); scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); u->score.sum=u->score.chinese+u->score.math+u->score.english; u->next=head->next; head->next=u; printf("\n--->添加成功!\n"); } voidMod() { n=0; printf("\n请输入您要修改的学号:"); scanf("%s",num); for(u=head;u!=NULL;u=u->next) { if(strcmp(u->number,num)==0) { n=1; printf("\n请输入新的语文、数学、英语成绩:"); scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); u->score.sum=u->score.chinese+u->score.math+u->score.english; printf("\n--->修改成功!\n"); break; } } if(!n) printf("\n--->没有这个学生的信息!\n"); } voidDel() { n=0; printf("\n请输入您要删除的学生的学号:"); scanf("%s",num); for(u=head;u!=NULL;u=u->next) { if(strcmp(u->number,num)==0) { n=1; p->next=u->next; free(u); printf("\n--->删除成功!\n"); break; } p=u; } if(!n) printf("\n--->没有这个学生的信息!\n"); } voidSort() { inti,j; n=0; for(u=head->next;u!=NULL;u=u->next) n++; for(i=1;i<=n;i++) { u=head; for(j=0;j next; q=p->next; if(strcmp(p->classs,q->classs)>0||strcmp(p->classs,q->classs)==0&&p->score.sum score.sum) { u->next=q; p->next=q->next; q->next=p; } u=u->next; } } } voidQue_One() { n=0; printf("\n请输入您要查询的学生的学号:"); scanf("%s",num); for(u=head->next;u!=NULL;u=u->next) { if(strcmp(u->number,num)==0) { n=1; printf("\n"); Print_Head_Num; printf("%-11s%-15s",u->classs,u->name); printf("%-6d%-6d%-6d%-6d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); break; } } if(!n) printf("\n--->没有这个学生的信息!\n"); } voidAnalyze_Sco(Node*uu) { C+=uu->score.chinese; M+=uu->score.math; E+=uu->score.english; if(uu->score.chinese>=60) Cj++; if(uu->score.chinese>=90) Cy++; if(uu->score.math>=60) Mj++; if(uu->score.math>=90) My++; if(uu->score.english>=60) Ej++; if(uu->score.english>=90) Ey++; } voidPrint_Sco() { printf("语文平均成绩:%-6.2f,及格率:%%%-6.2f,优秀率:%%%-6.2f.\n\n",(float)C/n,(float)100*Cj/n,(float)100*Cy/n); printf("数学平均成绩:%-6.2f,及格率:%%%-6.2f,优秀率:%%%-6.2f.\n\n",(float)M/n,(float)100*Mj/n,(float)100*My/n); printf("英语平均成绩:%-6.2f,及格率:%%%-6.2f,优秀率:%%%-6.2f.\n\n",(float)E/n,(float)100*Ej/n,(float)100*Ey/n); } voidQue_Cla() { Sort(); n=C=M=E=Cj=Cy=Mj=My=Ej=Ey=0; printf("\n请输入您要查询的班级:"); scanf("%s",num); printf("\n"); for(u=head->next;u!=NULL;u=u->next) { if(strcmp(u->classs,num)) continue; if(!n) Print_Head_Cla; n++; printf("%-11s%-15s",u->number,u->name); printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); Analyze_Sco(u); } if(!n) { printf("没有这个班级的学生信息!\n"); return; } printf("\n该班共有学生%d人.\n\n",n); Print_Sco(); } voidQue_All() { Sort(); n=C=M=E=Cj=Cy=Mj=My=Ej=Ey=0; printf("\n"); if(head->next==NULL) { printf("--->没有学生信息!\n"); return; } Print_Head_All; for(u=head->next;u!=NULL;u=u->next) { n++; printf("%-12s%-12s%-15s",u->classs,u->number,u->name); printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); Analyze_Sco(u); } printf("\n全校共有学生%d人.\n\n",n); Print_Sco(); } voidSave() { charc; printf("\n确认保存?(Y/N):"); scanf("%*c%c",&c); if(c=='N') return; FILE*fp; if((fp=fopen("C:\\data.txt","w"))==NULL) { printf("\n--->无法打开文件\n"); return; } fputs("班级学号姓名语文数学英语总成绩",fp); if(head->next!=NULL) fputs("\n",fp); for(u=head->next;u!=NULL;u=u->next) { fprintf(fp,"%-11s%-11s%-15s",u->classs,u->number,u->name); fprintf(fp,"%-6d%-6d%-6d%-d",u->score.chinese,u->score.math,u->score.english,u->score.sum); if(u->next!=NULL) fprintf(fp,"\n"); } fclose(fp); printf("\n--->成绩成功存入C:\\\\data.txt中\n"); } voidOpen() { printf("\n请把数据放到目录C:\\\\data.txt中,按任意键确认.\n"); getch(); FILE*fp; if((fp=fopen("C:\\data.txt","r"))==NULL) { printf("\n--->没有找到文件!\n"); return; } chartmp[100]; fgets(tmp,66,fp); while(!feof(fp)) { u=new_node(u); fscanf(fp,"%s%s%s",u->classs,u->number,u->name); fscanf(fp,"%d%d%d%d",&u->score.chinese,&u->score.math,&u->score.english,&u->score.sum); u->next=head->next; head->next=u; } printf("\n--->成绩读入成功!\n"); fclose(fp); } voidExi() { charc; printf("\n确定退出?(Y/N):"); scanf("%*c%c",&c); if(c=='N') return; system("cls"); printf("\n\n"); printf("\t\t\t%c%c%c%c%c%c%c%c%c\n",4,4,4,4,4,4,4,4,4); printf("\t\t\t%cMadebyXiaod%c\n",4,4); printf("\t\t\t%c%c%c%c%c%c%c%c%c\n",4,4,4,4,4,4,4,4,4); printf("\t\t\tThankyou!\n\n\n"); exit(0); } intmain() { intorz; system("color0B"); head=new_node(head); while(1) { Welcome(); scanf("%d",&orz); system("cls"); switch(orz) { case1:Open();break; case2:Save();break; case3:Add();break; case4:Mod();break; case5:Del();break; case6:Que_One();break; case7:Que_Cla();break; case8:Que_All();break; case9:Exi();break; default:printf("\n--->无效的指令!\n"); } printf("\n"); system("pause"); system("cls"); } return0; }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。