目录

一、介绍

二、功能

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");
}

C语言编程学生成绩管理系统相关推荐

  1. c语言学生管理系统write to a text file,语言编程学生成绩管理系统.doc

    语言编程学生成绩管理系统 c语言编程-学生成绩管理系统 #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ ...

  2. c语言程序学生成绩系统论文,c语言程序设计-学生成绩管理系统论文.doc

    c语言程序设计-学生成绩管理系统论文 C语言程序设计课程设计报告 - PAGE 11 - 中南民族大学工商学院 电子信息与计算机技术系 项目名称: 学生成绩管理系统 学生姓名: 学 号: 班 级: 指 ...

  3. 用c语言实现成绩统计的设计,c语言实现学生成绩管理系统.doc

    c语言实现学生成绩管理系统.doc 学号102128121武汉理工大学华夏学院课程设计报告书课程名称:数据结构题目:用C语言实现成绩统计程序的设计系名:信息工程系专业班级:软件工程1121姓名:指导教 ...

  4. c语言编写简单的成绩管理系统,用c语言编写学生成绩管理系统

    <用c语言编写学生成绩管理系统>由会员分享,可在线阅读,更多相关<用c语言编写学生成绩管理系统(9页珍藏版)>请在人人文库网上搜索. 1.include#include#inc ...

  5. C语言实现学生成绩管理系统(原码)

    C语言实现学生成绩管理系统(单链表实现)很详细容易理解 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl ...

  6. 影碟管理系统c语言小学期,大连东软小学期C语言项目学生成绩管理系统代码.docx...

    大连东软小学期C语言项目学生成绩管理系统代码 /*链表版学生成绩管理系统的main函数与链表构建模块的代码*/#include #include #include struct STUDENT{ ch ...

  7. C语言编写学生成绩管理系统

    文章链接:https://codemouse.online/archives/2020-06-04-16-07-48 需求 用C语言编写学生成绩管理系统,要求该系统可 对学生操作:添加和删除操作. 可 ...

  8. c语言成绩管理系统总结分析报告,c语言下学生成绩管理系统程序设计报告

    <c语言下学生成绩管理系统程序设计报告>由会员分享,可在线阅读,更多相关<c语言下学生成绩管理系统程序设计报告(17页珍藏版)>请在人人文库网上搜索. 1.信息技术学院本科课程 ...

  9. 成绩处理工具C语言论文,学生成绩管理系统C语言程序论文

    C语言,大型工作语言,大型工作1项目目录1.目标...........22.主题描述和要求........23.报告内容...........3 3.1需求寻求和分析概要设计........3 3.2 ...

最新文章

  1. 压测场景下的 TIME_WAIT 处理
  2. 防火墙(16)——SNAT和DNAT,DNAT实践
  3. 【HDOJ1043】八数码的八境界
  4. Linux运维系统工程师系列---13
  5. phpstudy(自己电脑主机做服务器,手机网站界面打不开)
  6. 真格量化——菜粕策略
  7. java手动分页工具类
  8. 1小时搞懂设计模式之代理模式(静态代理)
  9. JDK 和 tomcat 安装 配置
  10. Node.js HTTP
  11. java8 jstack_java自带命令行工具(jcmd,jstack)
  12. app小窗口悬浮工具_悬浮窗口大师
  13. ubuntu安装uTorrent种子下载器
  14. LTE中资源数量映射用到的PRB数量(TB,CQI,MCS,PRB)
  15. uart协议测试软件,Uart2any(windows串口调试工具)
  16. MobPush for Flutter
  17. 计算机科学中atm是什么,计算机专业知识:ATM网络基本原理
  18. Valens HDBaseT VCN2K HDMI 1.4接收/发送
  19. python编写随机获取ip免费调用有道翻译
  20. webstorm 2018 激活破解方法大全 亲测第三个有用

热门文章

  1. 搭建SpringBoot脚手架工程系列(3): 一键启动服务
  2. 厉害了!合肥市4号5号线地铁都有了、工程被中铁、中建包揽了
  3. 常见的ES6转码(编译)工具——Babel转码器、Traceur转码器
  4. linux 服务器 日常命令 日常需求
  5. 厦门建设智慧城市 200多项惠民服务“一网打尽”
  6. 写技术文章必备的几个小工具
  7. 李群、李代数等机器人学数学概念
  8. db migrate mysql_DB Migrate那点事
  9. 初学Java的第一天
  10. 技术员系统(x86/x64)装机版/纯净版 2017.06