大佬教程收集整理的这篇文章主要介绍了C语言版学生成绩管理系统,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参考,具体内容如下
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<@R_696_10495@ng.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tmp[]="D:\\tmp"; struct student { char name[20]; char No[20]; char Dept[20]; char Classno[20]; double Math,Chinese,English; double Ave; bool Pass; }students[500]; bool cmp1(student s1,student s2) { return s1.Chinese>s2.Chinese; } bool cmp2(student s1,student s2) { return s1.Math>s2.Math; } bool cmp3(student s1,student s2) { return s1.English>s2.English; } bool cmp4(student s1,student s2) { return s1.Ave>s2.Ave; } //---------------------------------------------------------voID Sort(int cmd) /* 1 ChineseSort 2 MathSort 3 EnglishSort 4 AveSort */ int Sort(int cmd) { student stu; file *fp=fopen(path,"ab+"); int n,cnt=0; while((n=fread(&stu,sizeof(stu),1,fp)>0)) { students[cnt++]=stu; } fclose(fp); switch(cmd) { case 1: std::sort(students,students+cnt,cmp1); break; case 2: std::sort(students,cmp2); break; case 3: std::sort(students,cmp3); break; case 4: std::sort(students,cmp4); break; default: exit(0); } return cnt; } //---------------------------------------------------------Printtitle() voID Printtitle() { printf("%-8s%-12s%-12s%-8s%-7s%-7s%-7s%-7s%-s\n","姓名","班级","学号","系院","语文","数学","英语","平均分","及格"); } //---------------------------------------------------------Print(student stu) voID Print(student stu) { printf("%-8s%-12s%-12s%-8s%-7.2lf%-7.2lf%-7.2lf%-7.2lf%-s\n",stu.name,stu.Classno,stu.No,stu.Dept,stu.Chinese,stu.Math,stu.English,stu.Ave,stu.Pass?"是":"否"); } //---------------------------------------------------------PrintNo(char No[]) voID PrintNo(char No[]) { student stu; int n; bool find=0; file *fp=fopen(path,"ab+");//以ab+方式打开防止data文件不存在时发生错误 while((n=fread(&stu,fp))>0) { if(!strcmp(stu.No,No)) { find=1; break; } } fclose(fp); if(find) { Printtitle(); Print(stu); } else puts("未找到!"); } //---------------------------------------------------------PrintClass(char Classno[]) voID PrintClass(char Classno[]) { student stu; file *fp=fopen(path,fp)>0)) { if(!strcmp(stu.Classno,Classno)) { if(cnt==0) Printtitle(); Print(stu); cnt++; } } fclose(fp); if(cnt==0) puts("无数据"); else printf("共%d条\n",cnt); } //---------------------------------------------------------PrintDept(char Dept[]) voID PrintDept(char Dept[]) { student stu; file *fp=fopen(path,fp)>0)) { if(!strcmp(stu.Dept,Dept)) { if(cnt==0) Printtitle(); Print(stu); cnt++; } } fclose(fp); if(cnt==0) puts("无数据"); else printf("共%d条\n",cnt); } //---------------------------------------------------------PrintAll() voID PrintAll() { student stu; file *fp=fopen(path,fp)>0)) { if(cnt==0) Printtitle(); Print(stu); cnt++; } fclose(fp); if(cnt==0) puts("无数据"); else printf("共%d条\n",cnt); } //---------------------------------------------------------input() student input() { student stu; puts("请输入姓名、班级、学号、系院:"); scanf("%s%s%s%s",&stu.name,&stu.Classno,&stu.No,&stu.Dept); puts("请输入各科成绩:语文、数学、英语"); scanf("%lf%lf%lf",&stu.Chinese,&stu.Math,&stu.English); stu.Ave=(stu.Chinese+stu.Math+stu.English)/3; if(stu.Chinese>=60&&stu.Math>=60&&stu.English>=60) stu.Pass=1; else stu.Pass=0; return stu; } //---------------------------------------------------------insert() voID insert() { int cmd; do{ student stu=input(); file *fp=fopen(path,"ab+"); fwrite(&stu,fp); fclose(fp); puts("录入成功"); puts("继续录入吗?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------Del() voID Del() { int cmd,cmd2; char No[20]; do{ puts("请输入要删除的学号:"); scanf("%s",&No); student stu; file *fp=fopen(path,"ab+"); file *fp2=fopen(tmp,"wb"); int n,find=0; while((n=fread(&stu,No)) { find=1; Print(stu); puts("确定要删除吗?[1]确定[0]取消"); scanf("%d",&cmd2); if(cmd2==1) puts("已删除"); else fwrite(&stu,fp2); } else fwrite(&stu,fp2); } fclose(fp); fclose(fp2); if(find==0) { printf("未找到学号%s\n",No); remove(tmp); } else { remove(path); rename(tmp,path); } puts("继续删除吗?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------Change() voID Change() { int cmd; char No[20]; do{ puts("请输入要更改的学号:"); scanf("%s",&No); student stu; int find=0; file *fp=fopen(path,"wb"); int n; while((n=fread(&stu,No)) { find=1; stu=input(); fwrite(&stu,fp2); } else fwrite(&stu,fp2); } fclose(fp); fclose(fp2); if(find) { remove(path); rename(tmp,path); puts("更改成功!"); } else { printf("未找到学号%s\n",No); remove(tmp); } puts("继续更改吗?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------AboutCourse voID Chinese() { double sum=0,ave; int pass=0,fail=0,better=0; student stu; file *fp=fopen(path,cnt=Sort(1); while((n=fread(&stu,fp))>0) { sum+=stu.Chinese; if(stu.Chinese>=60) { pass++; if(stu.Chinese>=80) better++; } else faiL++; } ave=sum/cnt; puts("语文成绩分析……"); printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); printf("%-8s%-10s%-12s%-s\n","名次","语文"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].name,students[i].No,students[i].ChinesE); } printf("平均分:%.2lf\n",avE); } voID Math() { double sum=0,cnt=Sort(2); while((n=fread(&stu,fp))>0) { sum+=stu.Math; if(stu.Math>=60) { pass++; if(stu.Math>=80) better++; } else faiL++; } ave=sum/cnt; puts("数学成绩分析……"); printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n","数学"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].Math); } printf("平均分:%.2lf\n",avE); } voID English() { double sum=0,cnt=Sort(3); while((n=fread(&stu,fp))>0) { sum+=stu.English; if(stu.English>=60) { pass++; if(stu.English>=80) better++; } else faiL++; } ave=sum/cnt; puts("英语成绩分析……"); printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n","英语"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].English); } printf("平均分:%.2lf\n",avE); } voID Average() { student stu; int n,cnt=Sort(4); double sum=0; file *fp=fopen(path,"ab+"); while((n=fread(&stu,fp))>0) { sum+=stu.Chinese; sum+=stu.Math; sum+=stu.English; } puts("平均成绩分析……"); printf("%-8s%-10s%-12s%-s\n","平均成绩"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].AvE); } printf("平均分:%.2lf\n",sum/cnt/3); } //---------------------------------------------------------Search() voID Search() { int cmd,cmd2; while(1) { system("cls"); puts("[1] 按学号查询"); puts("[2] 按班级查询"); puts("[3] 输出全部"); puts("[4] 按系别查询"); puts("[5] 课程分析"); puts("[0] 返回主界面"); scanf("%d",&cmd); if(cmd==0) break; switch(cmd) { case 1: { char No[20]; puts("请输入要查询的学号:"); scanf("%s",&No); PrintNo(No); } break; case 2: { char Classno[20]; puts("请输入要查询班级号:"); scanf("%s",&Classno); PrintClass(Classno); } break; case 3: PrintAll(); break; case 4: { char Dept[20]; puts("请输入要查询的系别:"); scanf("%s",&Dept); PrintDept(Dept); } break; case 5: while(1) { puts("[1] 语文成绩分析"); puts("[2] 数学成绩分析"); puts("[3] 英语成绩分析"); puts("[4] 平均成绩分析"); puts("[0] 返回上一级"); scanf("%d",&cmd2); if(cmd2==0) break; switch(cmd2) { case 1: Chinese(); break; case 2: Math(); break; case 3: English(); break; case 4: Average(); break; default: puts("不合法指令!"); } } break; default: puts("不合法指令!"); } while(1) { puts("[0] 返回"); puts("[1] 录入"); puts("[2] 删除"); puts("[3] 修改"); scanf("%d",&cmd2); if(cmd2==0) break; switch(cmd2) { case 1: insert(); break; case 2: Del(); break; case 3: Change(); break; default: puts("不合法指令!"); } } } } //---------------------------------------------------------Menu() voID ShowMenu1() { int i; puts(""); printf(" "); for(i=0;i<14;i++) putchar(c); printf("成绩管理分析系统"); for(i=0;i<14;i++) putchar(c); puts(""); printf(" %c %c\n",c,c); printf(" %c 请输入指令 %c\n",c); printf(" %c %c\n",c); printf(" %c [0] 退出 %c\n",c); printf(" %c [1] 录入 %c\n",c); printf(" %c [2] 删除 %c\n",c); printf(" %c [3] 查询 %c\n",c); printf(" %c [4] 更改 %c\n",c); printf(" "); for(i=0;i<44;i++) putchar(c); puts(""); } voID ShowMenu2() { int i; puts(""); printf(" "); for(i=0;i<14;i++) putchar(c); printf("成绩管理分析系统"); for(i=0;i<14;i++) putchar(c); puts(""); printf(" %c %c\n",c); printf(" %c 请输入指令 %c\n",c); printf(" %c %c\n",c); printf(" %c [0] 退出 %c\n",c); printf(" %c [1] 录入 %c\n",c); printf(" %c [2] 删除 %c\n",c); printf(" %c [3] 查询 %c\n",c); printf(" %c [4] 更改 %c\n",c); printf(" "); for(i=0;i<44;i++) putchar(c); puts(""); } //---------------------------------------------------------voID Randcolor() voID Randcolor() { int a,b; char param[20]="color ",param2[10]; do{ a=rand()%16; b=rand()%16; }while(a==b); sprintf(param2,"%x%x",a,b); strcat(param,param2); system(param); } //---------------------------------------------------------main() int main() { int cmd; srand(time(NulL)); for(int i=0;i<8;i++) { Randcolor(); system("cls"); ShowMenu1(); system("cls"); ShowMenu2(); } system("color 0a"); while(1) { system("cls"); ShowMenu1(); printf("[ ]\b\b"); scanf("%d",&cmd); if(cmd==0) break; switch(cmd) { case 1: insert(); break; case 2: Del(); break; case 3: Search(); break; case 4: Change(); break; default: puts("命令不合法!"); } } return 0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的C语言版学生成绩管理系统全部内容,希望文章能够帮你解决C语言版学生成绩管理系统所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。