温馨提示:这篇文章已超过410天没有更新,请注意相关的内容是否还可用!
摘要:本设计是一个基于C语言的学生成绩管理系统。该系统可实现对学生成绩的高效管理,包括录入学生信息、成绩录入、查询、修改和删除等功能。该系统采用模块化设计,界面友好,操作简便,可方便地对学生的成绩数据进行管理,提高管理效率,适用于学校或教育机构对学生成绩的管理需求。
这个学生成绩管理系统使用C语言编写,具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中,并提供了多种功能(增删改查等)选项以满足不同的需求。
学生成绩管理系统功能:
- 显示学生信息
- 增加学生信息
- 删除学生信息
- 修改学生信息
- 查询学生信息
- 总分降序排序学生成绩
- 统计学生平均成绩
- 统计每科平均成绩
- 统计信息录入系统中人数
- 输出总成绩最高的学生信息
- 退出
运行示例:
运行之后要自己先往系统里面增加学生数据哦
注意:因为设涉及到文件操作,需要把下面文件读取和保存函数中的文件位置修改为自己所要保存的文件位置或者按照如下操作建立文件:
打开D盘新建一个文件夹名字叫 学生成绩管理系统 (名字要一模一样哦)
在该文件夹中新建文本文档命名为 xscjglxt (如下图:)
目录
- 1.函数声明
- 2.结构体和全局变量定义
- 3.主函数和主菜单函数
- 4.显示学生信息
- 5.增加学生信息
- 6.删除学生信息
- 7.修改学生信息
- 8.查询学生信息
- 9.总分降序排序学生成绩
- 10.统计学生平均成绩
- 11.统计每科平均成绩
- 12.统计信息录入系统中人数
- 13.输出总成绩最高的学生信息
- 14.从文件中读取数据(*==注意这里的文件位置要改为自己的==)
- 15.将数据保存至文件(*==注意这里的文件位置要改为自己的==)
- 16.源代码
1.函数声明
void regist();//登录界面 void findid();//按照学号索引查询 void show();//查看所有的学生成绩信息 void del();//删除学生信息 void edit();//修改学生信息 void add();//添加学生信息 void mysort();//总分降序排序 void avegxs();//查询学生成绩平均值大于90的学生成绩 void avegkm();//查询学生成绩平均值小于60的学生成绩 void save();//保存学生信息到文件 void load();//从文件读取学生信息到内存 void menu();//菜单总录入人数 void maxn();//输出系统中总成绩最大的学生信息
2.结构体和全局变量定义
typedef struct student { char id[15];//学生学号 char name[50];//学生姓名 char sex[10];//学生性别 char great[50];//学生班级 int E,M,Y;//学生的英语、数学、语文成绩 float ave;//学生的平均成绩 int all;//学生的总成绩 }student; student students[100]; static int length;//保存当前系统中的人数
3.主函数和主菜单函数
主函数运行之后首先从文件中读取学生信息到系统当中,然后显示系统菜单提供多种功能让用户选择。
//主函数 int main() { printf("登陆成功!"); load();//从文件中读取信息到内测 menu();//菜单 }
void menu()//菜单 { while(1) { regist(); int n; scanf("%d",&n); switch(n) { case 1: show(); break; case 2: add(); break; case 3: del(); break; case 4: edit(); break; case 5: findid(); break; case 6: mysort(); break; case 7: avegxs(); break; case 8: avegkm(); break; case 9: cens(); break; case 10: maxn(); break; case 11: exit(0); } save(); printf("按任意键继续\n"); getchar(); getchar(); system("cls"); } }
void regist()//登录界面 { printf("\n\n\t*****************************学生信息管理系统******************************\n"); printf("\t* 1.显示学生信息 *|\n"); printf("\t* 2.增加学生信息 *|\n"); printf("\t* 3.删除学生信息 *|\n"); printf("\t* 4.修改学生信息 *|\n"); printf("\t* 5.查询学生信息 *|\n"); printf("\t* 6.总分降序排序学生成绩 *|\n"); printf("\t* 7.统计学生平均成绩 *|\n"); printf("\t* 8.统计每科平均成绩 *|\n"); printf("\t* 9.统计信息录入系统中人数 *|\n"); printf("\t* 10.输出总成绩最高的学生信息 *|\n"); printf("\t* 11.退出 *|\n"); printf("\t***************************************************************************\n"); printf("请输入你要进行的操作:\n"); }
4.显示学生信息
这里会将系统中所有的学生信息显示到屏幕上
void show()//查看所有的学生成绩信息 { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); for(int i =0;i printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); } } int flag=0; if(length=100) { printf("该班级人数已满!!!"); } else{ printf("请输入学生信息:\n"); printf("学生姓名:"); char op[50]; scanf("%s",op); printf("学生学号:"); char opp[50]; scanf("%s",opp); for(int i=0;i if(strcmp(opp,students[i].id)==0)flag=1; } if(flag==1) { printf("警告!!!该学号已存在!!!请返回修改!!!"); return; } strcpy(students[length].name,op); strcpy(students[length].id,opp); printf("学生班级:"); scanf("%s",students[length].great); printf("请输入学生性别:"); scanf("%s",students[length].sex); printf("语文成绩:"); scanf("%d",&students[length].Y); printf("数学成绩:"); scanf("%d",&students[length].M); printf("英语成绩:"); scanf("%d",&students[length].E); students[length].all=students[length].Y+students[length].M+students[length].E; students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3); length++; } } printf("请输入该学生的学号:\n"); char op[50]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { for(int j=i;j printf("请输入该学生学号:\n"); char op[50]; char opp[50]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { printf("请输入该学生新的信息:\n"); printf("姓名:"); scanf("%s",opp); strcpy(students[i].name,opp); printf("班级:"); scanf("%s",students[i].great); printf("性别:"); scanf("%s",students[i].sex); printf("语文成绩:"); scanf("%d",&students[i].Y); printf("数学成绩:"); scanf("%d",&students[i].M); printf("英语成绩:"); scanf("%d",&students[i].E); students[i].ave=(students[i].Y+students[i].E+students[i].M)/3; students[i].all=students[i].Y+students[i].E+students[i].M; flag=1; break; } } if(flag==0)printf("该学生不存在\n"); } printf("请输入学生学号:\n"); char op[15]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); flag=1; } } if(!flag) { printf("不存在该学号的学生\n"); } } student vis; for(int i=0;i if(students[j].all vis=students[j]; students[j]=students[j+1]; students[j+1]=vis; } } show(); } printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 平均成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); for(int i=0;i //if(students[i].ave90) //{ printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %.2lf \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length); printf("------------------------------------------------------------------------------------------------------------------------\n"); //} } } printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("语文成绩 | 数学成绩 | 英语成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); double ans1=0,ans2=0,ans3=0; for(int i=0;i ans1+=students[i].Y; ans2+=students[i].M; ans3+=students[i].E; } ans1=ans1*1.0/length; ans2=ans2*1.0/length; ans3=ans3*1.0/length; printf("\n%.2lf | %.2lf | %.2lf \n",ans1,ans2,ans3); printf("------------------------------------------------------------------------------------------------------------------------\n"); } printf("系统中共有%d个人的信息\n",length); } int vis=students[0].all; for(int i=1;i if(students[i].allvis)vis=students[i].all; } for(int i=0;i if(students[i].all==vis) { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); } } } FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","r"); if(fp==NULL) { printf("文件打开失败\n"); } int i=0; while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n", students[i].id, students[i].name, students[i].great, students[i].sex, &students[i].Y, &students[i].M, &students[i].E, &students[i].ave, &students[i].all)==9) { i++; } length=i; fclose(fp); } FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","w"); for(int i=0;i fprintf(fp,"%s %s %s %s %d %d %d %f %d\n", students[i].id, students[i].name, students[i].great, students[i].sex, students[i].Y, students[i].M, students[i].E, students[i].ave, students[i].all); } fclose(fp); } char id[15]; char name[50]; char sex[10]; char great[50]; int E,M,Y; float ave; int all; }student; student students[100]; static int length; int main() { printf("登陆成功!"); load();//从文件中读取信息到内侧 menu();//菜单 } void regist()//登录界面 { printf("\n\n\t*****************************学生信息管理系统******************************\n"); printf("\t* 1.显示学生信息 *|\n"); printf("\t* 2.增加学生信息 *|\n"); printf("\t* 3.删除学生信息 *|\n"); printf("\t* 4.修改学生信息 *|\n"); printf("\t* 5.查询学生信息 *|\n"); printf("\t* 6.总分降序排序学生成绩 *|\n"); printf("\t* 7.统计学生平均成绩 *|\n"); printf("\t* 8.统计每科平均成绩 *|\n"); printf("\t* 9.统计信息录入系统中人数 *|\n"); printf("\t* 10.输出总成绩最高的学生信息 *|\n"); printf("\t* 11.退出 *|\n"); printf("\t***************************************************************************\n"); printf("请输入你要进行的操作:\n"); } void findid()//按照学号索引查询 { printf("请输入学生学号:\n"); char op[15]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); flag=1; } } if(!flag) { printf("不存在该学号的学生\n"); } } void show()//查看所有的学生成绩信息 { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); for(int i =0;i printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); } } void del()//删除学生信息 { printf("请输入该学生的学号:\n"); char op[50]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { for(int j=i;j printf("请输入该学生学号:\n"); char op[50]; char opp[50]; int flag=0; scanf("%s",op); for(int i=0;i if(strcmp(students[i].id,op)==0) { printf("请输入该学生新的信息:\n"); printf("姓名:"); scanf("%s",opp); strcpy(students[i].name,opp); printf("班级:"); scanf("%s",students[i].great); printf("性别:"); scanf("%s",students[i].sex); printf("语文成绩:"); scanf("%d",&students[i].Y); printf("数学成绩:"); scanf("%d",&students[i].M); printf("英语成绩:"); scanf("%d",&students[i].E); students[i].ave=(students[i].Y+students[i].E+students[i].M)/3; students[i].all=students[i].Y+students[i].E+students[i].M; flag=1; break; } } if(flag==0)printf("该学生不存在\n"); } void add()//添加学生信息 { int flag=0; if(length=100) { printf("该班级人数已满!!!"); } else{ printf("请输入学生信息:\n"); printf("学生姓名:"); char op[50]; scanf("%s",op); printf("学生学号:"); char opp[50]; scanf("%s",opp); for(int i=0;i if(strcmp(opp,students[i].id)==0)flag=1; } if(flag==1) { printf("警告!!!该学号已存在!!!请返回修改!!!"); return; } strcpy(students[length].name,op); strcpy(students[length].id,opp); printf("学生班级:"); scanf("%s",students[length].great); printf("请输入学生性别:"); scanf("%s",students[length].sex); printf("语文成绩:"); scanf("%d",&students[length].Y); printf("数学成绩:"); scanf("%d",&students[length].M); printf("英语成绩:"); scanf("%d",&students[length].E); students[length].all=students[length].Y+students[length].M+students[length].E; students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3); length++; } } void mysort()//总分降序排序 { student vis; for(int i=0;i if(students[j].all vis=students[j]; students[j]=students[j+1]; students[j+1]=vis; } } show(); } void maxn()//查询学生成绩最高的学生信息 { int vis=students[0].all; for(int i=1;i if(students[i].allvis)vis=students[i].all; } for(int i=0;i if(students[i].all==vis) { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all); printf("------------------------------------------------------------------------------------------------------------------------\n"); } } } void avegxs()//查询学生成绩平均值 { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 平均成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); for(int i=0;i //if(students[i].ave90) //{ printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %.2lf \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length); printf("------------------------------------------------------------------------------------------------------------------------\n"); //} } } void avegkm()//查询各门平均值 { printf("------------------------------------------------------------------------------------------------------------------------\n"); printf("语文成绩 | 数学成绩 | 英语成绩 \n"); printf("------------------------------------------------------------------------------------------------------------------------\n"); double ans1=0,ans2=0,ans3=0; for(int i=0;i ans1+=students[i].Y; ans2+=students[i].M; ans3+=students[i].E; } ans1=ans1*1.0/length; ans2=ans2*1.0/length; ans3=ans3*1.0/length; printf("\n%.2lf | %.2lf | %.2lf \n",ans1,ans2,ans3); printf("------------------------------------------------------------------------------------------------------------------------\n"); } void save()//保存学生信息到文件 { FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","w"); for(int i=0;i fprintf(fp,"%s %s %s %s %d %d %d %f %d\n", students[i].id, students[i].name, students[i].great, students[i].sex, students[i].Y, students[i].M, students[i].E, students[i].ave, students[i].all); } fclose(fp); } void load()//从文件读取学生信息到内存 { FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","r"); if(fp==NULL) { printf("文件打开失败\n"); } int i=0; while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n", students[i].id, students[i].name, students[i].great, students[i].sex, &students[i].Y, &students[i].M, &students[i].E, &students[i].ave, &students[i].all)==9) { i++; } length=i; fclose(fp); } void cens() { printf("系统中共有%d个人的信息\n",length); } void menu()//菜单 { while(1) { regist(); int n; scanf("%d",&n); switch(n) { case 1: show(); break; case 2: add(); break; case 3: del(); break; case 4: edit(); break; case 5: findid(); break; case 6: mysort(); break; case 7: avegxs(); break; case 8: avegkm(); break; case 9: cens(); break; case 10: maxn(); break; case 11: exit(0); } save(); printf("按任意键继续\n"); getchar(); getchar(); system("cls"); } }
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...