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

article/2025/10/27 9:55:06

目录

一、介绍

二、功能

1.录入学生

2.删除学生信息

3.修改学生信息

4.查询学生信息

5.所有学生信息

6.成绩排序

 7.退出程序

三、代码

1.主函数

2.头文件

3.函数封装库


一、介绍

        利用C语言,运用链表、指针、封装函数等基本知识实现一个学生管理系统。通过在终端对学生信息进行一系列操作。

        基本思想流程图如下:

        基本参数:

二、功能

1.录入学生

        通过输入选项  0  匹配功能,进入录入学生信息的程序,将学生的信息录入到程序。 

        相关函数:

int insert_stu(Class_t *cls)

      程序运行结果:

 

2.删除学生信息

         通过输入选项  1  匹配功能,进入删除学生信息的程序,对指定学生的信息删除。

        相关函数:

int delete_stu(Class_t *cls)

       程序运行结果:

 

3.修改学生信息

        通过输入选项  2  匹配功能,进入修改学生信息的程序,对指定学生的信息进行修改。 

        相关函数:

int update_stu(Class_t *cls)

       程序运行结果:

 

4.查询学生信息

        通过输入选项  3  匹配功能,进入查询学生信息的程序,将指定学生的信息打印出来。 

        相关函数:

int select_stu(Class_t *cls)

       程序运行结果:

 

5.所有学生信息

        通过输入选项  4  匹配功能,进入遍历学生信息的程序,将所有学生的信息打印出来。 

        相关函数:

void print_all_stu(Class_t *cls)

      程序运行结果:

         已提前录入aa、bb、cc、dd、ee相关信息。

 

6.成绩排序

        通过输入选项  5  匹配功能,进入成绩排序的程序,将所有的学生按照总成绩降序排序,并打印所有学生的信息。 

        相关函数:

void sort_stu(Class_t *cls)

       程序运行结果: 

 

 7.退出程序

        通过输入选项  6  匹配功能,退出程序。 

        程序运行结果:

 

三、代码

1.主函数

#include "score.h"//学生成绩管理系统
int main(int argc, const char *argv[])
{int chose = 0;int loop = 1;// 1. 定义一个班级的的变量Class_t *cls_p =(Class_t *)malloc(sizeof(Class_t));if (cls_p == NULL){printf("malloc failed!\n");return -1;}// 初始化学生的个数, 数组的变量从第0开始的cls_p->count = -1;while (loop){printf("################################################################\n");printf("#### 0.录入  1.删除  2.修改  3.查询  4.遍历  5.排序  6.退出 ####\n");printf("################################################################\n");printf("请输入你的选择 > ");scanf("%d", &chose);while (getchar() != '\n'); // 循环吃掉所有的垃圾字符switch (chose){case INSERT:insert_stu(cls_p);break;case DELECT:delete_stu(cls_p);break;case UPDATE:update_stu(cls_p);break;case SELECT:select_stu(cls_p);break;case PRINT:print_all_stu(cls_p);break;case SORT:sort_stu(cls_p);print_all_stu(cls_p);break;case QUIT:loop = 0;printf("退出学生成绩管理系统\n");break;default:printf("输入错误,请重新输入!\n");break;}if (!loop){break;}}if (cls_p != NULL){free(cls_p);cls_p = NULL;}return 0;
}

2.头文件

#ifndef __SCORE_H__
#define __SCORE_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>// 班级学生的最大的个数
#define NUM 100// 学生成绩管理系统的功能
#define INSERT 0//插入
#define DELECT 1//删除
#define UPDATE 2//修改
#define SELECT 3//查询
#define PRINT 4//遍历
#define SORT 5//排序
#define QUIT 6//退出//声明一个学生成绩组成的结构体类型
typedef struct student_score
{int Maths;int Chinese;int English;int Total_score;
}score_t;// 声明一个学生的结构体类型
typedef struct Student /*不省略结构体名*/
{char name[20];int age;char sex;score_t score;
} Student_t;
// 声明一个班级的结构体类型
typedef struct /*省略结构体名*/
{Student_t stu_arr[NUM];int count; // 记录学生的个数
} Class_t;int insert_stu(Class_t *cls);//录入int delete_stu(Class_t *cls);//删除int update_stu(Class_t *cls);//修改int select_stu(Class_t *cls);//查询void print_all_stu(Class_t *cls);//遍历void sort_stu(Class_t *cls);//排序#endif // __SCORE_H__

3.函数封装库

#include "score.h"/*--------------------------------------------------------功能:录入一个学生参数:@ cls :插入到哪个班级返回值:0:成功-1:失败 学生满不可以插入
*/
int insert_stu(Class_t *cls)
{if (NUM == cls->count-1){printf("内存不足!插入失败!\n");return -1;}cls->count++;printf("请输入所要录入学生的相关信息\n");printf("请输入姓名:");scanf("%s",cls->stu_arr[cls->count].name);printf("请输入年龄:");scanf("%d",&cls->stu_arr[cls->count].age);printf("请输入性别:");scanf("%s",&cls->stu_arr[cls->count].sex);printf("请输入成绩->\n");printf("语文:");scanf("%d",&cls->stu_arr[cls->count].score.Chinese);printf("数学:");scanf("%d",&cls->stu_arr[cls->count].score.Maths);printf("英语:");scanf("%d",&cls->stu_arr[cls->count].score.English);cls->stu_arr[cls->count].score.Total_score = \cls->stu_arr[cls->count].score.Chinese + \cls->stu_arr[cls->count].score.English + \cls->stu_arr[cls->count].score.Maths;printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);printf("录入成功\n");return 0;
}/*---------------------------------------------------------功能:删除一个学生,按照名字删除参数:@ cls : 删除哪个班级的学生返回值:0 :成功-1 : 失败  没有学生的,查无此人
*/
int delete_stu(Class_t *cls)
{char name[20] = "";printf("请输入所要删除学生的姓名:");scanf("%s",name);int i,j = 0;for(i = 0; i <= cls->count; i++){if(!(strcmp(cls->stu_arr[i].name,name))){for(j = i; j <= cls->count; j++){cls->stu_arr[j] = cls->stu_arr[j+1];}printf("删除成功\n");cls->count--;return 0;}}printf("查无此人\n");return -1;
}/*--------------------------------------------------------功能:修改学生成绩,按照名字修改参数:@ cls : 修改哪个班级的学生返回值:0 : 成功-1 : 失败  没有学生的,查无此人
*/
int update_stu(Class_t *cls)
{char name[20] = "";int i = 0; printf("请输入需要修改成绩学生的姓名:\n");scanf("%s",name);for(i = 0; i <= cls->count; i++){if(!strcmp(cls->stu_arr[i].name,name)){printf("该学生语文成绩为:%d\n",cls->stu_arr[i].score.Chinese);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.Chinese));printf("该学生数学成绩为:%d\n",cls->stu_arr[i].score.Maths);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.Maths));printf("该学生英语成绩为:%d\n",cls->stu_arr[i].score.English);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.English));cls->stu_arr[cls->count].score.Total_score = \cls->stu_arr[cls->count].score.Chinese + \cls->stu_arr[cls->count].score.English + \cls->stu_arr[cls->count].score.Maths;printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);printf("修改成功\n");return 0;}}printf("查无此人\n");return -1;
}
/*--------------------------------------------------------功能:查询某个学生成绩,按照名字查询参数:@ cls : 查询哪个班级的学生返回值:0 : 成功-1 : 失败  没有学生的,查无此人
*/
int select_stu(Class_t *cls)
{char name[20] = "";int i = 0; printf("请输入姓名:");scanf("%s",name);for(i = 0; i <= cls->count; i++){if(!(strcmp(cls->stu_arr[i].name,name))){printf("查询成功\n");printf("该学生成绩为->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\cls->stu_arr[i].score.Chinese,\cls->stu_arr[i].score.Maths,\cls->stu_arr[i].score.English,\cls->stu_arr[i].score.Total_score);return 0;}}printf("查无此人\n");return -1;
}
/*--------------------------------------------------------功能:打印所有学生成绩信息,参数:@ cls : 打印哪个班级的学生
*/
void print_all_stu(Class_t *cls)
{int i = 0;for(i = 0 ;i <= cls->count; i++){printf("姓名:%-4s年龄:%-4d性别:%-4c成绩->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\cls->stu_arr[i].name,\cls->stu_arr[i].age,\cls->stu_arr[i].sex,\cls->stu_arr[i].score.Chinese,\cls->stu_arr[i].score.Maths,\cls->stu_arr[i].score.English,\cls->stu_arr[i].score.Total_score);}
}
/*--------------------------------------------------------功能:对所有学生按照总成绩进行排序,参数:@ cls : 排序哪个班级的学生
*/
void sort_stu(Class_t *cls)
{int i,j = 0;Student_t temp;  for(i = 0; i <= cls->count -1; i++){for(j = 0; j <= cls->count -1 -i; j++){if(cls->stu_arr[j].score.Total_score < cls->stu_arr[j+1].score.Total_score){temp = cls->stu_arr[j];cls->stu_arr[j] = cls->stu_arr[j+1];cls->stu_arr[j+1] = temp;}}}printf("排序成功\n");
}

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

相关文章

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两个文件&…

matlab inport data 作图,MATLAB使用importdata读取字符数据文件并绘图 值得收藏

本文首先使用importdata( )读取(导入)含有字符和数据的文本格式数据文件&#xff0c;然后介绍通过“.”数据名的方式读取结构数组中的数据&#xff0c;最后使用plot( )绘制折线图。 工具/材料 MATLAB struct 操作方法 01 第一&#xff0c;首先准备数据&#xff0c;下图txt数据文…

【MATLAB统计分析与应用100】案例001:matlab使用Importdata函数导入文本txt数据

配套实验数据包下载链接&#xff1a;订阅专栏后&#xff0c;从私信查收链接。 文章目录 1. 调用importdata函数读取文件中的数据2. 调用importdata函数读取文件数据&#xff0c;返回结构体变量x3. 调用importdata函数读取文件中的数据&#xff0c;用;作分隔符&#xff0c;返回字…

ImportError: No module named data

问题 明明在IDE&#xff08;如Pycharm&#xff09;中运行 check_file.py 正常。到了xshell使用python check_file.py方式运行时&#xff0c;就报ImportError: No module named data。 # check_file.py from data import scannet_util产生这个问题的原因是python的搜索路径导致…

MATLAB数据导入(importdata函数)

编写程序时&#xff0c;有时需要从外部读入数据&#xff0c;这里介绍用importdata函数把数据导入MATLAB的方法。 1.加载和显示图像文件 在MATLAB中建立一个脚本文件&#xff0c;内容如下&#xff1a; filename ming.png; A importdata(filename); image(A);运行该文件&…

Matlab学习笔记(7)——importdata和load函数

importdata和load函数 引言importdata函数 Demo1Demo2Demo3Demo4Demo5Demo6 load函数 Demo importdata和load函数 引言 在使用matlab将数据导入到工作空间的时候,经常会使用到两个函数&#xff0c;一个是importdata函数&#xff0c;另一个是load函数&#xff0c;它们的使用…