C语言实现学生成绩管理系统设计

article/2025/10/27 9:28:11

本系统有增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统6大功能。
能够对学生的姓名,学号,c语言成绩做相应的操作。
在检测到输入成绩大于55时,会自动加上5。

该管理系统设计功能模块图:

下面是源代码:

#include "stdio.h"  
#include "string.h"/*定义学生结构体*/  
struct Student
{char ID[20];		//学号char Name[20];		//姓名float C_Mark;		//C语言成绩
};/*声明学生数组及学生数量*/  
struct Student students[1000];  
int num=0;  /*通过学号返回数组下标*/   
int Student_SearchByIndex(char id[])  
{int i;  for (i=0;i<num;i++)  {if (strcmp(students[i].ID,id)==0)  {return i;  }  }  return -1;   
}/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])  
{int i;  for (i=0;i<num;i++)  { if (strcmp(students[i].Name,name)==0){ return i;}  }  return -1;  
}  /*显示单条学生记录*/  
void Student_DisplaySingle(int index)   
{printf("%10s%10s%8s\n","学号","姓名","C语言成绩");  printf("-------------------------------------------------------------\n");  printf("%10s%10s%8.2f\n",students[index].ID,students[index].Name,students[index].C_Mark);  
}  /****1、增加学生记录*****/  
void Student_Insert()  
{  while(1)  {printf("请输入学号:");  scanf("%s",&students[num].ID);  getchar();  printf("请输入姓名:");  scanf("%s",&students[num].Name);  getchar(); printf("请输入C语言成绩:");  scanf("%f",&students[num].C_Mark);  getchar(); if (54<students[num].C_Mark && students[num].C_Mark< 60)	//把55~59分之间的成绩都加上5分{students[num].C_Mark += 5;		}num++;printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }  
}     /******2、修改学生信息**********/  
void Student_Modify()  
{  while(1) {  char id[20]; int index; printf("请输入要修改的学生的学号:"); scanf("%s",&id);  getchar();  index=Student_SearchByIndex(id);  if (index==-1)  {  printf("该学生不存在!\n"); }else  {  printf("你要修改的学生信息为:\n"); Student_DisplaySingle(index);  printf("-- 请输入新值--\n"); printf("请输入学号:");  scanf("%s",&students[index].ID);  getchar();  printf("请输入姓名:");  scanf("%s",&students[index].Name);  getchar();  printf("请输入C语言成绩:");  scanf("%f",&students[index].C_Mark);  getchar();  }  printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }  } /****3、删除学生信息****/  
void Student_Delete()  
{ int i;  while(1)  {  char id[20];  int index;  printf("请输入要删除的学生的学号:");  scanf("%s",&id);  getchar();  index=Student_SearchByIndex(id);  if (index==-1)  {  printf("学生不存在!\n");  }  else  {  printf("你要删除的学生信息为:\n"); Student_DisplaySingle(index);  printf("是否真的要删除?(Y/N)");  if (getchar()=='Y')  {  for (i=index;i<num-1;i++)  {  students[i]=students[i+1];//把后边的对象都向前移动  } num--;  }  getchar();  printf("已删除\n");}  printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }  
}  /****4、按姓名查询******/  
void Student_Select()  
{  while(1)  {  char name[20];  int index;  printf("请输入要查询的学生的姓名:");  scanf("%s",&name); getchar();  index=Student_SearchByName(name);  if (index==-1) {  printf("学生不存在!\n"); } else  {  printf("你要查询的学生信息为:\n"); Student_DisplaySingle(index);  }  printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;} }
}  /******5、按C语言成绩排序*******/  
void Student_SortByAverage()  
{  int i,j;  struct Student tmp;  for (i=0;i<num;i++)  {  for (j=1;j<num-i;j++) {  if (students[j-1].C_Mark<students[j].C_Mark) {  tmp=students[j-1]; students[j-1]=students[j];  students[j]=tmp;  }  }  }  
}  /*显示学生信息*/  
void Student_Display()  
{  int i;  printf("%10s%10s%8s\n","学号","姓名","成绩");  printf("-------------------------------------------------------------\n");  for (i=0;i<num;i++)  {  printf("%10s%10s%8.2f\n",students[i].ID,students[i].Name,students[i].C_Mark);  }  }  /*将学生信息从文件(Database.txt)中读出*/  
void IO_ReadInfo()  
{ FILE *fp;  int i;  if ((fp=fopen("Database.txt","rb"))==NULL)  {  printf("不能打开文件!\n");  return;  }if (fread(&num,sizeof(int),1,fp)!=1)  {  num=-1;  } else  {  for(i=0;i<num;i++)  {  fread(&students[i],sizeof(struct Student),1,fp);  }  } fclose(fp);  
} /*将学生信息写入文件(Database.txt)*/  
void IO_WriteInfo()
{  FILE *fp; int i;  if ((fp=fopen("Database.txt","wb"))==NULL)  {  printf("不能打开文件!\n");  return;  }  if (fwrite(&num,sizeof(int),1,fp)!=1)  {  printf("写入文件错误!\n");  }  for (i=0;i<num;i++)  {  if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)  {  printf("写入文件错误!\n");  }  }  fclose(fp);  
} /***********主程序*********/ 
void main()  
{ int choice;  IO_ReadInfo();			//读取文件while(1)  {  /*主菜单*/  printf("\n------ 学生成绩管理系统------\n");  printf("1. 增加学生记录\n");  printf("2. 修改学生记录\n");  printf("3. 删除学生记录\n");  printf("4. 按姓名查询学生记录\n");  printf("5. 按C语言成绩排序\n");  printf("6. 退出\n");  printf("请选择(1-6):");  scanf("%d",&choice);  getchar();  switch(choice)  { case 1:  Student_Insert();  break; case 2: Student_Modify(); break;  case 3:  Student_Delete(); break;  case 4:  Student_Select();break;  case 5:  Student_SortByAverage();Student_Display();break;  case 6: exit(0);  break;  } IO_WriteInfo();  } 
}  

运行结果:
测试第一个功能,输入四个学生的成绩:

测试第二个功能,修改学生记录:

测试第三个功能,删除学生记录:

测试第四个功能,按姓名查询学生记录:

测试第五个功能,显示所有学生的成绩,按照C语言成绩由高到底排序:

我们可以看到,各项功能的实现,在第2个步骤中,将赵的成绩改为80,而第3个步骤删除了李的成绩。从第5个步骤中可以看出,我们输入的张是56分,输出按照事先设定好的加上5变成了61分。系统的稳定正在测试中,按照原计划实现了功能。

本系统的整个开发过程和功能实现,能够进行学生C语言成绩信息录入、修改、删除、查询、浏览操作,本系统的应用,将会使学生和教务管理人员在第一时间内获得理想的信息。


http://chatgpt.dhexx.cn/article/ntjZ5Gfi.shtml

相关文章

c语言成绩管理系统常见错误,求教 学生成绩管理系统出错

已结贴√ 问题点数:20 回复次数:5 求教 学生成绩管理系统出错 小弟刚做了个学生成绩管理系统 编译无错误 但是运行的时候连选择函数都不能 特来求教 望高手解释 代码如下: #include #include #define N 20 #define M 100 struct score {int scr1; int scr2; int scr…

c语言课程设计 学生成绩管理系统

学生成绩管理系统要求&#xff1a; 1、系统功能以菜单方式工作&#xff1b; 2、数据的输入&#xff1b; 3、数据的插入&#xff1b; 4、数据的输出&#xff1b; 5、数据的删除&#xff1b; 6、数据的查找&#xff0c;通常以两种方式进行查找&#xff0c;如姓名、学号&#xff1…

C语言学生成绩管理系统详解

文章目录 一、系统概述二、数据类型三、自定义函数说明四、运行界面五、源代码 源代码请直接跳到最后 引言&#xff1a;最近写了C语言的大作业&#xff0c;感觉做得还行&#xff0c;记录一下&#xff0c;给后人一些参考&#xff0c;给自己留更深印象方便后续改进&#xff01; …

学生成绩管理系统 C语言

基础篇问题&#xff1a; 1.输出如下菜单&#xff1a; *********************学生成绩管理系统******************* * 1 成绩录入 2 成绩查询 3 计算平均分 * * 4 计算最高分 5 排名 6 退出 * ******************************…

C语言编程学生成绩管理系统

目录 一、介绍 二、功能 1.录入学生 2.删除学生信息 3.修改学生信息 4.查询学生信息 5.所有学生信息 6.成绩排序 7.退出程序 三、代码 1.主函数 2.头文件 3.函数封装库 一、介绍 利用C语言&#xff0c;运用链表、指针、封装函数等基本知识实现一个学生管理系统。通…

C语言学生成绩管理系统

制作学生成绩管理系统&#xff0c;可以实现以下功能&#xff1a; 每条记录包括&#xff1a;学号、姓名、专业和5门课程的成绩&#xff1b;能够实现添加、删除、修改功能&#xff1b;能够计算某学生的总分和平均分&#xff1b;能按照总分排序输出&#xff1b; 利用C语言的基本…

c语言成绩管理系统

关注微信公众号每日新觉&#xff0c;私聊作者获取提取密码点击下面链接&#xff0c;私聊作者获取提取密码。https://mp.weixin.qq.com/s/QgRQ3YB2JqCvNOGQHQ57rA 作者每日新觉&#xff0c;是一名热爱技术和编程的年轻程序员。他在计算机科学和软件工程领域有着广泛的研究和实践…

c语言成绩管理系统1.0,c语言成绩管理系统完整附源码v1.0 免费版

c语言成绩管理系统拥有和hello word一样的江湖地位&#xff0c;初学C语言的朋友基本都会从管理系统开始入手学习&#xff0c;对于很多大学生来说更是如此&#xff0c;今天为大家带来的这款系统以及源码希望能对大家学习学C语言有所帮助&#xff0c;欢迎下载使用。 C语言介绍 C语…

C语言学生成绩管理系统(综合项目)

1. 这个代码主要实现以下功能&#xff1a; 2. 用到的主要参数有&#xff1a; 1.整型变量int n;用于储存学生人数和之后的循环判断。 2.字符串char name[][];用于储存姓名。 3.浮点型变量float score[];用于储存成绩。 4.长整型变量long ID[Max];用于储存学号。 3.…

【高级语言程序设计】c语言-学生成绩管理系统

c语言期末作业 声明&#xff1a;未经允许&#xff0c;请勿转载 学生成绩管理系统 本系统能够对学生成绩管理功能&#xff0c;包括&#xff1a; 1.对多个学生成绩进行管理&#xff0c;至少10个学生。 2.每个学生至少3门课程。 3.对每个学生大学期间的成绩进行记录。 4.修改学生…

班级成绩管理系统(C语言)

文章目录 一、设计任务与目标二、实现功能三、程序源码四、效果展示 一、设计任务与目标 对一个有N个学生的班级&#xff0c;每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。 二、实现功能 &#xff08;1&#xff09;本系统采用一个结…

C语言:学生成绩管理系统

目录 一&#xff1a;功能概述&#xff1a; 二&#xff1a;实现&#xff1a; 1.主源文件 1.打印菜单&#xff01; 2.构建管理系统的框架&#xff1a; 二&#xff1a;辅源文件 1.使用结构体&#xff0c;方便后面的编写 2.输入学生信息 3.输出学生基本信息 3.按姓名查询 3.…

C语言课程设计|学生成绩管理系统(含完整代码)

目录 前言 简介 学生信息录入功能 学生单个信息查询 查询全部学生信息 修改学生信息 删除学生信息 退出 完整代码 前言 在临近期末之际&#xff0c;相信好多初学C语言的同学都开始为写C语言课程设计这件事开始焦虑了吧&#xff1f;或许会不知所措&#xff0c;或许会…

matlab importdata不能读取全部数据问题

最近使用importdata函数不能读取全部数据&#xff0c;数据集315行&#xff0c;但是读取了197行&#xff0c;那就是197-198之间有问题&#xff0c;百度之后有了思路。由于没有找到具体的证据&#xff0c;所以这里说一下解决思路。 import可以导入很多文件类型&#xff0c;.dat文…

ImportError: cannot import name 'datasets'

初次使用python scikit-learn库时出现找不到模块的问题 from sklearn import datasets ImportError: cannot import name datasets类似问题链接&#xff1a; https://stackoverflow.com/questions/39280466/cant-import-datasets-with-scikit-learn 参考答案&#xff1a; 原因…

MATLAB输入、导入方式(手动输入,TXT文件,Excel导入)

目录 手动输入 input函数 自动输入 TXT导入数组 dir函数 importdata函数 Excel导入数组 手动输入 input函数 请求用户输入 语法 x input(number) %数值型str input(charnumber,s) %字符型&#xff0c;s不能改变 数值型进行演示 Pzeros(5,1); %建立零51矩阵进行储存…

1.数据的导入与导出

数据的导入与导出 更多MATLAB数据分析视频请点击&#xff0c;或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId1003615016 在用MATLAB进行编程时&#xff0c;不可避免的要涉及到数据的导入与导出&#xff0c;如果数据…

matlab读取数据文件

data1.txt: 0 3886.162 2200.938 141.240 1 3721.139 2208.475 141.152 2 3866.200 2198.936 141.126 3 3678.048 2199.191 141.250 4 3685.453 2203.726 141.241 分别采用load、importdata、textread、fscanf、textscan和fread函数读取文本数据文件。 dat1load(data1.t…

Python中库导入from . import 和from .. import 的使用方法

Python中库导入from . import 和from .. import 的使用方法 程序目录结构如下 from . import XX 和 from .. import XX 只能使用在子包中&#xff0c;例如上面的例子中&#xff0c;程序最外层是主程序app.py,程序有一个子包pack1&#xff0c;pack1下有a.py 和b.py两个文件&…