♻️ 资源大小2.56MB➡️资源下载https://download.csdn.net/download/s1t16/87430276学生成绩管理系统设计内容及要求建立一个学生成绩管理系统要求系统能够创建学生成绩信息文件根据提示输入学生的各项信息计算出总分和平均分然后将学生成绩信息存储到一个二进制文件中。系统要能增加学生信息在原有学生信息文件的基础上增加新的学生成绩信息要求继续保存至原文件并提示用户选择是否继续进行增加操作。创建的系统要能删除学生信息提示用户输入要进行删除操作的学号如果在文件中有该信息存在则将该学号所对应的学生信息删除否则输出提示信息并提示用户选择是否继续进行删除操作。要求用户能通过系统修改学生信息。系统要提示用户输入要进行修改操作的学号如果在文件中有该息存在则将提示用户输入该学号对应的要修改的选项结果保存至原文件并提示用户选择是否继续进行修改操作。要求用户能通过系统按学号或全名对学生信息进行查询操作输出满足条件的学生信息。要求系统能按平均分统计各个分数段的学生人数不及格60-6970-7980-8990-100分别找出 3 门课程成绩最高的学生并输出他们的信息分别统计出 3 门课程的不及格率并输出。设计思路系统通过结构体数组来构造所有功能由子函数完成主函数只进行人数输入和函数功能选择主函数通过 switch 函数进行操作步骤的选择。学生成绩管理系统包括 12 个模块输入数据打印信息按学号找学生信息按姓名找学生信息修改学生信息增加学生信息删除学生信息按平均分统计各个分数段的学生人数找出 3 门课程成绩最高的学生并输出他们的信息函数功能统计 3 门课程的不及格率将数据写入文件结束整个程序。这 12 个模块既相互联系又相互独立。本系统根据学生成绩管理的需要而建立一个学生成绩管理系统以方便对成绩的各项管理操作。以下为子函数声明及其功能int input(struct student *parr,int len);//函数功能输入数据 int output(struct student *parr,int *len);//函数功能打印信息 int findnum(struct student *parr,int len);//函数功能按学号找学生信息 int findname(struct student *parr,int len);//函数功能按姓名找学生信息 int modify(struct student *parr,int len);//函数功能修改学生信息 int add(struct student *parr,int len ) ;//函数功能增加学生信息 int del(struct student *parr,int len) ;//函数功能删除学生信息 int statistics1(struct student *parr,int len);//函数功能按平均分统计各个分数段的学生人数 int statistics2(struct student *parr,int len);//函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics3(struct student *parr,int len);//函数功能统计3门课程的不及格率 int write(struct student *parr,int len);//函数功能将数据写入文件 void exit(struct student *parr,int len);//函数功能结束整个程序设计结果及分析1.运行程序输入要存入的学生人数2.进入到操作菜单3.操作 a录入学生信息4.操作 b查看全部学生信息5.操作 c按学号查找学生信息6.操作 d按全名查找学生信息7.操作 e修改学生信息8.操作 f增加学生信息9.操作 g删除学生信息10.操作 h按平均分统计各个分数段的学生人数11.操作 i找出 3 门课程成绩最高的学生并输出他们的信息12.操作 j统计 3 门课程的不及格率13.操作 k将数据写入文件14.操作 0结束整个程序四、总结总结描述系统基本上完成了问题描述的要求解决了问题加入了许多提示性的语句使系统更人性化。遇到的问题1.add 函数编写时遇到变量问题del 函数用覆盖法太麻烦保存二进制文件时不熟悉步骤解决方案1.定义结构体数组大小为 1000。在 del 函数中令要删除结构体数组的学号赋值为 0并且让其他函数输出时不输出学号为 0 的结构体数组实现了删除功能。查书看书上已有的步骤。附录源代码# include stdio.h # include stdlib.h # include string.h # include conio.h int input(struct student *parr,int len);//函数功能输入数据 int output(struct student *parr,int len);//函数功能打印信息 int findnum(struct student *parr,int len);//函数功能按学号找学生信息 int findname(struct student *parr,int len);//函数功能按姓名找学生信息 int modify(struct student *parr,int len);//函数功能修改学生信息 int add(struct student *parr,int len ) ;//函数功能增加学生信息 int del(struct student *parr,int len) ;//函数功能删除学生信息 int statistics1(struct student *parr,int len);//函数功能按平均分统计各个分数段的学生人数 int statistics2(struct student *parr,int len);//函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics3(struct student *parr,int len);//函数功能统计3门课程的不及格率 int write(struct student *parr,int len);//函数功能将数据写入文件 void exit(struct student *parr,int len);//函数功能结束整个程序 struct student { int number;//学号 char name[100];//姓名 char collage[100];//学院 char banji[100];//班级 float score1;//高数成绩 float score2;//英语成绩 float score3;//C语言成绩 float sum;//总分 float ave;//平均分 }; int main() { struct student * parr; int len 0; char ch \0; system(color 0A); printf(\t\t|**************************************************|\n); printf(\t\t|-------------欢迎使用学生成绩管理系统-------------|\n); printf(\t\t|**************************************************|\n); printf(\n\n\t\t请输入需要存入的学生人数); scanf(%d,len); parr (struct student *)malloc((sizeof(struct student) * 1000)); printf(按回车键继续\n); while(1) { system(cls); printf(\n\n\n\n); printf(\t\t|**************************************************|\n); printf(\t\t|--------学生管理系统 ----------------------------|\n); printf(\t\t|------- a.写入学生信息----------------------------|\n); printf(\t\t|------- b.查看全部学生信息------------------------|\n); printf(\t\t|------- c.按学号查找------------------------------|\n); printf(\t\t|------- d.按姓名查找------------------------------|\n); printf(\t\t|------- e.修改学生信息----------------------------|\n); printf(\t\t|------- f.增加学生信息----------------------------|\n); printf(\t\t|------- g.删除学生信息----------------------------|\n); printf(\t\t|------- h.按平均分统计各个分数段的学生人数--------|\n); printf(\t\t|------- i.找出3门课程成绩最高的学生并输出信息---|\n); printf(\t\t|------- j.统计3门课程的不及格率-------------------|\n); printf(\t\t|------- k.保存-----------------------------------|\n); printf(\t\t|------- 0.退出------------------------------------|\n); printf(\t\t|**************************************************|\n); printf(\t\t\n); scanf( %c,ch); switch(ch) { case a : leninput(parr,len); break; case b : lenoutput(parr,len); break; case c : lenfindnum(parr,len); break; case d : lenfindname(parr,len); break; case e : lenmodify(parr,len); break; case f : lenadd(parr,len); break; case g : lendel(parr,len); break; case h : lenstatistics1(parr,len); break; case i : lenstatistics2(parr,len); break; case j : lenstatistics3(parr,len); break; case k : lenwrite(parr,len); break; case 0 : exit(parr,len); break; default : printf(\n\t输入错误!按回车键返回主菜单); getch(); } } free(parr); return 0 ; } //函数功能打印信息 int output(struct student *parr,int len) { int i; for(i 0; i len; i) { if(parr[i].number !0) printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } printf(\n); getchar(); getchar(); return len; } //函数功能输入数据 int input(struct student *parr,int len ) { int i; for( i 0; i len; i) { printf(请输入学生信息); printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; } printf(\n); return len; } //函数功能将数据写入文件 int write(struct student *parr,int len) { int i;//控制循环 FILE *fp NULL;//定义文件指针 fp fopen(D:\\student.bin,wb);//打开文件并使文件指针指向它以写的方式 if(fp NULL)//如果文件没有打开提示错误并退出 { printf(\n\t文件没有打开程序结束); getchar();//等待用户观察 exit(0);//结束整个程序 } else { for(i0; ilen; i)//将数据依次写入文件 { if(parr[i].number !0) fprintf(fp, 姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } } printf(已将学生信息保存在了D盘根目录下的student.bin文件中。\n); getch(); fclose(fp); return len; } //函数功能按学号找学生信息 int findnum(struct student *parr,int len) { int number 0; int i; printf(请您输入需要查找的学号); scanf(%d,number); for( i0; ilen; i ) { if(number parr[i].numberparr[i].number !0) { printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } } getch(); return len; } //函数功能按姓名找学生信息 int findname(struct student *parr,int len) { int i; char name[100]; printf(请您输入需要查找的姓名); scanf(%s,name); for(i0; ilen; i) { if(strcmp(name, parr[i].name ) 0parr[i].number !0) printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } getch(); return len; } //函数功能结束整个程序 void exit(struct student *parr,int len) { char ch \0; do { printf(您确定要退出y/n:); scanf( %c,ch); } while((ch ! Y) (ch ! y) (ch ! N) (ch ! n)); if((ch Y) || (ch y)) { exit(0); } return; } //函数功能修改学生信息 int modify(struct student *parr,int len) { int number 0; char ch \0; int i; printf(请您输入要修改的学生的学号); scanf(%d,number); for( i0; ilen; i ) { if(number parr[i].numberparr[i].number !0) { printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); printf(您确定要修改该学生信息y/n); scanf( %c,ch); if(ch y) { printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); printf(修改成功!); getch(); } else { printf(没有找到该学生); getch(); break; } } } return len; } //函数功能增加学生信息 int add(struct student *parr,int len ) { int i,a,s; printf(请输入要加入的学生个数); scanf(%d,a); slen; lenlena; for(is; ilen; i) { printf(请输入第%d个学生信息,i 1); printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; } printf(\n); return len; } //函数功能按平均分统计各个分数段的学生人数 int statistics1(struct student *parr,int len) { int a,b,c,d,fail,i; a0; b0; c0; d0; fail0; for(i0; i1000; i) { if(parr[i].number !0) { if(parr[i].ave 90parr[i].ave 100) a; if(parr[i].ave80parr[i].ave 89) b; if(parr[i].ave70parr[i].ave 79) c; if(parr[i].ave60parr[i].ave 69) d; if(parr[i].ave0 parr[i].ave 59) fail; } } printf(90~100的人数%d\n,a); printf(80~89的人数%d\n,b); printf(70~79的人数%d\n,c); printf(60~69的人数%d\n,d); printf(不及格的人数%d\n,fail); getch(); return len; } //函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics2(struct student *parr,int len) { int mathmax,englishmax,cmax; mathmaxparr[0].score1 ; englishmaxparr[0].score2 ; cmaxparr[0].score3 ; int i; for(i0; ilen; i) { if(parr[i].number !0) { if(mathmaxparr[i].score1 ) mathmaxparr[i].score1 ; if(englishmaxparr[i].score2 ) englishmaxparr[i].score2 ; if(cmaxparr[i].score3 ) cmaxparr[i].score3 ; } } for(i0; ilen; i) { if(mathmaxparr[i].score1 ) printf(高数最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); if(englishmaxparr[i].score2 ) printf(英语最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); if(cmaxparr[i].score3 ) printf(C语言最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } getch(); return len; } //函数功能统计3门课程的不及格率 int statistics3(struct student *parr,int len) { int mathfail,englishfail,cfail; mathfail0; englishfail0; cfail0; int i,n; for(i0; ilen; i) { if(parr[i].number !0) { if(parr[i].score1 60) mathfail; if(parr[i].score2 60) englishfail; if(parr[i].score3 60) cfail; n; } } printf(数学的不及格率%d/%d\n,mathfail,n); printf(英语的不及格率%d/%d\n,englishfail,n); printf(C语言的不及格率%d/%d\n,cfail,n); getch(); return len; } //函数功能删除学生信息 int del(struct student *parr,int len) { int i,num; int n[100]; printf(请输入要删除学生的学号); scanf(%d,num); for(i0; ilen; i) { if(parr[i].number num) { parr[i].number 0; printf(已删除); } } return len; }
基于C语言实现(控制台)学生成绩管理系统
♻️ 资源大小2.56MB➡️资源下载https://download.csdn.net/download/s1t16/87430276学生成绩管理系统设计内容及要求建立一个学生成绩管理系统要求系统能够创建学生成绩信息文件根据提示输入学生的各项信息计算出总分和平均分然后将学生成绩信息存储到一个二进制文件中。系统要能增加学生信息在原有学生信息文件的基础上增加新的学生成绩信息要求继续保存至原文件并提示用户选择是否继续进行增加操作。创建的系统要能删除学生信息提示用户输入要进行删除操作的学号如果在文件中有该信息存在则将该学号所对应的学生信息删除否则输出提示信息并提示用户选择是否继续进行删除操作。要求用户能通过系统修改学生信息。系统要提示用户输入要进行修改操作的学号如果在文件中有该息存在则将提示用户输入该学号对应的要修改的选项结果保存至原文件并提示用户选择是否继续进行修改操作。要求用户能通过系统按学号或全名对学生信息进行查询操作输出满足条件的学生信息。要求系统能按平均分统计各个分数段的学生人数不及格60-6970-7980-8990-100分别找出 3 门课程成绩最高的学生并输出他们的信息分别统计出 3 门课程的不及格率并输出。设计思路系统通过结构体数组来构造所有功能由子函数完成主函数只进行人数输入和函数功能选择主函数通过 switch 函数进行操作步骤的选择。学生成绩管理系统包括 12 个模块输入数据打印信息按学号找学生信息按姓名找学生信息修改学生信息增加学生信息删除学生信息按平均分统计各个分数段的学生人数找出 3 门课程成绩最高的学生并输出他们的信息函数功能统计 3 门课程的不及格率将数据写入文件结束整个程序。这 12 个模块既相互联系又相互独立。本系统根据学生成绩管理的需要而建立一个学生成绩管理系统以方便对成绩的各项管理操作。以下为子函数声明及其功能int input(struct student *parr,int len);//函数功能输入数据 int output(struct student *parr,int *len);//函数功能打印信息 int findnum(struct student *parr,int len);//函数功能按学号找学生信息 int findname(struct student *parr,int len);//函数功能按姓名找学生信息 int modify(struct student *parr,int len);//函数功能修改学生信息 int add(struct student *parr,int len ) ;//函数功能增加学生信息 int del(struct student *parr,int len) ;//函数功能删除学生信息 int statistics1(struct student *parr,int len);//函数功能按平均分统计各个分数段的学生人数 int statistics2(struct student *parr,int len);//函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics3(struct student *parr,int len);//函数功能统计3门课程的不及格率 int write(struct student *parr,int len);//函数功能将数据写入文件 void exit(struct student *parr,int len);//函数功能结束整个程序设计结果及分析1.运行程序输入要存入的学生人数2.进入到操作菜单3.操作 a录入学生信息4.操作 b查看全部学生信息5.操作 c按学号查找学生信息6.操作 d按全名查找学生信息7.操作 e修改学生信息8.操作 f增加学生信息9.操作 g删除学生信息10.操作 h按平均分统计各个分数段的学生人数11.操作 i找出 3 门课程成绩最高的学生并输出他们的信息12.操作 j统计 3 门课程的不及格率13.操作 k将数据写入文件14.操作 0结束整个程序四、总结总结描述系统基本上完成了问题描述的要求解决了问题加入了许多提示性的语句使系统更人性化。遇到的问题1.add 函数编写时遇到变量问题del 函数用覆盖法太麻烦保存二进制文件时不熟悉步骤解决方案1.定义结构体数组大小为 1000。在 del 函数中令要删除结构体数组的学号赋值为 0并且让其他函数输出时不输出学号为 0 的结构体数组实现了删除功能。查书看书上已有的步骤。附录源代码# include stdio.h # include stdlib.h # include string.h # include conio.h int input(struct student *parr,int len);//函数功能输入数据 int output(struct student *parr,int len);//函数功能打印信息 int findnum(struct student *parr,int len);//函数功能按学号找学生信息 int findname(struct student *parr,int len);//函数功能按姓名找学生信息 int modify(struct student *parr,int len);//函数功能修改学生信息 int add(struct student *parr,int len ) ;//函数功能增加学生信息 int del(struct student *parr,int len) ;//函数功能删除学生信息 int statistics1(struct student *parr,int len);//函数功能按平均分统计各个分数段的学生人数 int statistics2(struct student *parr,int len);//函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics3(struct student *parr,int len);//函数功能统计3门课程的不及格率 int write(struct student *parr,int len);//函数功能将数据写入文件 void exit(struct student *parr,int len);//函数功能结束整个程序 struct student { int number;//学号 char name[100];//姓名 char collage[100];//学院 char banji[100];//班级 float score1;//高数成绩 float score2;//英语成绩 float score3;//C语言成绩 float sum;//总分 float ave;//平均分 }; int main() { struct student * parr; int len 0; char ch \0; system(color 0A); printf(\t\t|**************************************************|\n); printf(\t\t|-------------欢迎使用学生成绩管理系统-------------|\n); printf(\t\t|**************************************************|\n); printf(\n\n\t\t请输入需要存入的学生人数); scanf(%d,len); parr (struct student *)malloc((sizeof(struct student) * 1000)); printf(按回车键继续\n); while(1) { system(cls); printf(\n\n\n\n); printf(\t\t|**************************************************|\n); printf(\t\t|--------学生管理系统 ----------------------------|\n); printf(\t\t|------- a.写入学生信息----------------------------|\n); printf(\t\t|------- b.查看全部学生信息------------------------|\n); printf(\t\t|------- c.按学号查找------------------------------|\n); printf(\t\t|------- d.按姓名查找------------------------------|\n); printf(\t\t|------- e.修改学生信息----------------------------|\n); printf(\t\t|------- f.增加学生信息----------------------------|\n); printf(\t\t|------- g.删除学生信息----------------------------|\n); printf(\t\t|------- h.按平均分统计各个分数段的学生人数--------|\n); printf(\t\t|------- i.找出3门课程成绩最高的学生并输出信息---|\n); printf(\t\t|------- j.统计3门课程的不及格率-------------------|\n); printf(\t\t|------- k.保存-----------------------------------|\n); printf(\t\t|------- 0.退出------------------------------------|\n); printf(\t\t|**************************************************|\n); printf(\t\t\n); scanf( %c,ch); switch(ch) { case a : leninput(parr,len); break; case b : lenoutput(parr,len); break; case c : lenfindnum(parr,len); break; case d : lenfindname(parr,len); break; case e : lenmodify(parr,len); break; case f : lenadd(parr,len); break; case g : lendel(parr,len); break; case h : lenstatistics1(parr,len); break; case i : lenstatistics2(parr,len); break; case j : lenstatistics3(parr,len); break; case k : lenwrite(parr,len); break; case 0 : exit(parr,len); break; default : printf(\n\t输入错误!按回车键返回主菜单); getch(); } } free(parr); return 0 ; } //函数功能打印信息 int output(struct student *parr,int len) { int i; for(i 0; i len; i) { if(parr[i].number !0) printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } printf(\n); getchar(); getchar(); return len; } //函数功能输入数据 int input(struct student *parr,int len ) { int i; for( i 0; i len; i) { printf(请输入学生信息); printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; } printf(\n); return len; } //函数功能将数据写入文件 int write(struct student *parr,int len) { int i;//控制循环 FILE *fp NULL;//定义文件指针 fp fopen(D:\\student.bin,wb);//打开文件并使文件指针指向它以写的方式 if(fp NULL)//如果文件没有打开提示错误并退出 { printf(\n\t文件没有打开程序结束); getchar();//等待用户观察 exit(0);//结束整个程序 } else { for(i0; ilen; i)//将数据依次写入文件 { if(parr[i].number !0) fprintf(fp, 姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } } printf(已将学生信息保存在了D盘根目录下的student.bin文件中。\n); getch(); fclose(fp); return len; } //函数功能按学号找学生信息 int findnum(struct student *parr,int len) { int number 0; int i; printf(请您输入需要查找的学号); scanf(%d,number); for( i0; ilen; i ) { if(number parr[i].numberparr[i].number !0) { printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } } getch(); return len; } //函数功能按姓名找学生信息 int findname(struct student *parr,int len) { int i; char name[100]; printf(请您输入需要查找的姓名); scanf(%s,name); for(i0; ilen; i) { if(strcmp(name, parr[i].name ) 0parr[i].number !0) printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } getch(); return len; } //函数功能结束整个程序 void exit(struct student *parr,int len) { char ch \0; do { printf(您确定要退出y/n:); scanf( %c,ch); } while((ch ! Y) (ch ! y) (ch ! N) (ch ! n)); if((ch Y) || (ch y)) { exit(0); } return; } //函数功能修改学生信息 int modify(struct student *parr,int len) { int number 0; char ch \0; int i; printf(请您输入要修改的学生的学号); scanf(%d,number); for( i0; ilen; i ) { if(number parr[i].numberparr[i].number !0) { printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f \nC语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); printf(您确定要修改该学生信息y/n); scanf( %c,ch); if(ch y) { printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; printf(姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); printf(修改成功!); getch(); } else { printf(没有找到该学生); getch(); break; } } } return len; } //函数功能增加学生信息 int add(struct student *parr,int len ) { int i,a,s; printf(请输入要加入的学生个数); scanf(%d,a); slen; lenlena; for(is; ilen; i) { printf(请输入第%d个学生信息,i 1); printf(姓名); scanf(%s,parr[i].name); printf(学号); scanf(%d,parr[i].number ); printf(学院); scanf(%s,parr[i].collage ); printf(班级); scanf(%s,parr[i].banji ); printf(高数成绩:); scanf(%f,parr[i].score1 ); printf(英语成绩); scanf(%f,parr[i].score2 ); printf(C语言成绩); scanf(%f,parr[i].score3) ; parr[i].sumparr[i].score1 parr[i].score2 parr[i].score3 ; parr[i].ave parr[i].sum/3.0; } printf(\n); return len; } //函数功能按平均分统计各个分数段的学生人数 int statistics1(struct student *parr,int len) { int a,b,c,d,fail,i; a0; b0; c0; d0; fail0; for(i0; i1000; i) { if(parr[i].number !0) { if(parr[i].ave 90parr[i].ave 100) a; if(parr[i].ave80parr[i].ave 89) b; if(parr[i].ave70parr[i].ave 79) c; if(parr[i].ave60parr[i].ave 69) d; if(parr[i].ave0 parr[i].ave 59) fail; } } printf(90~100的人数%d\n,a); printf(80~89的人数%d\n,b); printf(70~79的人数%d\n,c); printf(60~69的人数%d\n,d); printf(不及格的人数%d\n,fail); getch(); return len; } //函数功能找出3门课程成绩最高的学生并输出他们的信息 int statistics2(struct student *parr,int len) { int mathmax,englishmax,cmax; mathmaxparr[0].score1 ; englishmaxparr[0].score2 ; cmaxparr[0].score3 ; int i; for(i0; ilen; i) { if(parr[i].number !0) { if(mathmaxparr[i].score1 ) mathmaxparr[i].score1 ; if(englishmaxparr[i].score2 ) englishmaxparr[i].score2 ; if(cmaxparr[i].score3 ) cmaxparr[i].score3 ; } } for(i0; ilen; i) { if(mathmaxparr[i].score1 ) printf(高数最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); if(englishmaxparr[i].score2 ) printf(英语最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); if(cmaxparr[i].score3 ) printf(C语言最高分学生的信息\n姓名%s 学号%d 学院%s 班级%s 高数成绩%.2f 英语成绩%.2f C语言成绩%.2f 总分%.2f 平均分%.2f\n,parr[i].name,parr[i].number,parr[i].collage,parr[i].banji,parr[i].score1,parr[i].score2,parr[i].score3,parr[i].sum,parr[i].ave ); } getch(); return len; } //函数功能统计3门课程的不及格率 int statistics3(struct student *parr,int len) { int mathfail,englishfail,cfail; mathfail0; englishfail0; cfail0; int i,n; for(i0; ilen; i) { if(parr[i].number !0) { if(parr[i].score1 60) mathfail; if(parr[i].score2 60) englishfail; if(parr[i].score3 60) cfail; n; } } printf(数学的不及格率%d/%d\n,mathfail,n); printf(英语的不及格率%d/%d\n,englishfail,n); printf(C语言的不及格率%d/%d\n,cfail,n); getch(); return len; } //函数功能删除学生信息 int del(struct student *parr,int len) { int i,num; int n[100]; printf(请输入要删除学生的学号); scanf(%d,num); for(i0; ilen; i) { if(parr[i].number num) { parr[i].number 0; printf(已删除); } } return len; }