c语言期末作业

学生成绩管理系统
本系统能够对学生成绩管理功能,包括:
1.对多个学生成绩进行管理,至少10个学生。
2.每个学生至少3门课程。
3.对每个学生大学期间的成绩进行记录。
4.修改学生成绩。
5.不同用户的权限不同,管理员拥有所有权限(打印、登记、添加、排序、查询、修改、删除学生信息)、教师可以排序、查询、登记和修改成绩;学生可以查询成绩。其中查询分姓名查询、学号查询;排序分总成绩排序及各科成绩排序.
6.成绩说明:0~100,整数。
7.成绩需要保存进文件,程序初始化时读取文件。

#include #include #include #include int g=3; //登陆密码时允许输入的次数char prefix_a[8]="asdf"; //管理员密码char prefix_t[8]="asdf"; //教师密码char prefix_s[8]="asdf"; //学生密码int number;//全局变量学生人数void menu(); //主界面函数void administrator();//管理端界面void teachar();//教师端界面void student();//学生端界面void color(short x); //改变字体颜色void password_a(); //管理端密码登陆void password_t(); //教师端密码登陆void password_s(); //学生端密码登陆void input();//登记学生成绩void delete_();//删除学生信息void search(); //查询学生成绩void change(); //修改学生成绩void show(); //打印学生信息void add();//添加学生信息void print_table(); //列表头void read();//从文件中读取信息void back_a();//管理端返回上一界面void back_t();//教师端返回上一界面void back_s();//学生端返回上一界面void save();//保存学生信息函数void back_sort_a();//管理端排序功能 返回界面void back_sort_t();//教师端排序功能 返回界面void sort_a(); //管理端排序学生成绩void sort_t(); //教师端排序学生成绩void sort_sum(); //按总成绩排序void sort_grade1();//按数学成绩排序void sort_grade2();//按英语成绩排序void sort_grade3();//按物理成绩排序void search_a(); //管理端查询学生成绩void search_t(); //教师端查询学生成绩void search_s(); //学生端查询学生成绩void search_id();//按学号查询void search_name();//按学号查询void back_search_a();//管理端查询功能 返回界面void back_search_t();//教师端查询功能 返回界面void back_search_s();//学生端查询功能 返回界面struct student{ int id; //学号 charname[20]; //姓名 charsex[5]; //性别 float grade1; //高等数学 float grade2; //大学英语 float grade3; //大学物理 float avg;//平均分 float sum;//总分 }stu[100];int main(){menu();return 0;}void menu()//主界面{int l;printf("\t欢迎使用学生信息系统\t\n");printf("\t 1.管理端 \t\n");printf("\t 2.教师端 \t\n");printf("\t 3.学生端 \t\n");printf("\t 4.退出 \n");printf("=================================\n");printf("请输入选择的登陆端: ");scanf("%d",&l);switch(l){case 1:system("cls");password_a();break;case 2:system("cls");password_t();break;case 3:system("cls");password_s();break;case 4:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");menu();break;}}void administrator() //管理端界面{read();int l;printf("\t欢迎使用管理端系统\t\n");printf("\t 1.打印学生成绩 \t\n");printf("\t 2.登记学生成绩 \t\n");printf("\t 3.添加学生成绩 \t\n");printf("\t 4.排序学生成绩 \t\n");printf("\t 5.查询学生成绩\t\n");printf("\t 6.修改学生信息\n");printf("\t 7.删除学生信息\n");printf("\t 8.返回\n");printf("\t 9.退出\n");printf("=================================\n");printf("请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");show();back_a();break;case 2:system("cls");input();back_a();break; case 3:system("cls");add();//添加学生信息();back_a();break;case 4:system("cls");sort_a();back_a();break;case 5:system("cls");search_a();back_a();break;case 6:system("cls");change();back_a();break;case 7:system("cls");delete_();back_a();break;case 8:system("cls");menu();break;case 9:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");administrator();break;}}void teachar() //教师端界面{ read();int l;printf("\t欢迎使用教师端系统\t\n");printf("\t 1.打印学生成绩 \t\n");printf("\t 2.登记学生成绩 \t\n");printf("\t 3.排序学生成绩 \t\n");printf("\t 4.查询学生成绩\t\n");printf("\t 5.修改学生信息\n");printf("\t 6.返回\n");printf("\t 7.退出\n");printf("=================================\n");printf("请输入要执行的操作: ");scanf("%d",&l);switch(l){case 1:system("cls");show();back_t();break;case 2:system("cls");input();back_t();break;case 3:system("cls");sort_t();back_t();break;case 4:system("cls");search_t();back_t();break;case 5:system("cls");change();back_t();break;case 6:system("cls");menu();break;case 7:printf("感谢您的使用,已退出!");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");teachar();break;}}void student() //学生端界面{read();int l;printf("\t欢迎使用学生端系统\t\n");printf("\t 1.打印学生成绩 \t\n");printf("\t 2.查询学生成绩\t\n");printf("\t 3.返回\n");printf("\t 4.退出\n");printf("=================================\n");printf("请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");show();back_s();break;case 2:system("cls");search_s();back_s();break;case 3:system("cls");menu();break;case 4:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");student();break;}}void color(short x) //改变字体颜色{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);}void password_a() //管理端密码登陆{char username[20];char password[20];int flag;while(g--){printf("\t管理员您好,欢迎使用登陆界面!\n");printf("请输入账户: ");scanf("%s",username);printf("请输入密码: ");scanf("%s",password);flag=strcmp(prefix_a,password);if(flag == 0){color(2);printf("[输入正确]请等待3秒!\n");Sleep(3000);system("cls");color(7);administrator();break;}else{color(772);if(g==0){printf("[警告]您已输错三次,将自动退出系统!\n");color(7);exit(1);}printf("[输入错误]请3秒后重新输入正确密码!\n");Sleep(3000);system("cls");color(7);continue;} }}void password_t() //教师端密码登陆{char username[20];char password[20];int flag;while(g--){printf("\t老师您好,欢迎使用登陆界面!\n");printf("请输入账户: ");scanf("%s",username);printf("请输入密码: ");scanf("%s",password);flag=strcmp(prefix_t,password);if(flag == 0){color(2);printf("[输入正确]请等待3秒!\n");Sleep(3000);system("cls");color(7);teachar();break;}else{color(772);if(g==0){printf("[警告]您已输错三次,将自动退出系统!\n");color(7);exit(1);}printf("[输入错误]请3秒后重新输入正确密码!\n");Sleep(3000);system("cls");color(7);continue;} }}void password_s() //学生端密码登陆{char username[20];char password[20];int flag;while(g--){printf("\t同学你好,欢迎使用登陆界面!\n");printf("请输入账户: ");scanf("%s",username);printf("请输入密码: ");scanf("%s",password);flag=strcmp(prefix_s,password);if(flag == 0){color(2);printf("[输入正确]请等待3秒!\n");Sleep(3000);system("cls");student();break;}else{color(772);if(g==0){printf("[警告]您已输错三次,将自动退出系统!\n");color(7);exit(1);}printf("[输入错误]请3秒后重新输入正确密码!\n");Sleep(3000);system("cls");color(7);continue;} }}void back_a() //管理端返回上一界面{int l;printf("\n\t1.返回主界面");printf("\n\t2.返回上一级");printf("\n\t=========================");printf("\n\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");menu();break;case 2:system("cls");administrator();break;default:color(772);printf("\t[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);back_a();break;}}void back_t() //教师端返回上一界面{int l;printf("\n\t1.返回主界面");printf("\n\t2.返回上一级");printf("\n\t=========================");printf("\n\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");menu();break;case 2:system("cls");teachar();break;default:color(772);printf("\t[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);back_t();break;}}void back_s() //学生端返回上一界面{int l;printf("\n\t1.返回主界面");printf("\n\t2.返回上一级");printf("\n\t=========================");printf("\n\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");menu();break;case 2:system("cls");student();break;default:color(772);printf("\t[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);back_s();break;}}void read() //从文件中读取信息{FILE *fp;int i;fp=fopen("学生信息.txt","r");if(fp==NULL){color(772);printf("[警告]文件打开失败\n");color(7);}else {color(2);printf("[tip]文件读取成功\n");color(7); fscanf(fp,"%d\n",&number); for(i=0;i0){fprintf(fp,"%d\n",number); for(i=0;i<number;i++){printf("\n请输入第%d个学生的信息:\n",i+1);printf("学号: ");scanf("%d",&stu[i].id);getchar();printf("姓名: ");scanf("%s",stu[i].name);getchar();printf("性别: ");scanf("%s",stu[i].sex);getchar();printf("高等数学: ");scanf("%f",&stu[i].grade1);getchar();printf("大学英语: ");scanf("%f",&stu[i].grade2);getchar();printf("大学物理: ");scanf("%f",&stu[i].grade3);stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;stu[i].avg = (stu[i].sum)/3; fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);} fclose(fp);}else{color(772);printf("\t[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");input();}}void show() //打印学生信息{system("cls");int i;print_table();for(i=0;i<number;i++){printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);}printf("\t\t\t---------------------------------------------------------------------------\n");}void delete_()//删除学生信息{int num,a,v;printf("\t请输入学生学号:");scanf("%d",&num);int i, j;for (i = 0;i<number; i++) {if (stu[i].id==num){printf("\t你将要删除该学生信息\n\n");print_table();printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);printf("\n\t1.确认删除");printf("\n\t2.取消删除");printf("\n\t=========================");printf("\n\t请输入:");scanf("%d", &a);if (a == 1){for(j=i;j<number-1;j++){stu[j]=stu[j+1];}color(2);printf("\n\t[tip]删除成功!");color(7);number--;save(); //保存学生信息break;}else{color(2);printf("\n\t[tip]已取消操作!");color(7);break;}} } if(i==number)//该学号不存在 { color(772); printf("\n\t[错误]未找到该学号学生"); color(7); }printf("\n\t1.继续删除 2.返回上一级\n");printf("\t请输入:");scanf("%d", &v);if (v == 1){system("cls");delete_();}else{system("cls");administrator();}}void save() //保存学生信息函数{FILE* fp;int i,ret;fp=fopen("学生信息.txt", "w");if (fp == NULL){color(772);printf("\n\t[警告]文件打开失败\n");color(7);}fprintf(fp,"%d\n",number);for (i = 0; i <number; i++){ret=fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);}if (ret<0){color(772);printf("\n\t[错误]文件写入失败\n");color(7);}else{color(2);printf("\n\t[tip]文件写入成功\n");color(7);}fclose(fp);//关闭文件指针}void change() //修改学生成绩{ char name2[20],sex2[5]; float grade1_1,grade2_1,grade3_1; int id2,avg2,sum2,i,b;printf("\t请输入要修改的学生的学号:");scanf("%d",&id2);for (i =0;i<number;i++){if (stu[i].id ==id2 ){printf("\t修改前:\n");print_table();printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);printf("\n\t请输入修改后信息\n");printf("\t学生姓名:");scanf("%s",name2);getchar();printf("\t学生性别:");scanf("%s", sex2);getchar();printf("\t高等数学:");scanf("%f", &grade1_1);getchar();printf("\t大学英语:");scanf("%f", &grade2_1);getchar();printf("\t大学物理:");scanf("%f", &grade3_1);getchar();sum2=grade1_1+grade2_1+grade3_1;avg2=sum2/3;printf("\n\t1.确认修改");printf("\n\t2.取消修改");printf("\n\t=========================");printf("\n\t请输入:");scanf("%d", &b);if (b== 1){strcpy(stu[i].name, name2);strcpy(stu[i].sex, sex2);stu[i].grade1 = grade1_1;stu[i].grade2 = grade2_1;stu[i].grade3 = grade3_1;stu[i].avg = avg2;stu[i].sum=sum2;printf("\n\t修改后:\n");printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum); save();//保存学生信息到文件中}break;}}if (i == number){color(772);printf("\n\t[错误]未找到该学号学生\n");color(7);}printf("\t是否继续修改,请选择(y/n):");getchar();if (getchar() == 'y'){system("cls");change();}}void sort_a() //管理员排序学生成绩{int l;printf("\t欢迎使用排序系统\t\n");printf("\t 1.按总成绩排序 \t\n");printf("\t 2.按数学成绩排序 \t\n");printf("\t 3.按英语成绩排序\t\n");printf("\t 4.按物理成绩排序\n");printf("\t 5.返回\n");printf("\t 6.退出\n");printf("\t=================================\n");printf("\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");sort_sum();back_sort_a();break;case 2:system("cls");sort_grade1();back_sort_a();break;case 3:system("cls");sort_grade2();back_sort_a();break;case 4:system("cls");sort_grade3();back_sort_a();break;case 5:system("cls");administrator(); break;case 6:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");sort_a();break;}}void sort_t() //教师排序学生成绩{int l;printf("\t欢迎使用排序系统\t\n");printf("\t 1.按总成绩排序 \t\n");printf("\t 2.按数学成绩排序 \t\n");printf("\t 3.按英语成绩排序\t\n");printf("\t 4.按物理成绩排序\n");printf("\t 5.返回\n");printf("\t 6.退出\n");printf("\t=================================\n");printf("\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");sort_sum();back_sort_t();break;case 2:system("cls");sort_grade1();back_sort_t();break;case 3:system("cls");sort_grade2();back_sort_t();break;case 4:system("cls");sort_grade3();back_sort_t();break;case 5:system("cls");teachar(); break;case 6:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");sort_t();break;}}void sort_sum() //按总成绩排序{ int k,j,min=0,max=0;struct student temp;for (k = 0; k< number ; k++){for (j = 0; j < number - 1 - k; j++){if (stu[j].sum < stu[j + 1].sum){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}}for(int i=0;i<number;i++){if(stu[i].sumstu[max].sum)max=i;}save();print_table();show();printf("\t总分最高分: ");printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);printf("\t总分最低分: ");printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);printf("\t-------------------------------------------------------------------------------------------");}void sort_grade1()//按数学成绩排序{int k,j,min=0,max=0;struct student temp;for (k = 0; k< number ; k++){for (j = 0; j < number - 1 - k; j++){if (stu[j].grade1 < stu[j + 1].grade1){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}}for(int i=0;i<number;i++){if(stu[i].grade1stu[max].grade1)max=i;}save();print_table();show();printf("\t数学最高分: ");printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);printf("\t数学最低分: ");printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);printf("\t-------------------------------------------------------------------------------------------");}void sort_grade2()//按英语成绩排序{ int k,j,min=0,max=0;struct student temp;for (k = 0; k< number ; k++){for (j = 0; j < number - 1 - k; j++){if (stu[j].grade2 < stu[j + 1].grade2){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}}for(int i=0;i<number;i++){if(stu[i].grade2stu[max].grade2)max=i;}save();print_table();show();printf("\t英语最高分: ");printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t%-10.0f%-10.1f%-10.0f\n",stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);printf("\t英语最低分: ");printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t%-10.0f%-10.1f%-10.0f\n",stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);printf("\t-------------------------------------------------------------------------------------------");}void sort_grade3()//按物理成绩排序{ int k,j,min=0,max=0;struct student temp;for (k = 0; k< number ; k++){for (j = 0; j < number - 1 - k; j++){if (stu[j].grade3 < stu[j + 1].grade3){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}}for(int i=0;i<number;i++){if(stu[i].grade3stu[max].grade3)max=i;}save();print_table();show();printf("\t物理最高分: ");printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t%-10.1f%-10.0f\n",stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);printf("\t物理最低分: ");printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t%-10.1f%-10.0f\n",stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);printf("\t-------------------------------------------------------------------------------------------");}void search_a() //管理端查询学生成绩{int l;printf("\t欢迎使用成绩查询系统\t\n");printf("\t 1.按学号查询 \t\n");printf("\t 2.按姓名查询 \t\n");printf("\t 3.返回\n");printf("\t 4.退出\n");printf("\t=================================\n");printf("\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");search_id();back_search_a();break;case 2:system("cls");search_name();back_search_a();break;case 3:system("cls");administrator(); break;case 4:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");search_a();break;}}void search_t() //教师端查询学生成绩{int l;printf("\t欢迎使用成绩查询系统\t\n");printf("\t 1.按学号查询 \t\n");printf("\t 2.按姓名查询 \t\n");printf("\t 3.返回\n");printf("\t 4.退出\n");printf("\t=================================\n");printf("\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");search_id();back_search_t();break;case 2:system("cls");search_name();back_search_t();break;case 3:system("cls");teachar(); break;case 4:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");search_t();break;}}void search_s() //学生端查询学生成绩{ int l; printf("\t欢迎使用成绩查询系统\t\n");printf("\t 1.按学号查询 \t\n");printf("\t 2.按姓名查询 \t\n");printf("\t 3.返回\n");printf("\t 4.退出\n");printf("\t=================================\n");printf("\t请输入要执行的操作: ");scanf("%d",&l);switch(l){ case 1:system("cls");search_id();back_search_s();break;case 2:system("cls");search_name();back_search_s();break;case 3:system("cls");student(); break;case 4:printf("感谢您的使用,已退出!\n");exit(0);default:color(772);printf("[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");search_s();break;}}void search_id()//按学号查询{int id3,i;printf("\t学生的学号:");scanf("%d",&id3);for ( i =0;i<number;i++){if (stu[i].id ==id3 ){printf("\t该学生信息如下:\n ");print_table();printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n", stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum); break; }} if (i == number){color(772);printf("\n\t[错误]未找到该学号学生\n");color(7);} printf("\n\t是否继续修改,请选择(y/n):"); getchar(); if (getchar() == 'y'){system("cls");search_id();}}void search_name()//按姓名查询{char name1[20];int i;printf("\t学生的姓名:");scanf("%s",name1);for (i =0;i 0){do{flag = 1;printf("\n\t请输入第%d位学生的信息:\n", i + 1);while (flag){flag = 0;printf("\t学号: ");scanf("%d", &stu[i].id);for (j = 0; j < i; j++){if (stu[i].id==stu[j].id){color(772);printf("\t[错误]已存在该学号学生,请重新输入!\n");color(7);flag = 1;break;}}}printf("\t姓名: ");scanf("%s",stu[i].name);getchar();printf("\t性别: ");scanf("%s",stu[i].sex);getchar();printf("\t高等数学: ");scanf("%f",&stu[i].grade1);getchar();printf("\t大学英语: ");scanf("%f",&stu[i].grade2);getchar();printf("\t大学物理: ");scanf("%f",&stu[i].grade3);stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;stu[i].avg = (stu[i].sum)/3;if (0 == flag){i++;}} while (i<number + m);}else{ color(772);printf("\t[输入错误]请3秒后重新输入有效数字!\n");Sleep(3000);color(7);system("cls");add();}number += m;color(2);printf("\t[成功]学生信息添加完毕!!!");color(7);save();}

文件素材:

5
9 李五 男 76 76 100 84.0 252
6 丝丝 女 9 100 98 69.0 207
2 李四 男 89 79 67 78.3 235
1 张三 男 35 43 67 48.3 145
7 苏苏 女 98 12 53 54.3 163